[PATCH 02 of 10] Tests: fastcgi tests for combining headers

Maxim Dounin mdounin at mdounin.ru
Wed Apr 20 22:37:43 UTC 2022


# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1650492928 -10800
#      Thu Apr 21 01:15:28 2022 +0300
# Node ID 910b323534f0100d0a1c8c7934a0e91c51f4e888
# Parent  cc83aac5f9482dc7485d92a1e5944586774a5306
Tests: fastcgi tests for combining headers.

diff --git a/fastcgi_header_params.t b/fastcgi_header_params.t
--- a/fastcgi_header_params.t
+++ b/fastcgi_header_params.t
@@ -25,7 +25,7 @@ eval { require FCGI; };
 plan(skip_all => 'FCGI not installed') if $@;
 plan(skip_all => 'win32') if $^O eq 'MSWin32';
 
-my $t = Test::Nginx->new()->has(qw/http fastcgi/)->plan(1)
+my $t = Test::Nginx->new()->has(qw/http fastcgi/)->plan(4)
 	->write_file_expand('nginx.conf', <<'EOF');
 
 %%TEST_GLOBALS%%
@@ -59,6 +59,37 @@ EOF
 like(http_get_headers('/'), qr/SEE-THIS/,
 	'fastcgi request with many ignored headers');
 
+TODO: {
+local $TODO = 'not yet';
+
+my $r;
+
+$r = http(<<EOF);
+GET / HTTP/1.0
+Host: localhost
+X-Forwarded-For: foo
+X-Forwarded-For: bar
+X-Forwarded-For: bazz
+Cookie: foo
+Cookie: bar
+Cookie: bazz
+Foo: foo
+Foo: bar
+Foo: bazz
+
+EOF
+
+like($r, qr/X-Forwarded-For: foo, bar, bazz/,
+	'fastcgi with multiple X-Forwarded-For headers');
+
+like($r, qr/X-Cookie: foo; bar; bazz/,
+	'fastcgi with multiple Cookie headers');
+
+like($r, qr/X-Foo: foo, bar, bazz/,
+	'fastcgi with multiple unknown headers');
+
+}
+
 ###############################################################################
 
 sub http_get_headers {
@@ -100,9 +131,16 @@ sub fastcgi_daemon {
 	while( $request->Accept() >= 0 ) {
 		$count++;
 
+		my $xfwd = $ENV{HTTP_X_FORWARDED_FOR} || '';
+		my $cookie = $ENV{HTTP_COOKIE} || '';
+		my $foo = $ENV{HTTP_FOO} || '';
+
 		print <<EOF;
 Location: http://localhost/redirect
 Content-Type: text/html
+X-Forwarded-For: $xfwd
+X-Cookie: $cookie
+X-Foo: $foo
 
 SEE-THIS
 $count



More information about the nginx-devel mailing list