changeset 8:b77577b9c005

Auth request: auth_request_set tests.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 24 Mar 2010 07:02:27 +0300
parents fb05a061532c
children 4385a10a836f
files t/auth-request-set.t
diffstat 1 files changed, 143 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/t/auth-request-set.t
@@ -0,0 +1,143 @@
+#!/usr/bin/perl
+
+# (C) Maxim Dounin
+
+# Tests for auth request module, auth_request_set.
+
+###############################################################################
+
+use warnings;
+use strict;
+
+use Socket qw/ CRLF /;
+
+use Test::More;
+use Test::Nginx;
+
+###############################################################################
+
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+my $t = Test::Nginx->new()->has(qw/http rewrite/)
+	->plan(6);
+
+$t->write_file_expand('nginx.conf', <<'EOF');
+
+%%TEST_GLOBALS%%
+
+master_process off;
+daemon         off;
+
+events {
+}
+
+http {
+    %%TEST_GLOBALS_HTTP%%
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  localhost;
+
+        location = /t1.html {
+            auth_request /auth;
+            auth_request_set $username $upstream_http_x_username;
+            add_header X-Set-Username $username;
+        }
+
+        location = /t2.html {
+            auth_request /auth;
+            auth_request_set $username $upstream_http_x_username;
+            error_page 404 = /fallback;
+        }
+        location = /fallback {
+            add_header X-Set-Username $username;
+            return 204;
+        }
+
+        location = /t3.html {
+            auth_request /auth;
+            auth_request_set $username $upstream_http_x_username;
+            error_page 404 = @fallback;
+        }
+        location @fallback {
+            add_header X-Set-Username $username;
+            return 204;
+        }
+
+        location = /t4.html {
+            auth_request /auth;
+            auth_request_set $username $upstream_http_x_username;
+            error_page 404 = /t4-fallback.html;
+        }
+        location = /t4-fallback.html {
+            auth_request /auth2;
+            auth_request_set $username $upstream_http_x_username;
+            add_header X-Set-Username $username;
+        }
+
+        location = /t5.html {
+            auth_request /auth;
+            auth_request_set $args "setargs";
+            proxy_pass http://127.0.0.1:8081/t5.html;
+        }
+
+        location = /t6.html {
+            add_header X-Unset-Username "x${username}x";
+            return 204;
+        }
+
+        location = /auth {
+            proxy_pass http://127.0.0.1:8081;
+        }
+        location = /auth2 {
+            proxy_pass http://127.0.0.1:8081;
+        }
+    }
+
+    server {
+        listen       127.0.0.1:8081;
+        server_name  localhost;
+
+        location = /auth {
+            add_header X-Username "username";
+            return 204;
+        }
+
+        location = /auth2 {
+            add_header X-Username "username2";
+            return 204;
+        }
+
+        location = /t5.html {
+            add_header X-Args $args;
+            return 204;
+        }
+    }
+}
+
+EOF
+
+$t->write_file('t1.html', '');
+$t->write_file('t4-fallback.html', '');
+$t->run();
+
+###############################################################################
+
+like(http_get('/t1.html'), qr/X-Set-Username: username/, 'set normal');
+like(http_get('/t2.html'), qr/X-Set-Username: username/, 'set after redirect');
+like(http_get('/t3.html'), qr/X-Set-Username: username/,
+	'set after named location');
+like(http_get('/t4.html'), qr/X-Set-Username: username2/,
+	 'set on second auth');
+
+# there are two variables with set_handler: $args and $limit_rate
+# we do test $args as it's a bit more simple thing to do
+
+like(http_get('/t5.html'), qr/X-Args: setargs/, 'variable with set_handler');
+
+# check that using variable without setting it returns empty content
+
+like(http_get('/t6.html'), qr/X-Unset-Username: xx/, 'unset variable');
+
+###############################################################################