| #!/usr/bin/perl | 
 |  | 
 | # (C) Maxim Dounin | 
 |  | 
 | # Tests for nginx xslt filter module. | 
 |  | 
 | ############################################################################### | 
 |  | 
 | 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 xslt/); | 
 |  | 
 | $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; | 
 |  | 
 |         default_type text/xml; | 
 |  | 
 |         location /x1 { | 
 |             xslt_stylesheet %%TESTDIR%%/test.xslt | 
 |                             param1='value1':param2=/root param3='value%33'; | 
 |         } | 
 |         location /x2 { | 
 |             xslt_stylesheet %%TESTDIR%%/test.xslt; | 
 |             xslt_param param1 "'value1'"; | 
 |             xslt_param param2 "/root"; | 
 |             xslt_string_param param3 "value3"; | 
 |         } | 
 |         location /x3 { | 
 |             xslt_stylesheet %%TESTDIR%%/test.xslt | 
 |                             param1='value1':param2=/root; | 
 |             xslt_string_param param3 "value3"; | 
 |         } | 
 |     } | 
 | } | 
 |  | 
 | EOF | 
 |  | 
 | $t->write_file('test.xslt', <<'EOF'); | 
 |  | 
 | <xsl:stylesheet version="1.0" | 
 |                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | 
 |  | 
 | <xsl:output method="html"/> | 
 |  | 
 | <xsl:param name="param1"/> | 
 | <xsl:param name="param2"/> | 
 | <xsl:param name="param3"/> | 
 |  | 
 | <xsl:template match="/"> | 
 | param1=<xsl:value-of select="$param1"/> | 
 | param2=<xsl:value-of select="$param2"/> | 
 | param3=<xsl:value-of select="$param3"/> | 
 | </xsl:template> | 
 |  | 
 | </xsl:stylesheet> | 
 |  | 
 | EOF | 
 |  | 
 | $t->write_file('x1', '<root>data</root>'); | 
 | $t->write_file('x2', '<root>data</root>'); | 
 | $t->write_file('x3', '<root>data</root>'); | 
 |  | 
 | $t->run()->plan(4); | 
 |  | 
 | ############################################################################### | 
 |  | 
 | like(http_get("/x1"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms, | 
 | 	'params from xslt_stylesheet'); | 
 |  | 
 | # before 1.13.7, nginx used to overwrite xslt_stylesheet configuration data | 
 |  | 
 | like(http_get("/x1"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms, | 
 | 	'params from xslt_stylesheet again'); | 
 |  | 
 | like(http_get("/x2"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms, | 
 | 	'params from xslt_param/xslt_string_param'); | 
 | like(http_get("/x3"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms, | 
 | 	'mixed'); | 
 |  | 
 | ############################################################################### |