summary refs log tree commit
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2013-08-22 12:12:41 -0700
committerSantiago Pastorino <santiago@wyeworks.com>2013-08-22 12:12:41 -0700
commitbbae0ce30ddeb9f8a2a208d08e479ee5a85a1a02 (patch)
tree02d273048fb3b3d8ea83cb04528d30388467c50b
parent53e927c824af234415c632aa19d38ffac9262017 (diff)
parentb0593078ce792a380779528a6a135c066aa03515 (diff)
downloadrack-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.rb2
-rw-r--r--test/spec_request.rb15
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