Mercurial > hg > nginx-tests
annotate proxy_cookie_flags.t @ 1606:e4e0695552ed
Tests: fixed stream_proxy_ssl_conf_command.t.
The stream_proxy_ssl_conf_command.t test used stream return module
to return the response. Since this ignores actual request, but the
perl test code used http_get(). This might result in the request being
sent after the response is returned and the connection closed by the server,
resulting in RST being generated and no response seen by the client at all.
Fix is to use "stream(...)->read()" instead of http_get(), so
no request is sent at all, eliminating possibility of RST being
generated.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 10 Nov 2020 05:03:29 +0300 |
parents | 2083b4f183e7 |
children | 3b8a9f02d141 |
rev | line source |
---|---|
1594
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for the proxy_cookie_flags directive. |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 $t->write_file_expand('nginx.conf', <<'EOF'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 events { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 http { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 server { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 listen 127.0.0.1:8080; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 server_name localhost; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 location / { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 proxy_pass http://127.0.0.1:8081; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 proxy_cookie_flags a secure httponly samesite=none; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 proxy_cookie_flags b secure httponly samesite=lax; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 proxy_cookie_flags c secure httponly samesite=strict; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 proxy_cookie_flags d nosecure nohttponly nosamesite; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 proxy_cookie_flags $arg_complex secure; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 proxy_cookie_flags ~BAR httponly; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 location /off/ { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 proxy_pass http://127.0.0.1:8081; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 proxy_cookie_flags off; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 server { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 listen 127.0.0.1:8081; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 server_name localhost; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 location / { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 set $c "$arg_v$arg_complex=path=domain=; Domain=example.org$arg_f"; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 add_header Set-Cookie $c; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 return 200 OK; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 EOF |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 $t->try_run('no proxy_cookie_flags')->plan(11); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 ############################################################################### |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 is(http_get_set_cookie('/?v=a'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 'a=path=domain=; Domain=example.org; Secure; HttpOnly; SameSite=None', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 'flags set all'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 is(http_get_set_cookie('/?v=b'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 'b=path=domain=; Domain=example.org; Secure; HttpOnly; SameSite=Lax', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 'flags set lax'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 is(http_get_set_cookie('/?v=c'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 'c=path=domain=; Domain=example.org; Secure; HttpOnly; SameSite=Strict', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 'flags set strict'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 # edit already set flags |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 is(http_get_set_cookie('/?v=a&f=;Secure;HttpOnly;SameSite=Lax'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 'a=path=domain=; Domain=example.org; Secure; HttpOnly; SameSite=None', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 'flags reset all'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 is(http_get_set_cookie('/?v=b&f=;Secure;HttpOnly;SameSite=None'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 'b=path=domain=; Domain=example.org; Secure; HttpOnly; SameSite=Lax', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 'flags reset lax'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 is(http_get_set_cookie('/?v=c&f=;Secure;HttpOnly;SameSite=None'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 'c=path=domain=; Domain=example.org; Secure; HttpOnly; SameSite=Strict', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 'flags reset strict'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 is(http_get_set_cookie('/?v=d&f=;secure;httponly;samesite=lax'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 'd=path=domain=; Domain=example.org', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 'flags remove'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 is(http_get_set_cookie('/?v=nx&f=;samesite=none'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 'nx=path=domain=; Domain=example.org;samesite=none', 'flags no match'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 is(http_get_set_cookie('/?complex=v'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 'v=path=domain=; Domain=example.org; Secure', 'flags variable'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 is(http_get_set_cookie('/?v=foobarbaz'), |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 'foobarbaz=path=domain=; Domain=example.org; HttpOnly', 'flags regex'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 is(http_get_set_cookie('/off/?v=a'), 'a=path=domain=; Domain=example.org', |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 'flags off'); |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 ############################################################################### |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 sub http_get_set_cookie { |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 my ($uri) = @_; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 http_get($uri) =~ /^Set-Cookie:\s(.+?)\x0d?$/mi; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 return $1; |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 } |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 |
2083b4f183e7
Tests: proxy_cookie_flags tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 ############################################################################### |