changeset 1635:7b80c8e0479a default tip

Tests: absolute URI parsing tests.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 10 Dec 2020 23:54:32 +0300
parents 12f32d82936d
children
files http_uri.t
diffstat 1 files changed, 32 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/http_uri.t	Tue Dec 08 17:00:18 2020 +0300
+++ b/http_uri.t	Thu Dec 10 23:54:32 2020 +0300
@@ -22,7 +22,7 @@
 select STDERR; $| = 1;
 select STDOUT; $| = 1;
 
-my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(8)
+my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(17)
 	->write_file_expand('nginx.conf', <<'EOF')->run();
 
 %%TEST_GLOBALS%%
@@ -40,7 +40,9 @@
         server_name  localhost;
 
         location / {
-            add_header  X-URI  "x $uri x";
+            add_header  X-URI          "x $uri x";
+            add_header  X-Args         "y $args y";
+            add_header  X-Request-URI  "z $request_uri z";
             return      204;
         }
     }
@@ -50,8 +52,6 @@
 
 ###############################################################################
 
-local $TODO = 'not yet' unless $t->has_version('1.17.5');
-
 like(http_get('/foo/bar%'), qr/400 Bad/, 'percent');
 like(http_get('/foo/bar%1'), qr/400 Bad/, 'percent digit');
 
@@ -62,4 +62,32 @@
 like(http_get('/foo/bar/.'), qr!x /foo/bar/ x!, 'trailing dot');
 like(http_get('/foo/bar/..'), qr!x /foo/ x!, 'trailing dot dot');
 
+like(http_get('http://localhost'), qr!x / x!, 'absolute');
+like(http_get('http://localhost/'), qr!x / x!, 'absolute slash');
+
+TODO: {
+local $TODO = 'not yet' unless $t->has_version('1.19.6');
+
+like(http_get('http://localhost?args'), qr!x / x.*y args y!ms,
+	'absolute args');
+like(http_get('http://localhost?args#frag'), qr!x / x.*y args y!ms,
+	'absolute args and frag');
+
+}
+
+like(http_get('http://localhost:8080'), qr!x / x!, 'port');
+like(http_get('http://localhost:8080/'), qr!x / x!, 'port slash');
+
+TODO: {
+local $TODO = 'not yet' unless $t->has_version('1.19.6');
+
+like(http_get('http://localhost:8080?args'), qr!x / x.*y args y!ms,
+	'port args');
+like(http_get('http://localhost:8080?args#frag'), qr!x / x.*y args y!ms,
+	'port args and frag');
+
+}
+
+like(http_get('/ /'), qr!x / / x!, 'space');
+
 ###############################################################################