# HG changeset patch # User Dmitry Lazurkin # Date 1476632999 -10800 # Node ID 1dd57525de8bc089b7a4ce85f3bcec7a4087d5b6 # Parent efccab043dd35562411d739d47ef8ad42654f349 Tests: add tests for proxy_method directive. diff --git a/proxy_method.t b/proxy_method.t new file mode 100644 --- /dev/null +++ b/proxy_method.t @@ -0,0 +1,91 @@ +#!/usr/bin/perl + +# (C) Dmitry Lazurkin + +# Tests for proxy_method. + +############################################################################### + +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(4) + ->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 /preserve { + proxy_pass http://127.0.0.1:8080/get-method; + } + + location /const { + proxy_pass http://127.0.0.1:8080/get-method; + proxy_method POST; + } + + location /var { + proxy_pass http://127.0.0.1:8080/get-method; + proxy_method $arg_method; + } + + location /parent { + proxy_method POST; + location /parent/child { + proxy_pass http://127.0.0.1:8080/get-method; + } + } + + location /get-method { + return 200 "request_method=$request_method"; + } + } +} + +EOF + +$t->run(); + +############################################################################### + +like(http_get('/preserve'), qr/request_method=GET/, + 'proxy_method from request'); + +like(http_get('/const'), qr/request_method=POST/, + 'proxy_method from constant'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.11.6'); + +like(http_get('/var?method=POST'), qr/request_method=POST/, + 'proxy_method from variable'); + +} + +like(http_get('/parent/child'), qr/request_method=POST/, + 'proxy_method from parent'); + +###############################################################################