Mercurial > hg > nginx-tests
view js.t @ 736:dcbe4c3d6871
Tests: added HTTP/2 tests for HPACK table boundary.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 19 Oct 2015 17:00:24 +0300 |
parents | ad8134cd6f45 |
children | 460a9cadbd2f |
line wrap: on
line source
#!/usr/bin/perl # (C) Roman Arutyunyan # Tests for http JavaScript module. ############################################################################### use warnings; use strict; use Test::More; BEGIN { use FindBin; chdir($FindBin::Bin); } use lib 'lib'; use Test::Nginx; ############################################################################### select STDERR; $| = 1; select STDOUT; $| = 1; my $t = Test::Nginx->new()->has(qw/http rewrite njs/)->plan(13) ->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% daemon off; events { } http { %%TEST_GLOBALS_HTTP%% js_set $test_method "'method=' + $r.method"; js_set $test_version "'version=' + $r.httpVersion"; js_set $test_addr "'addr=' + $r.remoteAddress"; js_set $test_uri "'uri=' + $r.uri"; js_set $test_hdr "'hdr=' + $r.headers.foo"; js_set $test_ihdr "var s; s = ''; for (h in $r.headers) { if (h.substr(0, 3) == 'foo') { s += $r.headers[h]; } } s;"; js_set $test_arg "'arg=' + $r.args.foo"; js_set $test_iarg "var s; s = ''; for (a in $r.args) { if (a.substr(0, 3) == 'foo') { s += $r.args[a]; } } s;"; server { listen 127.0.0.1:8080; server_name localhost; location /req_method { return 200 $test_method; } location /req_version { return 200 $test_version; } location /req_addr { return 200 $test_addr; } location /req_uri { return 200 $test_uri; } location /req_hdr { return 200 $test_hdr; } location /req_ihdr { return 200 $test_ihdr; } location /req_arg { return 200 $test_arg; } location /req_iarg { return 200 $test_iarg; } location /res_status { js_run " var res; res = $r.response; res.status = 204; res.sendHeader(); res.finish(); "; } location /res_ctype { js_run " var res; res = $r.response; res.status = 200; res.contentType = 'application/foo'; res.sendHeader(); res.finish(); "; } location /res_clen { js_run " var res; res = $r.response; res.status = 200; res.contentLength = 5; res.sendHeader(); res.send('foo12'); res.finish(); "; } location /res_send { js_run " var res, a, s; res = $r.response; res.status = 200; res.sendHeader(); for (a in $r.args) { if (a.substr(0, 3) == 'foo') { s = $r.args[a]; res.send('n=' + a + ', v=' + s.substr(0, 2) + ' '); } } res.finish(); "; } location /res_hdr { js_run " var res; res = $r.response; res.status = 200; res.headers['Foo'] = $r.args.fOO; res.sendHeader(); res.finish(); "; } } } EOF $t->run(); ############################################################################### like(http_get('/req_method'), qr/method=GET/, 'r.method'); like(http_get('/req_version'), qr/version=1.0/, 'r.httpVersion'); like(http_get('/req_addr'), qr/addr=127.0.0.1/, 'r.remoteAddress'); like(http_get('/req_uri'), qr/uri=\/req_uri/, 'r.uri'); like(http_get_hdr('/req_hdr'), qr/hdr=12345/, 'r.headers'); like(http_get_ihdr('/req_ihdr'), qr/12345barz/, 'r.headers iteration'); like(http_get('/req_arg?foO=12345'), qr/arg=12345/, 'r.args'); like(http_get('/req_iarg?foo=12345&foo2=bar&nn=22&foo-3=z'), qr/12345barz/, 'r.args iteration'); like(http_get('/res_status'), qr/204 No Content/, 'r.response.status'); like(http_get('/res_ctype'), qr/Content-Type: application\/foo/, 'r.response.contentType'); like(http_get('/res_clen'), qr/Content-Length: 5/, 'r.response.contentLength'); like(http_get('/res_send?foo=12345&n=11&foo-2=bar&ndd=&foo-3=z'), qr/n=foo, v=12 n=foo-2, v=ba n=foo-3, v=z/, 'r.response.send'); like(http_get('/res_hdr?foo=12345'), qr/Foo: 12345/, 'r.response.headers'); ############################################################################### sub http_get_hdr { my ($url, %extra) = @_; return http(<<EOF, %extra); GET $url HTTP/1.0 FoO: 12345 EOF } sub http_get_ihdr { my ($url, %extra) = @_; return http(<<EOF, %extra); GET $url HTTP/1.0 foo: 12345 Host: localhost foo2: bar X-xxx: more foo-3: z EOF } ###############################################################################