diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/spec_request.rb | 12 | ||||
-rw-r--r-- | test/spec_utils.rb | 6 |
2 files changed, 18 insertions, 0 deletions
diff --git a/test/spec_request.rb b/test/spec_request.rb index e5ec254e..2b4b3c0b 100644 --- a/test/spec_request.rb +++ b/test/spec_request.rb @@ -177,6 +177,18 @@ describe Rack::Request do req.params.should.equal req.GET.merge(req.POST) end + should "raise if input params has invalid %-encoding" do + mr = Rack::MockRequest.env_for("/?foo=quux", + "REQUEST_METHOD" => 'POST', + :input => "a%=1" + ) + req = Rack::Request.new mr + + lambda { req.POST }. + should.raise(Rack::Utils::InvalidParameterError). + message.should.equal "invalid %-encoding (a%)" + end + should "raise if rack.input is missing" do req = Rack::Request.new({}) lambda { req.POST }.should.raise(RuntimeError) diff --git a/test/spec_utils.rb b/test/spec_utils.rb index 6391f951..4b989db7 100644 --- a/test/spec_utils.rb +++ b/test/spec_utils.rb @@ -223,6 +223,12 @@ describe Rack::Utils do lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y][][w]=2") }. should.raise(Rack::Utils::ParameterTypeError). message.should.equal "expected Array (got String) for param `y'" + + if RUBY_VERSION.to_f > 1.9 + lambda { Rack::Utils.parse_nested_query("foo%81E=1") }. + should.raise(Rack::Utils::InvalidParameterError). + message.should.equal "invalid byte sequence in UTF-8" + end end should "build query strings correctly" do |