diff options
author | Santiago Pastorino <santiago@wyeworks.com> | 2013-08-22 12:12:41 -0700 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2013-08-22 12:12:41 -0700 |
commit | bbae0ce30ddeb9f8a2a208d08e479ee5a85a1a02 (patch) | |
tree | 02d273048fb3b3d8ea83cb04528d30388467c50b | |
parent | 53e927c824af234415c632aa19d38ffac9262017 (diff) | |
parent | b0593078ce792a380779528a6a135c066aa03515 (diff) | |
download | rack-bbae0ce30ddeb9f8a2a208d08e479ee5a85a1a02.tar.gz |
Merge pull request #588 from statianzo/tempfile-form-input
Use equal? to compare form_input to rack.input
-rw-r--r-- | lib/rack/request.rb | 2 | ||||
-rw-r--r-- | test/spec_request.rb | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb index 605f8f4d..80d5e0db 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -204,7 +204,7 @@ module Rack def POST if @env["rack.input"].nil? raise "Missing rack.input" - elsif @env["rack.request.form_input"].eql? @env["rack.input"] + elsif @env["rack.request.form_input"].equal? @env["rack.input"] @env["rack.request.form_hash"] elsif form_data? || parseable_data? unless @env["rack.request.form_hash"] = parse_multipart(env) diff --git a/test/spec_request.rb b/test/spec_request.rb index 039aae6b..a3f42379 100644 --- a/test/spec_request.rb +++ b/test/spec_request.rb @@ -878,6 +878,21 @@ EOF lambda{ req.POST }.should.not.raise("input re-processed!") end + should "use form_hash when form_input is a Tempfile" do + input = "{foo: 'bar'}" + + rack_input = Tempfile.new("rackspec") + rack_input.write(input) + rack_input.rewind + + req = Rack::Request.new Rack::MockRequest.env_for("/", + "rack.request.form_hash" => {'foo' => 'bar'}, + "rack.request.form_input" => rack_input, + :input => rack_input) + + req.POST.should.equal(req.env['rack.request.form_hash']) + end + should "conform to the Rack spec" do app = lambda { |env| content = Rack::Request.new(env).POST["file"].inspect |