annotate http_try_files.t @ 570:f7bc1f74970a

Tests: avoid send errors in syslog tests with mail error_log. Use a separate mail server block for syslog parsing tests to make sure that syslog messages are always read by the receiver on the remote side. Otherwise, syslog message might not be sent due to a pending socket error.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 07 May 2015 14:28:44 +0300
parents 907e89fba9c3
children bc91b86a71ee
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
189
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for try_files directive.
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
523
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)->plan(8)
189
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 ->write_file_expand('nginx.conf', <<'EOF');
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 %%TEST_GLOBALS%%
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 224
diff changeset
29 daemon off;
189
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 events {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 http {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 %%TEST_GLOBALS_HTTP%%
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 server {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 listen 127.0.0.1:8080;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 server_name localhost;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 location / {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 try_files $uri /fallback;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 location /nouri/ {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 try_files $uri /fallback_nouri;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48
214
35d050d7d5f1 Tests: add try_files test with short uri (ticket #152).
Maxim Dounin <mdounin@mdounin.ru>
parents: 189
diff changeset
49 location /short/ {
35d050d7d5f1 Tests: add try_files test with short uri (ticket #152).
Maxim Dounin <mdounin@mdounin.ru>
parents: 189
diff changeset
50 try_files /short $uri =404;
35d050d7d5f1 Tests: add try_files test with short uri (ticket #152).
Maxim Dounin <mdounin@mdounin.ru>
parents: 189
diff changeset
51 }
35d050d7d5f1 Tests: add try_files test with short uri (ticket #152).
Maxim Dounin <mdounin@mdounin.ru>
parents: 189
diff changeset
52
523
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
53 location /file-file/ {
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
54 try_files /found.html =404;
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
55 }
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
56
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
57 location /file-dir/ {
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
58 try_files /found.html/ =404;
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
59 }
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
60
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
61 location /dir-dir/ {
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
62 try_files /directory/ =404;
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
63 }
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
64
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
65 location /dir-file/ {
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
66 try_files /directory =404;
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
67 }
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
68
189
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 location /fallback {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 proxy_pass http://127.0.0.1:8081/fallback;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 location /fallback_nouri {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 proxy_pass http://127.0.0.1:8081;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 server {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 listen 127.0.0.1:8081;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 server_name localhost;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 location / {
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 add_header X-URI $request_uri;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 return 204;
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 }
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 EOF
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89
523
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
90 mkdir($t->testdir() . '/directory');
189
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 $t->write_file('found.html', 'SEE THIS');
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 $t->run();
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 ###############################################################################
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 like(http_get('/found.html'), qr!SEE THIS!, 'found');
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 like(http_get('/uri/notfound'), qr!X-URI: /fallback!, 'not found uri');
224
ba992cfdc606 Tests: remove TODO from tests which pass in 1.2.x.
Maxim Dounin <mdounin@mdounin.ru>
parents: 214
diff changeset
98 like(http_get('/nouri/notfound'), qr!X-URI: /fallback!, 'not found nouri');
214
35d050d7d5f1 Tests: add try_files test with short uri (ticket #152).
Maxim Dounin <mdounin@mdounin.ru>
parents: 189
diff changeset
99 like(http_get('/short/long'), qr!404 Not!, 'short uri in try_files');
189
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100
523
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
101 like(http_get('/file-file/'), qr!SEE THIS!, 'file matches file');
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
102 like(http_get('/file-dir/'), qr!404 Not!, 'file does not match dir');
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
103 like(http_get('/dir-dir/'), qr!301 Moved Permanently!, 'dir matches dir');
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
104 like(http_get('/dir-file/'), qr!404 Not!, 'dir does not match file');
64eabe6aa1f2 Tests: try_files tests for files and directory matching.
Damien Tournoud <damien@commerceguys.com>
parents: 310
diff changeset
105
189
802fc0786165 Tests: some try_files tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 ###############################################################################