Mercurial > hg > nginx-tests
changeset 208:6bac00bba8d4
Tests: xslt filter tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 01 Mar 2012 21:00:17 +0400 |
parents | 0a9e5d753fb8 |
children | 5137f27935b4 |
files | xslt.t xslt_params.t |
diffstat | 2 files changed, 231 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xslt.t Thu Mar 01 21:00:17 2012 +0400 @@ -0,0 +1,124 @@ +#!/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/)->plan(5); + +$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; + } + location /x2 { + xslt_stylesheet %%TESTDIR%%/test.xslt + param1='value1':param2=root param3='value%33'; + } + location /x3 { + xml_entities %%TESTDIR%%/entities.dtd; + xslt_stylesheet %%TESTDIR%%/test.xslt; + } + location /x4 { + xslt_stylesheet %%TESTDIR%%/first.xslt; + xslt_stylesheet %%TESTDIR%%/test.xslt; + } + } +} + +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="/"> +test xslt result +param1=<xsl:value-of select="$param1"/> +param2=<xsl:value-of select="$param2"/> +param3=<xsl:value-of select="$param3"/> +data=<xsl:value-of select="root"/> +</xsl:template> + +</xsl:stylesheet> + +EOF + +$t->write_file('first.xslt', <<'EOF'); + +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + +<xsl:template match="/"> +<root>other <xsl:value-of select="root"/></root> +</xsl:template> + +</xsl:stylesheet> + +EOF + +$t->write_file('entities.dtd', '<!ENTITY test "test entity">' . "\n"); +$t->write_file('x1', '<empty/>'); +$t->write_file('x2', '<root>data</root>'); +$t->write_file('x3', '<!DOCTYPE root><root>&test;</root>'); +$t->write_file('x4', '<root>data</root>'); + +$t->run(); + +############################################################################### + +like(http_get("/x1"), qr!200 OK.*test xslt result!ms, 'simple'); +like(http_get("/x1"), qr!200 OK.*Content-Type: text/html!ms, 'content type'); + +TODO: { +local $TODO = 'broken in 0.7.44 (r2589)'; + +like(http_get("/x2"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms, + 'params'); + +} + +like(http_get("/x3"), qr!200 OK.*data=test entity!ms, 'entities'); +like(http_get("/x4"), qr!200 OK.*data=other data!ms, 'several stylesheets'); + +###############################################################################
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xslt_params.t Thu Mar 01 21:00:17 2012 +0400 @@ -0,0 +1,107 @@ +#!/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>'); + +eval { + open OLDERR, ">&", \*STDERR; close STDERR; + $t->run(); + open STDERR, ">&", \*OLDERR; +}; + +plan(skip_all => 'no xslt_param') if $@; +$t->plan(3); + +############################################################################### + +like(http_get("/x1"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms, + 'params from xslt_stylesheet'); +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'); + +###############################################################################