diff options
author | Ryan Tomayko <rtomayko@gmail.com> | 2008-12-18 19:25:24 -0800 |
---|---|---|
committer | Ryan Tomayko <rtomayko@gmail.com> | 2008-12-18 19:25:24 -0800 |
commit | a697597aeb1a0e1590dc1ff7505c82d458ef5148 (patch) | |
tree | 360c1917c688d41d7504da46ffb15b5fb906ba58 | |
parent | 5b60d28e922a662c9c5f30caed38e1a7d285e455 (diff) | |
download | rack-a697597aeb1a0e1590dc1ff7505c82d458ef5148.tar.gz |
Fix MethodOverride error when POST has no _method param
-rw-r--r-- | lib/rack/methodoverride.rb | 2 | ||||
-rw-r--r-- | test/spec_rack_methodoverride.rb | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/rack/methodoverride.rb b/lib/rack/methodoverride.rb index f17aa474..eb2f0a53 100644 --- a/lib/rack/methodoverride.rb +++ b/lib/rack/methodoverride.rb @@ -9,7 +9,7 @@ module Rack def call(env) if env["REQUEST_METHOD"] == "POST" req = Request.new(env) - method = req.POST["_method"].upcase + method = req.POST["_method"].to_s.upcase if HTTP_METHODS.include?(method) env["REQUEST_METHOD"] = method end diff --git a/test/spec_rack_methodoverride.rb b/test/spec_rack_methodoverride.rb index 3c5e99cf..ac0633e2 100644 --- a/test/spec_rack_methodoverride.rb +++ b/test/spec_rack_methodoverride.rb @@ -28,4 +28,12 @@ context "Rack::MethodOverride" do req.env["REQUEST_METHOD"].should.equal "POST" end + + specify "should not modify REQUEST_METHOD when _method is nil" do + env = Rack::MockRequest.env_for("/", :method => "POST", :input => "foo=bar") + app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) + req = app.call(env) + + req.env["REQUEST_METHOD"].should.equal "POST" + end end |