about summary refs log tree commit homepage
path: root/test
diff options
context:
space:
mode:
authorzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-12-15 09:02:34 +0000
committerzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-12-15 09:02:34 +0000
commit1d211fb406d58d12b9cdaad7134dd8c3dd6a7f2b (patch)
tree2778477d31d5ad1d113cc4b1d043b4f143947785 /test
parenta60058fc46939ecef158dffe04f52260288f7635 (diff)
downloadunicorn-1d211fb406d58d12b9cdaad7134dd8c3dd6a7f2b.tar.gz
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@466 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'test')
-rw-r--r--test/test_request_progress.rb47
1 files changed, 45 insertions, 2 deletions
diff --git a/test/test_request_progress.rb b/test/test_request_progress.rb
index 5e45cea..dc87579 100644
--- a/test/test_request_progress.rb
+++ b/test/test_request_progress.rb
@@ -17,6 +17,12 @@ class UploadBeginHandler < Mongrel::HttpHandler
     @request_notify = true
   end
 
+  def reset
+    @request_began =
+      @request_progressed =
+        @request_processed = false
+  end
+
   def request_begins(params)
     @request_began = true
   end
@@ -34,9 +40,7 @@ class UploadBeginHandler < Mongrel::HttpHandler
 
 end
 
-
 class RequestProgressTest < Test::Unit::TestCase
-
   def setup
     @server = Mongrel::HttpServer.new("127.0.0.1", 9998)
     @handler = UploadBeginHandler.new
@@ -55,4 +59,43 @@ class RequestProgressTest < Test::Unit::TestCase
     assert @handler.request_processed
   end
 
+  def call_and_assert_handlers_in_turn(handlers)
+    # reset all handlers
+    handlers.each { |h| h.reset }
+
+    # make the call
+    Net::HTTP.get("localhost", "/upload", 9998)
+
+    # assert that each one was fired
+    handlers.each { |h|
+      assert h.request_began && h.request_progressed && h.request_processed,
+        "Callbacks NOT fired for #{h}"
+    }
+  end
+
+  def test_more_than_one_begin_end_progress
+    handlers = [@handler]
+
+    second = UploadBeginHandler.new
+    @server.register("/upload", second)
+    handlers << second
+    call_and_assert_handlers_in_turn(handlers)
+
+    # check three handlers
+    third = UploadBeginHandler.new
+    @server.register("/upload", third)
+    handlers << third
+    call_and_assert_handlers_in_turn(handlers)
+
+    # remove handlers to make sure they've all gone away
+    @server.unregister("/upload")
+    handlers.each { |h| h.reset }
+    Net::HTTP.get("localhost", "/upload", 9998)
+    handlers.each { |h|
+      assert !h.request_began && !h.request_progressed && !h.request_processed
+    }
+
+    # re-register upload to the state before this test
+    @server.register("/upload", @handler)
+  end
 end