blob: 83493e9cc1fbfdb350936163f2de64f78f6dc9b7 [file] [log] [blame]
#!/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');
###############################################################################