208
|
1 #!/usr/bin/perl
|
|
2
|
|
3 # (C) Maxim Dounin
|
|
4
|
|
5 # Tests for nginx xslt filter module.
|
|
6
|
|
7 ###############################################################################
|
|
8
|
|
9 use warnings;
|
|
10 use strict;
|
|
11
|
|
12 use Test::More;
|
|
13
|
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
|
|
15
|
|
16 use lib 'lib';
|
|
17 use Test::Nginx;
|
|
18
|
|
19 ###############################################################################
|
|
20
|
|
21 select STDERR; $| = 1;
|
|
22 select STDOUT; $| = 1;
|
|
23
|
|
24 my $t = Test::Nginx->new()->has(qw/http xslt/);
|
|
25
|
|
26 $t->write_file_expand('nginx.conf', <<'EOF');
|
|
27
|
|
28 %%TEST_GLOBALS%%
|
|
29
|
|
30 daemon off;
|
|
31
|
|
32 events {
|
|
33 }
|
|
34
|
|
35 http {
|
|
36 %%TEST_GLOBALS_HTTP%%
|
|
37
|
|
38 server {
|
|
39 listen 127.0.0.1:8080;
|
|
40 server_name localhost;
|
|
41
|
|
42 default_type text/xml;
|
|
43
|
|
44 location /x1 {
|
|
45 xslt_stylesheet %%TESTDIR%%/test.xslt
|
|
46 param1='value1':param2=root param3='value%33';
|
|
47 }
|
|
48 location /x2 {
|
|
49 xslt_stylesheet %%TESTDIR%%/test.xslt;
|
|
50 xslt_param param1 "'value1'";
|
|
51 xslt_param param2 "root";
|
|
52 xslt_string_param param3 "value3";
|
|
53 }
|
|
54 location /x3 {
|
|
55 xslt_stylesheet %%TESTDIR%%/test.xslt
|
|
56 param1='value1':param2=root;
|
|
57 xslt_string_param param3 "value3";
|
|
58 }
|
|
59 }
|
|
60 }
|
|
61
|
|
62 EOF
|
|
63
|
|
64 $t->write_file('test.xslt', <<'EOF');
|
|
65
|
|
66 <xsl:stylesheet version="1.0"
|
|
67 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
68
|
|
69 <xsl:output method="html"/>
|
|
70
|
|
71 <xsl:param name="param1"/>
|
|
72 <xsl:param name="param2"/>
|
|
73 <xsl:param name="param3"/>
|
|
74
|
|
75 <xsl:template match="/">
|
|
76 param1=<xsl:value-of select="$param1"/>
|
|
77 param2=<xsl:value-of select="$param2"/>
|
|
78 param3=<xsl:value-of select="$param3"/>
|
|
79 </xsl:template>
|
|
80
|
|
81 </xsl:stylesheet>
|
|
82
|
|
83 EOF
|
|
84
|
|
85 $t->write_file('x1', '<root>data</root>');
|
|
86 $t->write_file('x2', '<root>data</root>');
|
|
87 $t->write_file('x3', '<root>data</root>');
|
|
88
|
|
89 eval {
|
|
90 open OLDERR, ">&", \*STDERR; close STDERR;
|
|
91 $t->run();
|
|
92 open STDERR, ">&", \*OLDERR;
|
|
93 };
|
|
94
|
|
95 plan(skip_all => 'no xslt_param') if $@;
|
|
96 $t->plan(3);
|
|
97
|
|
98 ###############################################################################
|
|
99
|
|
100 like(http_get("/x1"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms,
|
|
101 'params from xslt_stylesheet');
|
|
102 like(http_get("/x2"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms,
|
|
103 'params from xslt_param/xslt_string_param');
|
|
104 like(http_get("/x3"), qr!200 OK.*param1=value1.*param2=data.*param3=value3!ms,
|
|
105 'mixed');
|
|
106
|
|
107 ###############################################################################
|