Mercurial > hg > nginx-tests
changeset 453:baae3ed4ad09
Tests: post_action tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 28 Aug 2014 04:48:18 +0400 |
parents | 4465c1cf6f75 |
children | 11d324ee4def |
files | post_action.t |
diffstat | 1 files changed, 91 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/post_action.t Thu Aug 28 04:48:18 2014 +0400 @@ -0,0 +1,91 @@ +#!/usr/bin/perl + +# (C) Maxim Dounin +# (C) Nginx, Inc. + +# Tests for nginx post_action directive. + +############################################################################### + +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/)->plan(6); + +$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 / { + post_action /post.html; + } + + location /post.html { + # static + } + + location /remote { + post_action /post.remote; + } + + location /post.remote { + proxy_pass http://127.0.0.1:8080/post.html; + } + } +} + +EOF + +$t->write_file('index.html', 'SEE-THIS'); +$t->write_file('post.html', 'HIDDEN'); +$t->write_file('remote', 'SEE-THIS'); + +$t->run(); + +############################################################################### + +like(http_get('/'), qr/SEE-THIS/m, 'post action'); +unlike(http_get('/'), qr/HIDDEN/m, 'no additional body'); + +like(http_get('/remote'), qr/SEE-THIS/m, 'post action proxy'); +unlike(http_get('/remote'), qr/HIDDEN/m, 'no additional body proxy'); + +$t->stop(); + +like(`cat ${\($t->testdir())}/access.log`, qr/post/, 'post action in logs'); + +TODO: { +local $TODO = 'broken in 1.5.4'; + +# the r->header_sent check in 1.5.4+ results in +# "header already sent" alerts + +like(`grep -F '[alert]' ${\($t->testdir())}/error.log`, qr/^$/s, 'no alerts'); + +} + +###############################################################################