xref: /plugin/davcal/vendor/sabre/xml/tests/Sabre/Xml/ServiceTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\Xml;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehlerclass ServiceTest extends \PHPUnit_Framework_TestCase {
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler    function testGetReader() {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler        $elems = [
10*a1a3b679SAndreas Boehler            '{http://sabre.io/ns}test' => 'Test!',
11*a1a3b679SAndreas Boehler        ];
12*a1a3b679SAndreas Boehler
13*a1a3b679SAndreas Boehler        $util = new Service();
14*a1a3b679SAndreas Boehler        $util->elementMap = $elems;
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler        $reader = $util->getReader();
17*a1a3b679SAndreas Boehler        $this->assertInstanceOf('Sabre\\Xml\\Reader', $reader);
18*a1a3b679SAndreas Boehler        $this->assertEquals($elems, $reader->elementMap);
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler    }
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler    function testGetWriter() {
23*a1a3b679SAndreas Boehler
24*a1a3b679SAndreas Boehler        $ns = [
25*a1a3b679SAndreas Boehler            'http://sabre.io/ns' => 's',
26*a1a3b679SAndreas Boehler        ];
27*a1a3b679SAndreas Boehler
28*a1a3b679SAndreas Boehler        $util = new Service();
29*a1a3b679SAndreas Boehler        $util->namespaceMap = $ns;
30*a1a3b679SAndreas Boehler
31*a1a3b679SAndreas Boehler        $writer = $util->getWriter();
32*a1a3b679SAndreas Boehler        $this->assertInstanceOf('Sabre\\Xml\\Writer', $writer);
33*a1a3b679SAndreas Boehler        $this->assertEquals($ns, $writer->namespaceMap);
34*a1a3b679SAndreas Boehler
35*a1a3b679SAndreas Boehler    }
36*a1a3b679SAndreas Boehler
37*a1a3b679SAndreas Boehler    /**
38*a1a3b679SAndreas Boehler     * @depends testGetReader
39*a1a3b679SAndreas Boehler     */
40*a1a3b679SAndreas Boehler    function testParse() {
41*a1a3b679SAndreas Boehler
42*a1a3b679SAndreas Boehler        $xml = <<<XML
43*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns">
44*a1a3b679SAndreas Boehler  <child>value</child>
45*a1a3b679SAndreas Boehler</root>
46*a1a3b679SAndreas BoehlerXML;
47*a1a3b679SAndreas Boehler        $util = new Service();
48*a1a3b679SAndreas Boehler        $result = $util->parse($xml, null, $rootElement);
49*a1a3b679SAndreas Boehler        $this->assertEquals('{http://sabre.io/ns}root', $rootElement);
50*a1a3b679SAndreas Boehler
51*a1a3b679SAndreas Boehler        $expected = [
52*a1a3b679SAndreas Boehler            [
53*a1a3b679SAndreas Boehler                'name'       => '{http://sabre.io/ns}child',
54*a1a3b679SAndreas Boehler                'value'      => 'value',
55*a1a3b679SAndreas Boehler                'attributes' => [],
56*a1a3b679SAndreas Boehler            ]
57*a1a3b679SAndreas Boehler        ];
58*a1a3b679SAndreas Boehler
59*a1a3b679SAndreas Boehler        $this->assertEquals(
60*a1a3b679SAndreas Boehler            $expected,
61*a1a3b679SAndreas Boehler            $result
62*a1a3b679SAndreas Boehler        );
63*a1a3b679SAndreas Boehler
64*a1a3b679SAndreas Boehler    }
65*a1a3b679SAndreas Boehler
66*a1a3b679SAndreas Boehler    /**
67*a1a3b679SAndreas Boehler     * @depends testGetReader
68*a1a3b679SAndreas Boehler     */
69*a1a3b679SAndreas Boehler    function testParseStream() {
70*a1a3b679SAndreas Boehler
71*a1a3b679SAndreas Boehler        $xml = <<<XML
72*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns">
73*a1a3b679SAndreas Boehler  <child>value</child>
74*a1a3b679SAndreas Boehler</root>
75*a1a3b679SAndreas BoehlerXML;
76*a1a3b679SAndreas Boehler        $stream = fopen('php://memory', 'r+');
77*a1a3b679SAndreas Boehler        fwrite($stream, $xml);
78*a1a3b679SAndreas Boehler        rewind($stream);
79*a1a3b679SAndreas Boehler
80*a1a3b679SAndreas Boehler        $util = new Service();
81*a1a3b679SAndreas Boehler        $result = $util->parse($stream, null, $rootElement);
82*a1a3b679SAndreas Boehler        $this->assertEquals('{http://sabre.io/ns}root', $rootElement);
83*a1a3b679SAndreas Boehler
84*a1a3b679SAndreas Boehler        $expected = [
85*a1a3b679SAndreas Boehler            [
86*a1a3b679SAndreas Boehler                'name'       => '{http://sabre.io/ns}child',
87*a1a3b679SAndreas Boehler                'value'      => 'value',
88*a1a3b679SAndreas Boehler                'attributes' => [],
89*a1a3b679SAndreas Boehler            ]
90*a1a3b679SAndreas Boehler        ];
91*a1a3b679SAndreas Boehler
92*a1a3b679SAndreas Boehler        $this->assertEquals(
93*a1a3b679SAndreas Boehler            $expected,
94*a1a3b679SAndreas Boehler            $result
95*a1a3b679SAndreas Boehler        );
96*a1a3b679SAndreas Boehler
97*a1a3b679SAndreas Boehler    }
98*a1a3b679SAndreas Boehler
99*a1a3b679SAndreas Boehler    /**
100*a1a3b679SAndreas Boehler     * @depends testGetReader
101*a1a3b679SAndreas Boehler     */
102*a1a3b679SAndreas Boehler    function testExpect() {
103*a1a3b679SAndreas Boehler
104*a1a3b679SAndreas Boehler        $xml = <<<XML
105*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns">
106*a1a3b679SAndreas Boehler  <child>value</child>
107*a1a3b679SAndreas Boehler</root>
108*a1a3b679SAndreas BoehlerXML;
109*a1a3b679SAndreas Boehler        $util = new Service();
110*a1a3b679SAndreas Boehler        $result = $util->expect('{http://sabre.io/ns}root', $xml);
111*a1a3b679SAndreas Boehler
112*a1a3b679SAndreas Boehler        $expected = [
113*a1a3b679SAndreas Boehler            [
114*a1a3b679SAndreas Boehler                'name'       => '{http://sabre.io/ns}child',
115*a1a3b679SAndreas Boehler                'value'      => 'value',
116*a1a3b679SAndreas Boehler                'attributes' => [],
117*a1a3b679SAndreas Boehler            ]
118*a1a3b679SAndreas Boehler        ];
119*a1a3b679SAndreas Boehler
120*a1a3b679SAndreas Boehler        $this->assertEquals(
121*a1a3b679SAndreas Boehler            $expected,
122*a1a3b679SAndreas Boehler            $result
123*a1a3b679SAndreas Boehler        );
124*a1a3b679SAndreas Boehler    }
125*a1a3b679SAndreas Boehler
126*a1a3b679SAndreas Boehler    /**
127*a1a3b679SAndreas Boehler     * @depends testGetReader
128*a1a3b679SAndreas Boehler     */
129*a1a3b679SAndreas Boehler    function testExpectStream() {
130*a1a3b679SAndreas Boehler
131*a1a3b679SAndreas Boehler        $xml = <<<XML
132*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns">
133*a1a3b679SAndreas Boehler  <child>value</child>
134*a1a3b679SAndreas Boehler</root>
135*a1a3b679SAndreas BoehlerXML;
136*a1a3b679SAndreas Boehler
137*a1a3b679SAndreas Boehler        $stream = fopen('php://memory', 'r+');
138*a1a3b679SAndreas Boehler        fwrite($stream, $xml);
139*a1a3b679SAndreas Boehler        rewind($stream);
140*a1a3b679SAndreas Boehler
141*a1a3b679SAndreas Boehler        $util = new Service();
142*a1a3b679SAndreas Boehler        $result = $util->expect('{http://sabre.io/ns}root', $stream);
143*a1a3b679SAndreas Boehler
144*a1a3b679SAndreas Boehler        $expected = [
145*a1a3b679SAndreas Boehler            [
146*a1a3b679SAndreas Boehler                'name'       => '{http://sabre.io/ns}child',
147*a1a3b679SAndreas Boehler                'value'      => 'value',
148*a1a3b679SAndreas Boehler                'attributes' => [],
149*a1a3b679SAndreas Boehler            ]
150*a1a3b679SAndreas Boehler        ];
151*a1a3b679SAndreas Boehler
152*a1a3b679SAndreas Boehler        $this->assertEquals(
153*a1a3b679SAndreas Boehler            $expected,
154*a1a3b679SAndreas Boehler            $result
155*a1a3b679SAndreas Boehler        );
156*a1a3b679SAndreas Boehler    }
157*a1a3b679SAndreas Boehler
158*a1a3b679SAndreas Boehler    /**
159*a1a3b679SAndreas Boehler     * @depends testGetReader
160*a1a3b679SAndreas Boehler     * @expectedException \Sabre\Xml\ParseException
161*a1a3b679SAndreas Boehler     */
162*a1a3b679SAndreas Boehler    function testExpectWrong() {
163*a1a3b679SAndreas Boehler
164*a1a3b679SAndreas Boehler        $xml = <<<XML
165*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns">
166*a1a3b679SAndreas Boehler  <child>value</child>
167*a1a3b679SAndreas Boehler</root>
168*a1a3b679SAndreas BoehlerXML;
169*a1a3b679SAndreas Boehler        $util = new Service();
170*a1a3b679SAndreas Boehler        $util->expect('{http://sabre.io/ns}error', $xml);
171*a1a3b679SAndreas Boehler
172*a1a3b679SAndreas Boehler    }
173*a1a3b679SAndreas Boehler
174*a1a3b679SAndreas Boehler    /**
175*a1a3b679SAndreas Boehler     * @depends testGetWriter
176*a1a3b679SAndreas Boehler     */
177*a1a3b679SAndreas Boehler    function testWrite() {
178*a1a3b679SAndreas Boehler
179*a1a3b679SAndreas Boehler        $util = new Service();
180*a1a3b679SAndreas Boehler        $util->namespaceMap = [
181*a1a3b679SAndreas Boehler            'http://sabre.io/ns' => 's',
182*a1a3b679SAndreas Boehler        ];
183*a1a3b679SAndreas Boehler        $result = $util->write('{http://sabre.io/ns}root', [
184*a1a3b679SAndreas Boehler            '{http://sabre.io/ns}child' => 'value',
185*a1a3b679SAndreas Boehler        ]);
186*a1a3b679SAndreas Boehler
187*a1a3b679SAndreas Boehler        $expected = <<<XML
188*a1a3b679SAndreas Boehler<?xml version="1.0"?>
189*a1a3b679SAndreas Boehler<s:root xmlns:s="http://sabre.io/ns">
190*a1a3b679SAndreas Boehler <s:child>value</s:child>
191*a1a3b679SAndreas Boehler</s:root>
192*a1a3b679SAndreas Boehler
193*a1a3b679SAndreas BoehlerXML;
194*a1a3b679SAndreas Boehler        $this->assertEquals(
195*a1a3b679SAndreas Boehler            $expected,
196*a1a3b679SAndreas Boehler            $result
197*a1a3b679SAndreas Boehler        );
198*a1a3b679SAndreas Boehler
199*a1a3b679SAndreas Boehler    }
200*a1a3b679SAndreas Boehler
201*a1a3b679SAndreas Boehler    function testParseClarkNotation() {
202*a1a3b679SAndreas Boehler
203*a1a3b679SAndreas Boehler        $this->assertEquals([
204*a1a3b679SAndreas Boehler            'http://sabredav.org/ns',
205*a1a3b679SAndreas Boehler            'elem',
206*a1a3b679SAndreas Boehler        ], Service::parseClarkNotation('{http://sabredav.org/ns}elem'));
207*a1a3b679SAndreas Boehler
208*a1a3b679SAndreas Boehler    }
209*a1a3b679SAndreas Boehler
210*a1a3b679SAndreas Boehler    /**
211*a1a3b679SAndreas Boehler     * @expectedException \InvalidArgumentException
212*a1a3b679SAndreas Boehler     */
213*a1a3b679SAndreas Boehler    function testParseClarkNotationFail() {
214*a1a3b679SAndreas Boehler
215*a1a3b679SAndreas Boehler        Service::parseClarkNotation('http://sabredav.org/ns}elem');
216*a1a3b679SAndreas Boehler
217*a1a3b679SAndreas Boehler    }
218*a1a3b679SAndreas Boehler
219*a1a3b679SAndreas Boehler}
220