# HG changeset patch # User Valentin Bartenev # Date 1328882129 -14400 # Node ID 0ca8725e595865b90f65099c0d9ec0d54fde7b6f # Parent 241b522ce7a5c3fd84e5d4fe3313bcdb2840e4cc Tests: proxy_cookie_domain and proxy_cookie_path tests. diff --git a/proxy_cookie.t b/proxy_cookie.t new file mode 100644 --- /dev/null +++ b/proxy_cookie.t @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +# (C) Maxim Dounin +# (C) Valentin Bartenev + +# Tests for the proxy_cookie_domain and proxy_cookie_path directives. + +############################################################################### + +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 proxy rewrite/); + +$t->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 / { + proxy_pass http://127.0.0.1:8081; + + proxy_cookie_domain www.example.org .example.com; + proxy_cookie_domain .$server_name.com en.$server_name.org; + proxy_cookie_domain ~^(.+)\.com$ $1.org; + + proxy_cookie_path /path/ /new/; + proxy_cookie_path /$server_name/ /new/$server_name/; + proxy_cookie_path ~^/regex/(.+)$ /$1; + proxy_cookie_path ~*^/caseless/(.+)$ /$1; + } + } + + server { + listen 127.0.0.1:8081; + server_name localhost; + + location / { + if ($arg_domain) { + set $sc_domain "; Domain=$arg_domain"; + } + if ($arg_path) { + set $sc_path "; Path=$arg_path"; + } + add_header Set-Cookie v=path=domain=$sc_domain$sc_path; + return 200 OK; + } + } +} + +EOF + +eval { + open OLDERR, ">&", \*STDERR; close STDERR; + $t->run(); + open STDERR, ">&", \*OLDERR; +}; +plan(skip_all => 'no proxy_cookie') if $@; + +$t->plan(8); + +############################################################################### + +is(http_get_set_cookie('/?domain=www.Example.org'), + 'v=path=domain=; Domain=example.com', 'domain rewrite'); +is(http_get_set_cookie('/?domain=.LocalHost.com'), + 'v=path=domain=; Domain=.en.localhost.org', + 'domain rewrite with vars'); +is(http_get_set_cookie('/?domain=www.example.COM'), + 'v=path=domain=; Domain=www.example.org', 'domain regex rewrite'); + +is(http_get_set_cookie('/?path=/path/test.html'), + 'v=path=domain=; Path=/new/test.html', 'path rewrite'); +is(http_get_set_cookie('/?path=/localhost/test.html'), + 'v=path=domain=; Path=/new/localhost/test.html', + 'path rewrite with vars'); +is(http_get_set_cookie('/?path=/regex/test.html'), + 'v=path=domain=; Path=/test.html', 'path regex rewrite'); +is(http_get_set_cookie('/?path=/CASEless/test.html'), + 'v=path=domain=; Path=/test.html', 'path caseless regex rewrite'); + +is(http_get_set_cookie('/?domain=www.example.org&path=/path/test.html'), + 'v=path=domain=; Domain=example.com; Path=/new/test.html', + 'domain and path rewrite'); + +############################################################################### + +sub http_get_set_cookie { + my ($uri) = @_; + http_get("http://127.0.0.1:8080$uri") =~ /^Set-Cookie:\s(.+?)\x0d?$/mi; + return $1; +} + +###############################################################################