From 7ae1c734e9e88ef0d6dd8480215dbea8af6ddbf4 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Tue, 13 Jan 2009 20:57:17 -0600 Subject: [PATCH] Add multipart test for mixed file uploads --- test/multipart/mixed | Bin 0 -> 4984 bytes test/spec_rack_utils.rb | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) create mode 100644 test/multipart/mixed diff --git a/test/multipart/mixed b/test/multipart/mixed new file mode 100644 index 0000000000000000000000000000000000000000..4023c6efa06bbaa657c32544f53cda496e9534e0 GIT binary patch literal 4984 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 literal 0 HcmV?d00001 diff --git a/test/spec_rack_utils.rb b/test/spec_rack_utils.rb index 8bbd9fe..8858e12 100644 --- a/test/spec_rack_utils.rb +++ b/test/spec_rack_utils.rb @@ -169,6 +169,25 @@ context "Rack::Utils::Multipart" do params["files"][:tempfile].read.should.equal "contents" end + specify "should parse multipart upload with mixed file" do + env = Rack::MockRequest.env_for("/", multipart_fixture(:mixed)) + params = Rack::Utils::Multipart.parse_multipart(env) + params["submit-name"].should.equal "Larry" + params["files"].size.should.equal 2 + + file1 = params["files"][0] + file1[:type].should.equal "text/plain" + file1[:filename].should.equal "file1.txt" + file1[:head].should.equal "Content-Disposition: form-data; filename=\"file1.txt\"\r\nContent-Type: text/plain\r\n" + file1[:tempfile].read.should.equal "contents" + + file2 = params["files"][1] + file2[:type].should.equal "image/gif" + file2[:filename].should.equal "file2.gif" + file2[:head].should.equal "Content-Disposition: form-data; filename=\"file2.gif\"\r\nContent-Type: image/gif\r\n" + # file2[:tempfile].read.length.should.equal 1234 + end + specify "rewinds input after parsing upload" do options = multipart_fixture(:text_file) input = options[:input] -- 1.6.0.4