test/spec_request.rb in rack-1.6.0.beta vs test/spec_request.rb in rack-1.6.0.beta2

- old
+ new

@@ -1,9 +1,10 @@ require 'stringio' require 'cgi' require 'rack/request' require 'rack/mock' +require 'securerandom' describe Rack::Request do should "wrap the rack variables" do req = Rack::Request.new(Rack::MockRequest.env_for("http://example.com:8080/")) @@ -740,9 +741,25 @@ f.should.be.kind_of Hash f[:type].should.equal "image/jpeg" f[:filename].should.equal "dj.jpg" f.should.include :tempfile f[:tempfile].size.should.equal 76 + end + + should "MultipartPartLimitError when request has too many multipart parts if limit set" do + begin + data = 10000.times.map { "--AaB03x\r\nContent-Type: text/plain\r\nContent-Disposition: attachment; name=#{SecureRandom.hex(10)}; filename=#{SecureRandom.hex(10)}\r\n\r\ncontents\r\n" }.join("\r\n") + data += "--AaB03x--\r" + + options = { + "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x", + "CONTENT_LENGTH" => data.length.to_s, + :input => StringIO.new(data) + } + + request = Rack::Request.new Rack::MockRequest.env_for("/", options) + lambda { request.POST }.should.raise(Rack::Multipart::MultipartPartLimitError) + end end should "parse big multipart form data" do input = <<EOF --AaB03x\r