diff options
author | Jon Crosby <jon@joncrosby.me> | 2009-01-05 17:44:36 -0800 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2009-01-06 12:35:41 +0100 |
commit | e908d263a6df76ddca237567c59e7a25e7ab6960 (patch) | |
tree | e0a8c662752a43535ca47229c29e6f3342f4b2f1 | |
parent | f981f3b2dba2b7a93cfb62f835b2fb89c252e7d3 (diff) | |
download | rack-e908d263a6df76ddca237567c59e7a25e7ab6960.tar.gz |
Store original HTTP method in MethodOverride middleware
-rw-r--r-- | lib/rack/methodoverride.rb | 1 | ||||
-rw-r--r-- | test/spec_rack_methodoverride.rb | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/rack/methodoverride.rb b/lib/rack/methodoverride.rb index 36a1d57f..0eed29f4 100644 --- a/lib/rack/methodoverride.rb +++ b/lib/rack/methodoverride.rb @@ -16,6 +16,7 @@ module Rack env[HTTP_METHOD_OVERRIDE_HEADER] method = method.to_s.upcase if HTTP_METHODS.include?(method) + env["rack.methodoverride.original_method"] = env["REQUEST_METHOD"] env["REQUEST_METHOD"] = method end end diff --git a/test/spec_rack_methodoverride.rb b/test/spec_rack_methodoverride.rb index ad7ab4e0..57452394 100644 --- a/test/spec_rack_methodoverride.rb +++ b/test/spec_rack_methodoverride.rb @@ -47,4 +47,14 @@ context "Rack::MethodOverride" do req.env["REQUEST_METHOD"].should.equal "POST" end + + specify "should store the original REQUEST_METHOD prior to overriding" do + env = Rack::MockRequest.env_for("/", + :method => "POST", + :input => "_method=options") + app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) + req = app.call(env) + + req.env["rack.methodoverride.original_method"].should.equal "POST" + end end |