# HG changeset patch # User Maxim Dounin # Date 1607633672 -10800 # Node ID 7b80c8e0479a498a86c76b7be80a835522696b6d # Parent 12f32d82936d81437a68ff91073d1b01a561218c Tests: absolute URI parsing tests. diff --git a/http_uri.t b/http_uri.t --- a/http_uri.t +++ b/http_uri.t @@ -22,7 +22,7 @@ use Test::Nginx; 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 @@ http { 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 @@ EOF ############################################################################### -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/..#frag'), qr!x 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'); + ###############################################################################