# HG changeset patch # User Andrey Zelenkov # Date 1441983082 -10800 # Node ID d40623cda2995fe506498bf06a76846ac0efae7c # Parent 89cfb7397ba1a38ec383c79c4125b1674f5fc4cc Tests: added fastcgi variables tests. diff --git a/fastcgi_variables.t b/fastcgi_variables.t new file mode 100644 --- /dev/null +++ b/fastcgi_variables.t @@ -0,0 +1,90 @@ +#!/usr/bin/perl + +# (C) Andrey Zelenkov +# (C) Nginx, Inc. + +# Test for fastcgi variables. + +############################################################################### + +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; + +eval { require FCGI; }; +plan(skip_all => 'FCGI not installed') if $@; +plan(skip_all => 'win32') if $^O eq 'MSWin32'; + +my $t = Test::Nginx->new()->has(qw/http fastcgi rewrite/)->plan(3) + ->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; + + add_header X-Script-Name $fastcgi_script_name; + add_header X-Path-Info $fastcgi_path_info; + + location / { + fastcgi_pass 127.0.0.1:8081; + fastcgi_index index.php; + } + + location /info { + fastcgi_pass 127.0.0.1:8081; + fastcgi_split_path_info ^(.+\.php)(.*)$; + } + } +} + +EOF + +$t->run_daemon(\&fastcgi_daemon); +$t->run()->waitforsocket('127.0.0.1:8081'); + +############################################################################### + +like(http_get('/'), qr/X-Script-Name: \/index\.php/ms, 'script name'); +like(http_get('/info.php/path/info'), qr/X-Script-Name: \/info\.php/ms, + 'info script name'); +like(http_get('/info.php/path/info'), qr/X-Path-Info: \/path\/info/ms, + 'info path'); + +############################################################################### + +sub fastcgi_daemon { + my $socket = FCGI::OpenSocket('127.0.0.1:8081', 5); + my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, + $socket); + + while( $request->Accept() >= 0 ) { + print CRLF . CRLF; + } + + FCGI::CloseSocket($socket); +} + +###############################################################################