view proxy_ssi_body.t @ 1164:cdd44ff602db

Tests: stream udp test with wildcard address. The test ensures that the source address used for outgoing UDP datagrams is the same as the one used for the incoming datagram.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 18 Apr 2017 17:51:00 +0300
parents 882267679006
children 630c3e7a5d40
line wrap: on
line source

#!/usr/bin/perl

# (C) Sergey Kandaurov
# (C) Nginx, Inc.

# Test for proxied subrequest with request body in file.

###############################################################################

use warnings;
use strict;

use Test::More;

use Socket qw/ CRLF /;

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 ssi/)->plan(1);

$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 / {
        }

        location /proxy {
            proxy_pass http://127.0.0.1:8080/;
            client_body_in_file_only on;
            ssi on;
        }
    }
}

EOF

$t->write_file('ssi.html', 'X<!--# include virtual="test.html" -->X');
$t->write_file('test.html', 'YY');

$t->todo_alerts() if $t->read_file('nginx.conf') =~ /sendfile on/;
$t->run();

###############################################################################

# Request body cache file is released once a response is got.
# If later a subrequest tries to use body, it fails.

TODO: {
local $TODO = 'prematurely pruned';

like(http_get_body('/proxy/ssi.html', "1234567890"), qr/^XYYX$/m,
	'body in file in proxied subrequest');

}

###############################################################################

sub http_get_body {
	my ($url, $body, %extra) = @_;

	my $p = "GET $url HTTP/1.0" . CRLF
		. "Host: localhost" . CRLF
		. "Content-Length: " . (length $body) . CRLF . CRLF
		. $body;

	return http($p, %extra);
}

###############################################################################