[PATCH 01 of 10] Tests: tests for passing Date and Server headers
Maxim Dounin
mdounin at mdounin.ru
Wed Apr 20 22:37:42 UTC 2022
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1650492927 -10800
# Thu Apr 21 01:15:27 2022 +0300
# Node ID cc83aac5f9482dc7485d92a1e5944586774a5306
# Parent 0c50a00e67334659d58d3cf7cb81fcf5872a8285
Tests: tests for passing Date and Server headers.
diff --git a/proxy_merge_headers.t b/proxy_merge_headers.t
--- a/proxy_merge_headers.t
+++ b/proxy_merge_headers.t
@@ -10,6 +10,7 @@ use warnings;
use strict;
use Test::More;
+use Socket qw/ CRLF /;
BEGIN { use FindBin; chdir($FindBin::Bin); }
@@ -21,7 +22,7 @@ use Test::Nginx;
select STDERR; $| = 1;
select STDOUT; $| = 1;
-my $t = Test::Nginx->new()->has(qw/http proxy cache rewrite/)->plan(7)
+my $t = Test::Nginx->new()->has(qw/http proxy cache rewrite/)->plan(11)
->write_file_expand('nginx.conf', <<'EOF');
%%TEST_GLOBALS%%
@@ -64,6 +65,16 @@ http {
proxy_pass http://127.0.0.1:8081;
proxy_set_body "body";
}
+
+ location /passdate/ {
+ proxy_pass http://127.0.0.1:8082;
+ proxy_pass_header Date;
+ proxy_pass_header Server;
+
+ location /passdate/no/ {
+ proxy_pass http://127.0.0.1:8082;
+ }
+ }
}
server {
@@ -80,8 +91,11 @@ http {
EOF
+$t->run_daemon(\&http_daemon);
$t->run();
+$t->waitforsocket('127.0.0.1:' . port(8082));
+
###############################################################################
like(http_get_ims('/'), qr/ims=;blah=blah;/,
@@ -98,6 +112,11 @@ like(http_get('/nested/'), qr/X-Pad/, 'p
unlike(http_get('/'), qr/X-Hidden/, 'proxy_hide_header inherited');
unlike(http_get('/nested/'), qr/X-Hidden/, 'proxy_hide_header nested');
+like(http_get('/passdate/'), qr/Date: passed/, 'proxy_pass_header date');
+like(http_get('/passdate/'), qr/Server: passed/, 'proxy_pass_header server');
+unlike(http_get('/passdate/no/'), qr/Date/, 'proxy_pass_header no date');
+unlike(http_get('/passdate/no/'), qr/Server/, 'proxy_pass_header no server');
+
###############################################################################
sub http_get_ims {
@@ -112,3 +131,45 @@ EOF
}
###############################################################################
+
+sub http_daemon {
+ my $server = IO::Socket::INET->new(
+ Proto => 'tcp',
+ LocalHost => '127.0.0.1',
+ LocalPort => port(8082),
+ Listen => 5,
+ Reuse => 1
+ )
+ or die "Can't create listening socket: $!\n";
+
+ local $SIG{PIPE} = 'IGNORE';
+
+ while (my $client = $server->accept()) {
+ $client->autoflush(1);
+
+ my $headers = '';
+ my $uri = '';
+
+ while (<$client>) {
+ $headers .= $_;
+ last if (/^\x0d?\x0a?$/);
+ }
+
+ $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i;
+
+ if ($uri =~ 'no') {
+ print $client
+ 'HTTP/1.0 200 OK' . CRLF . CRLF;
+
+ } else {
+ print $client
+ 'HTTP/1.0 200 OK' . CRLF .
+ 'Date: passed' . CRLF .
+ 'Server: passed' . CRLF . CRLF;
+ }
+
+ close $client;
+ }
+}
+
+###############################################################################
More information about the nginx-devel
mailing list