diff options
author | Lenny Marks <lenny@aps.org> | 2014-03-27 16:44:30 -0400 |
---|---|---|
committer | James Tucker <jftucker@gmail.com> | 2014-07-14 21:20:18 -0700 |
commit | ee0e35d7d47412ac71d92222bf8cf0777910057c (patch) | |
tree | 5cf8236279995b6164f9dfdc46ce562865764868 /test/spec_tempfile_reaper.rb | |
parent | 2f3d6655218c967cf1b20600f701349bdb418bfc (diff) | |
download | rack-ee0e35d7d47412ac71d92222bf8cf0777910057c.tar.gz |
Rack::TempfileReaper
- should do nothing (i.e. not bomb out) without env[rack.tempfiles] - should close env[rack.tempfiles] when body is closed - should initialize env[rack.tempfiles] when not already present - should append env[rack.tempfiles] when already present
Diffstat (limited to 'test/spec_tempfile_reaper.rb')
-rw-r--r-- | test/spec_tempfile_reaper.rb | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/spec_tempfile_reaper.rb b/test/spec_tempfile_reaper.rb new file mode 100644 index 00000000..ac39d878 --- /dev/null +++ b/test/spec_tempfile_reaper.rb @@ -0,0 +1,63 @@ +require 'rack/tempfile_reaper' +require 'rack/lint' +require 'rack/mock' + +describe Rack::TempfileReaper do + class MockTempfile + attr_reader :closed + + def initialize + @closed = false + end + + def close! + @closed = true + end + end + + before do + @env = Rack::MockRequest.env_for + end + + def call(app) + Rack::Lint.new(Rack::TempfileReaper.new(app)).call(@env) + end + + should 'do nothing (i.e. not bomb out) without env[rack.tempfiles]' do + app = lambda { |_| [200, {}, ['Hello, World!']] } + response = call(app) + response[2].close + response[0].should.equal(200) + end + + should 'close env[rack.tempfiles] when body is closed' do + tempfile1, tempfile2 = MockTempfile.new, MockTempfile.new + @env['rack.tempfiles'] = [ tempfile1, tempfile2 ] + app = lambda { |_| [200, {}, ['Hello, World!']] } + call(app)[2].close + tempfile1.closed.should.equal true + tempfile2.closed.should.equal true + end + + should 'initialize env[rack.tempfiles] when not already present' do + tempfile = MockTempfile.new + app = lambda do |env| + env['rack.tempfiles'] << tempfile + [200, {}, ['Hello, World!']] + end + call(app)[2].close + tempfile.closed.should.equal true + end + + should 'append env[rack.tempfiles] when already present' do + tempfile1, tempfile2 = MockTempfile.new, MockTempfile.new + @env['rack.tempfiles'] = [ tempfile1 ] + app = lambda do |env| + env['rack.tempfiles'] << tempfile2 + [200, {}, ['Hello, World!']] + end + call(app)[2].close + tempfile1.closed.should.equal true + tempfile2.closed.should.equal true + end +end |