# HG changeset patch # User Maxim Dounin # Date 1409186898 -14400 # Node ID baae3ed4ad099a550fed040bf0aa651809829105 # Parent 4465c1cf6f750a609cba74478e3f6cdb772e01fd Tests: post_action tests. diff --git a/post_action.t b/post_action.t new file mode 100644 --- /dev/null +++ b/post_action.t @@ -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'); + +} + +###############################################################################