view xslt_params.t @ 1248:70192b1baf01

Tests: added exception test to stream_js.t using 'require'. The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't currently provide an easy way to check its version, whilst we are obligated to gracefully handle such cases somehow. With such an addition of 'require', now the tests are skipped instead on the previous versions.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Nov 2017 13:16:39 +0300
parents 1755891577af
children 97c8280de681
line wrap: on
line source

#!/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

TODO: {
local $TODO = 'not yet' unless $t->has_version('1.13.7');

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');

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