about summary refs log tree commit homepage
path: root/test/test_mogstored_rack.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_mogstored_rack.rb')
-rw-r--r--test/test_mogstored_rack.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/test_mogstored_rack.rb b/test/test_mogstored_rack.rb
index 766192f..f44e70a 100644
--- a/test/test_mogstored_rack.rb
+++ b/test/test_mogstored_rack.rb
@@ -87,6 +87,33 @@ class TestMogstoredRack < Test::Unit::TestCase
     assert_equal ">>", client.get_file_data("<<")
   end
 
+  def test_stream_new_file_with_content_length
+    add_host_device_domain
+    client = MogileFS::MogileFS.new :hosts => @hosts, :domain => @domain
+    io = client.new_file("clen", :largefile=>:stream,:content_length=>6)
+    io << "HIHIHI"
+    assert_nil io.close
+    assert_equal "HIHIHI", client.get_file_data("clen")
+
+    io = client.new_file("clen", :largefile=>:stream,:content_length=>1)
+    io << "FAIL"
+    assert_raises(MogileFS::SizeMismatchError) { io.close }
+    assert_equal "HIHIHI", client.get_file_data("clen")
+
+    io = client.new_file("md5", :largefile=>:stream,
+                                :content_length=>6, :content_md5=>:trailer)
+    assert_equal(io, io << "MD5MD5")
+    assert_nil io.close
+    assert_equal "MD5MD5", client.get_file_data("md5")
+    assert_equal Digest::MD5.hexdigest("MD5MD5"), io.md5.hexdigest
+
+    io = client.new_file("md5", :largefile=>:stream,
+                                :content_length=>6, :content_md5=>:trailer)
+    assert_equal(io, io << "MD5MD")
+    assert_raises(MogileFS::SizeMismatchError) { io.close }
+    assert_equal Digest::MD5.hexdigest("MD5MD"), io.md5.hexdigest
+  end
+
   def test_md5_check
     add_host_device_domain
     client = MogileFS::MogileFS.new :hosts => @hosts, :domain => @domain