changeset 226:e7a01be387ad

Tests: added some etag tests.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 27 Jun 2012 22:35:11 +0400
parents d9c5b8b9d48e
children 16371849bd07
files not_modified.t
diffstat 1 files changed, 46 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/not_modified.t
+++ b/not_modified.t
@@ -21,7 +21,7 @@ use Test::Nginx;
 select STDERR; $| = 1;
 select STDOUT; $| = 1;
 
-my $t = Test::Nginx->new()->has('http')->plan(4)
+my $t = Test::Nginx->new()->has('http')->plan(12)
 	->write_file_expand('nginx.conf', <<'EOF');
 
 %%TEST_GLOBALS%%
@@ -66,11 +66,34 @@ SKIP: {
 		'0x17FFFFFFF');
 }
 
+# If-Match, If-None-Match tests
+
+my ($t1, $etag);
+
+$t1 = http_get('/t');
+
+SKIP: {
+    skip "no etag support", 8 if $t1 !~ /ETag: (".*")/;
+    $etag = $1;
+
+    like(http_get_inm('/t', $etag), qr/304/, 'if-none-match');
+    like(http_get_inm('/t', '"foo"'), qr/200/, 'if-none-match fail');
+    like(http_get_inm('/t', '"foo", "bar", ' . $etag . ' , "baz"'), qr/304/,
+	'if-none-match with complex list');
+    like(http_get_inm('/t', '*'), qr/304/, 'if-none-match all');
+
+    like(http_get_im('/t', $etag), qr/200/, 'if-match');
+    like(http_get_im('/t', '"foo"'), qr/412/, 'if-match fail');
+    like(http_get_im('/t', '"foo", "bar", ' . "\t" . $etag . ' , "baz"'),
+	qr/200/, 'if-match with complex list');
+    like(http_get_im('/t', '*'), qr/200/, 'if-match all');
+}
+
 ###############################################################################
 
 sub http_get_ims {
-        my ($url, $ims) = @_;
-        return http(<<EOF);
+	my ($url, $ims) = @_;
+	return http(<<EOF);
 GET $url HTTP/1.0
 Host: localhost
 If-Modified-Since: $ims
@@ -78,4 +101,24 @@ If-Modified-Since: $ims
 EOF
 }
 
+sub http_get_inm {
+	my ($url, $inm) = @_;
+	return http(<<EOF);
+GET $url HTTP/1.0
+Host: localhost
+If-None-Match: $inm
+
+EOF
+}
+
+sub http_get_im {
+	my ($url, $inm) = @_;
+	return http(<<EOF);
+GET $url HTTP/1.0
+Host: localhost
+If-Match: $inm
+
+EOF
+}
+
 ###############################################################################