about summary refs log tree commit homepage
path: root/test
diff options
context:
space:
mode:
authorzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-08-03 20:49:11 +0000
committerzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-08-03 20:49:11 +0000
commitf6b9b509b26f00ff12f59ef8d186e14e2947abd3 (patch)
tree2df631b0e50fb8cd90d5cd4fc3c4f16d3d5b7f5a /test
parent975a7aae803f4abf6fc1819b734bd504ca885255 (diff)
downloadunicorn-f6b9b509b26f00ff12f59ef8d186e14e2947abd3.tar.gz
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@299 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'test')
-rw-r--r--test/test_conditional.rb65
1 files changed, 36 insertions, 29 deletions
diff --git a/test/test_conditional.rb b/test/test_conditional.rb
index 511570e..3b71ac9 100644
--- a/test/test_conditional.rb
+++ b/test/test_conditional.rb
@@ -23,6 +23,7 @@ class HttpParserTest < Test::Unit::TestCase
     res = @http.start { |http| http.get(@path) }
     assert_not_nil @etag = res['ETag']
     assert_not_nil @last_modified = res['Last-Modified']
+    assert_not_nil @content_length = res['Content-Length']
   end
 
   def teardown
@@ -44,68 +45,74 @@ class HttpParserTest < Test::Unit::TestCase
     assert_status_for_get_and_head Net::HTTPNotModified, 'If-None-Match' => @etag
   end
 
-  # status should be 304 Not Modified when If-Unmodified-Since is the matching Last-Modified date
-  def test_not_modified_via_if_unmodified_since
-    assert_status_for_get_and_head Net::HTTPNotModified, 'If-Unmodified-Since' => @last_modified
+  # status should be 304 Not Modified when If-Modified-Since is the matching Last-Modified date
+  def test_not_modified_via_if_modified_since
+    assert_status_for_get_and_head Net::HTTPNotModified, 'If-Modified-Since' => @last_modified
   end
 
   # status should be 304 Not Modified when If-None-Match is the matching ETag
-  # and If-Unmodified-Since is the matching Last-Modified date
-  def test_not_modified_via_if_none_match_and_if_unmodified_since
-    assert_status_for_get_and_head Net::HTTPNotModified, 'If-None-Match' => @etag, 'If-Unmodified-Since' => @last_modified
+  # and If-Modified-Since is the matching Last-Modified date
+  def test_not_modified_via_if_none_match_and_if_modified_since
+    assert_status_for_get_and_head Net::HTTPNotModified, 'If-None-Match' => @etag, 'If-Modified-Since' => @last_modified
   end
 
   # status should be 200 OK when If-None-Match is invalid
   def test_invalid_if_none_match
     assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => 'invalid'
-    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => 'invalid', 'If-Unmodified-Since' => @last_modified
+    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => 'invalid', 'If-Modified-Since' => @last_modified
   end
 
-  # status should be 200 OK when If-Unmodified-Since is invalid
-  def test_invalid_if_unmodified_since
-    assert_status_for_get_and_head Net::HTTPOK,                           'If-Unmodified-Since' => 'invalid'
-    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => @etag, 'If-Unmodified-Since' => 'invalid'
+  # status should be 200 OK when If-Modified-Since is invalid
+  def test_invalid_if_modified_since
+    assert_status_for_get_and_head Net::HTTPOK,                           'If-Modified-Since' => 'invalid'
+    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => @etag, 'If-Modified-Since' => 'invalid'
   end
 
-  # status should be 304 Not Modified when If-Unmodified-Since is greater than the Last-Modified header, but less than the system time
-  def test_if_unmodified_since_greater_than_last_modified
+  # status should be 304 Not Modified when If-Modified-Since is greater than the Last-Modified header, but less than the system time
+  def test_if_modified_since_greater_than_last_modified
     sleep 2
     last_modified_plus_1 = (Time.httpdate(@last_modified) + 1).httpdate
-    assert_status_for_get_and_head Net::HTTPNotModified,                           'If-Unmodified-Since' => last_modified_plus_1
-    assert_status_for_get_and_head Net::HTTPNotModified, 'If-None-Match' => @etag, 'If-Unmodified-Since' => last_modified_plus_1
+    assert_status_for_get_and_head Net::HTTPNotModified,                           'If-Modified-Since' => last_modified_plus_1
+    assert_status_for_get_and_head Net::HTTPNotModified, 'If-None-Match' => @etag, 'If-Modified-Since' => last_modified_plus_1
   end
 
-  # status should be 200 OK when If-Unmodified-Since is less than the Last-Modified header
-  def test_if_unmodified_since_less_than_last_modified
+  # status should be 200 OK when If-Modified-Since is less than the Last-Modified header
+  def test_if_modified_since_less_than_last_modified
     last_modified_minus_1 = (Time.httpdate(@last_modified) - 1).httpdate
-    assert_status_for_get_and_head Net::HTTPOK,                           'If-Unmodified-Since' => last_modified_minus_1
-    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => @etag, 'If-Unmodified-Since' => last_modified_minus_1
+    assert_status_for_get_and_head Net::HTTPOK,                           'If-Modified-Since' => last_modified_minus_1
+    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => @etag, 'If-Modified-Since' => last_modified_minus_1
   end
 
-  # status should be 200 OK when If-Unmodified-Since is a date in the future
-  def test_future_if_unmodified_since
+  # status should be 200 OK when If-Modified-Since is a date in the future
+  def test_future_if_modified_since
     the_future = Time.at(2**31-1).httpdate
-    assert_status_for_get_and_head Net::HTTPOK,                           'If-Unmodified-Since' => the_future
-    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => @etag, 'If-Unmodified-Since' => the_future
+    assert_status_for_get_and_head Net::HTTPOK,                           'If-Modified-Since' => the_future
+    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => @etag, 'If-Modified-Since' => the_future
   end
 
   # status should be 200 OK when If-None-Match is a wildcard
   def test_wildcard_match
     assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => '*'
-    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => '*', 'If-Unmodified-Since' => @last_modified
+    assert_status_for_get_and_head Net::HTTPOK, 'If-None-Match' => '*', 'If-Modified-Since' => @last_modified
   end
 
   private
 
     # assert the response status is correct for GET and HEAD
-    def assert_status_for_get_and_head(status_class, headers = {})
+    def assert_status_for_get_and_head(response_class, headers = {})
       %w{ get head }.each do |method|
         res = @http.send(method, @path, headers)
-        assert_kind_of status_class, res
+        assert_kind_of response_class, res
         assert_equal @etag, res['ETag']
-        case status_class
-          when Net::HTTPNotModified : assert_nil res['Last-Modified']
-          when Net::HTTPOK          : assert_equal @last_modified, res['Last-Modified']
+        case response_class.to_s
+          when 'Net::HTTPNotModified' then
+            assert_nil res['Last-Modified']
+            assert_nil res['Content-Length']
+          when 'Net::HTTPOK' then
+            assert_equal @last_modified, res['Last-Modified']
+            assert_equal @content_length, res['Content-Length']
+          else
+            fail "Incorrect response class: #{response_class}"
         end
       end
     end