blob: ae9c61144df89d3b0e31c12e5533b4961236c2ec [file] [log] [blame]
#!/usr/bin/perl
# (C) Andrey Zelenkov
# (C) Nginx, Inc.
# Tests for server_tokens directive.
###############################################################################
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/)
->write_file_expand('nginx.conf', <<'EOF');
%%TEST_GLOBALS%%
daemon off;
events {
}
http {
%%TEST_GLOBALS_HTTP%%
server {
listen 127.0.0.1:8080;
server_name localhost;
location /200 {
return 200;
}
location /404 {
return 404;
}
location /off {
server_tokens off;
location /off/200 {
return 200;
}
location /off/404 {
return 404;
}
}
location /on {
server_tokens on;
location /on/200 {
return 200;
}
location /on/404 {
return 404;
}
}
location /b {
server_tokens build;
location /b/200 {
return 200;
}
location /b/404 {
return 404;
}
}
}
}
EOF
$t->run()->plan(12);
###############################################################################
my $re = qr/nginx\/\d+\.\d+\.\d+/;
like(http_get_server('/200'), $re, 'tokens default 200');
like(http_get_server('/404'), $re, 'tokens default 404');
like(http_body('/404'), $re, 'tokens default 404 body');
is(http_get_server('/off/200'), 'nginx', 'tokens off 200');
is(http_get_server('/off/404'), 'nginx', 'tokens off 404');
like(http_body('/off/404'), qr/nginx(?!\/)/, 'tokens off 404 body');
like(http_get_server('/on/200'), $re, 'tokens on 200');
like(http_get_server('/on/404'), $re, 'tokens on 404');
like(http_body('/on/404'), $re, 'tokens on 404 body');
$re = qr/$re \Q($1)\E/ if $t->{_configure_args} =~ /--build=(\S+)/;
like(http_get_server('/b/200'), $re, 'tokens build 200');
like(http_get_server('/b/404'), $re, 'tokens build 404');
like(http_body('/b/404'), $re, 'tokens build 404 body');
###############################################################################
sub http_body {
my ($uri) = shift;
return http_get($uri) =~ /.*?\x0d\x0a?\x0d\x0a?(.*)/ms && $1;
}
sub http_get_server {
my ($url) = @_;
return http_get($url) =~ /^Server:\s(.+?)\x0d?$/mi && $1 || undef;
}
###############################################################################