test/spec_request.rb in rack-1.4.5 vs test/spec_request.rb in rack-1.4.6
- 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/"))
@@ -609,9 +610,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 "MultipartLimitError 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::MultipartLimitError)
+ end
end
should "parse big multipart form data" do
input = <<EOF
--AaB03x\r