xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/DAV/GetIfConditionsTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\DAV;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse Sabre\HTTP;
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehlerrequire_once 'Sabre/HTTP/ResponseMock.php';
8*a1a3b679SAndreas Boehlerrequire_once 'Sabre/DAV/AbstractServer.php';
9*a1a3b679SAndreas Boehler
10*a1a3b679SAndreas Boehlerclass GetIfConditionsTest extends AbstractServer {
11*a1a3b679SAndreas Boehler
12*a1a3b679SAndreas Boehler    function testNoConditions() {
13*a1a3b679SAndreas Boehler
14*a1a3b679SAndreas Boehler        $request = new HTTP\Request();
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
17*a1a3b679SAndreas Boehler        $this->assertEquals(array(),$conditions);
18*a1a3b679SAndreas Boehler
19*a1a3b679SAndreas Boehler    }
20*a1a3b679SAndreas Boehler
21*a1a3b679SAndreas Boehler    function testLockToken() {
22*a1a3b679SAndreas Boehler
23*a1a3b679SAndreas Boehler        $request = new HTTP\Request('GET', '/path/', ['If' => '(<opaquelocktoken:token1>)']);
24*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
25*a1a3b679SAndreas Boehler
26*a1a3b679SAndreas Boehler        $compare = array(
27*a1a3b679SAndreas Boehler
28*a1a3b679SAndreas Boehler            array(
29*a1a3b679SAndreas Boehler                'uri' => 'path',
30*a1a3b679SAndreas Boehler                'tokens' => array(
31*a1a3b679SAndreas Boehler                    array(
32*a1a3b679SAndreas Boehler                        'negate' => false,
33*a1a3b679SAndreas Boehler                        'token' => 'opaquelocktoken:token1',
34*a1a3b679SAndreas Boehler                        'etag' => '',
35*a1a3b679SAndreas Boehler                    ),
36*a1a3b679SAndreas Boehler                ),
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler            ),
39*a1a3b679SAndreas Boehler
40*a1a3b679SAndreas Boehler        );
41*a1a3b679SAndreas Boehler
42*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
43*a1a3b679SAndreas Boehler
44*a1a3b679SAndreas Boehler    }
45*a1a3b679SAndreas Boehler
46*a1a3b679SAndreas Boehler    function testNotLockToken() {
47*a1a3b679SAndreas Boehler
48*a1a3b679SAndreas Boehler        $serverVars = array(
49*a1a3b679SAndreas Boehler            'HTTP_IF' => '(Not <opaquelocktoken:token1>)',
50*a1a3b679SAndreas Boehler            'REQUEST_URI' => '/bla'
51*a1a3b679SAndreas Boehler        );
52*a1a3b679SAndreas Boehler
53*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
54*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
55*a1a3b679SAndreas Boehler
56*a1a3b679SAndreas Boehler        $compare = array(
57*a1a3b679SAndreas Boehler
58*a1a3b679SAndreas Boehler            array(
59*a1a3b679SAndreas Boehler                'uri' => 'bla',
60*a1a3b679SAndreas Boehler                'tokens' => array(
61*a1a3b679SAndreas Boehler                    array(
62*a1a3b679SAndreas Boehler                        'negate' => true,
63*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token1',
64*a1a3b679SAndreas Boehler                        'etag'   => '',
65*a1a3b679SAndreas Boehler                    ),
66*a1a3b679SAndreas Boehler                ),
67*a1a3b679SAndreas Boehler
68*a1a3b679SAndreas Boehler            ),
69*a1a3b679SAndreas Boehler
70*a1a3b679SAndreas Boehler        );
71*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler    }
74*a1a3b679SAndreas Boehler
75*a1a3b679SAndreas Boehler    function testLockTokenUrl() {
76*a1a3b679SAndreas Boehler
77*a1a3b679SAndreas Boehler        $serverVars = array(
78*a1a3b679SAndreas Boehler            'HTTP_IF' => '<http://www.example.com/> (<opaquelocktoken:token1>)',
79*a1a3b679SAndreas Boehler        );
80*a1a3b679SAndreas Boehler
81*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
82*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
83*a1a3b679SAndreas Boehler
84*a1a3b679SAndreas Boehler        $compare = array(
85*a1a3b679SAndreas Boehler
86*a1a3b679SAndreas Boehler            array(
87*a1a3b679SAndreas Boehler                'uri' => '',
88*a1a3b679SAndreas Boehler                'tokens' => array(
89*a1a3b679SAndreas Boehler                    array(
90*a1a3b679SAndreas Boehler                        'negate' => false,
91*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token1',
92*a1a3b679SAndreas Boehler                        'etag'   => '',
93*a1a3b679SAndreas Boehler                    ),
94*a1a3b679SAndreas Boehler                ),
95*a1a3b679SAndreas Boehler
96*a1a3b679SAndreas Boehler            ),
97*a1a3b679SAndreas Boehler
98*a1a3b679SAndreas Boehler        );
99*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
100*a1a3b679SAndreas Boehler
101*a1a3b679SAndreas Boehler    }
102*a1a3b679SAndreas Boehler
103*a1a3b679SAndreas Boehler    function test2LockTokens() {
104*a1a3b679SAndreas Boehler
105*a1a3b679SAndreas Boehler        $serverVars = array(
106*a1a3b679SAndreas Boehler            'HTTP_IF' => '(<opaquelocktoken:token1>) (Not <opaquelocktoken:token2>)',
107*a1a3b679SAndreas Boehler            'REQUEST_URI' => '/bla',
108*a1a3b679SAndreas Boehler        );
109*a1a3b679SAndreas Boehler
110*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
111*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
112*a1a3b679SAndreas Boehler
113*a1a3b679SAndreas Boehler        $compare = array(
114*a1a3b679SAndreas Boehler
115*a1a3b679SAndreas Boehler            array(
116*a1a3b679SAndreas Boehler                'uri' => 'bla',
117*a1a3b679SAndreas Boehler                'tokens' => array(
118*a1a3b679SAndreas Boehler                    array(
119*a1a3b679SAndreas Boehler                        'negate' => false,
120*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token1',
121*a1a3b679SAndreas Boehler                        'etag'   => '',
122*a1a3b679SAndreas Boehler                    ),
123*a1a3b679SAndreas Boehler                    array(
124*a1a3b679SAndreas Boehler                        'negate' => true,
125*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token2',
126*a1a3b679SAndreas Boehler                        'etag'   => '',
127*a1a3b679SAndreas Boehler                    ),
128*a1a3b679SAndreas Boehler                ),
129*a1a3b679SAndreas Boehler
130*a1a3b679SAndreas Boehler            ),
131*a1a3b679SAndreas Boehler
132*a1a3b679SAndreas Boehler        );
133*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
134*a1a3b679SAndreas Boehler
135*a1a3b679SAndreas Boehler    }
136*a1a3b679SAndreas Boehler
137*a1a3b679SAndreas Boehler    function test2UriLockTokens() {
138*a1a3b679SAndreas Boehler
139*a1a3b679SAndreas Boehler        $serverVars = array(
140*a1a3b679SAndreas Boehler            'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1>) <http://www.example.org/node2> (Not <opaquelocktoken:token2>)',
141*a1a3b679SAndreas Boehler        );
142*a1a3b679SAndreas Boehler
143*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
144*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
145*a1a3b679SAndreas Boehler
146*a1a3b679SAndreas Boehler        $compare = array(
147*a1a3b679SAndreas Boehler
148*a1a3b679SAndreas Boehler            array(
149*a1a3b679SAndreas Boehler                'uri' => 'node1',
150*a1a3b679SAndreas Boehler                'tokens' => array(
151*a1a3b679SAndreas Boehler                    array(
152*a1a3b679SAndreas Boehler                        'negate' => false,
153*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token1',
154*a1a3b679SAndreas Boehler                        'etag'   => '',
155*a1a3b679SAndreas Boehler                    ),
156*a1a3b679SAndreas Boehler                 ),
157*a1a3b679SAndreas Boehler            ),
158*a1a3b679SAndreas Boehler            array(
159*a1a3b679SAndreas Boehler                'uri' => 'node2',
160*a1a3b679SAndreas Boehler                'tokens' => array(
161*a1a3b679SAndreas Boehler                    array(
162*a1a3b679SAndreas Boehler                        'negate' => true,
163*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token2',
164*a1a3b679SAndreas Boehler                        'etag'   => '',
165*a1a3b679SAndreas Boehler                    ),
166*a1a3b679SAndreas Boehler                ),
167*a1a3b679SAndreas Boehler
168*a1a3b679SAndreas Boehler            ),
169*a1a3b679SAndreas Boehler
170*a1a3b679SAndreas Boehler        );
171*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
172*a1a3b679SAndreas Boehler
173*a1a3b679SAndreas Boehler    }
174*a1a3b679SAndreas Boehler
175*a1a3b679SAndreas Boehler    function test2UriMultiLockTokens() {
176*a1a3b679SAndreas Boehler
177*a1a3b679SAndreas Boehler        $serverVars = array(
178*a1a3b679SAndreas Boehler            'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1>) (<opaquelocktoken:token2>) <http://www.example.org/node2> (Not <opaquelocktoken:token3>)',
179*a1a3b679SAndreas Boehler        );
180*a1a3b679SAndreas Boehler
181*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
182*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
183*a1a3b679SAndreas Boehler
184*a1a3b679SAndreas Boehler        $compare = array(
185*a1a3b679SAndreas Boehler
186*a1a3b679SAndreas Boehler            array(
187*a1a3b679SAndreas Boehler                'uri' => 'node1',
188*a1a3b679SAndreas Boehler                'tokens' => array(
189*a1a3b679SAndreas Boehler                    array(
190*a1a3b679SAndreas Boehler                        'negate' => false,
191*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token1',
192*a1a3b679SAndreas Boehler                        'etag'   => '',
193*a1a3b679SAndreas Boehler                    ),
194*a1a3b679SAndreas Boehler                    array(
195*a1a3b679SAndreas Boehler                        'negate' => false,
196*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token2',
197*a1a3b679SAndreas Boehler                        'etag'   => '',
198*a1a3b679SAndreas Boehler                    ),
199*a1a3b679SAndreas Boehler                 ),
200*a1a3b679SAndreas Boehler            ),
201*a1a3b679SAndreas Boehler            array(
202*a1a3b679SAndreas Boehler                'uri' => 'node2',
203*a1a3b679SAndreas Boehler                'tokens' => array(
204*a1a3b679SAndreas Boehler                    array(
205*a1a3b679SAndreas Boehler                        'negate' => true,
206*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token3',
207*a1a3b679SAndreas Boehler                        'etag'   => '',
208*a1a3b679SAndreas Boehler                    ),
209*a1a3b679SAndreas Boehler                ),
210*a1a3b679SAndreas Boehler
211*a1a3b679SAndreas Boehler            ),
212*a1a3b679SAndreas Boehler
213*a1a3b679SAndreas Boehler        );
214*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
215*a1a3b679SAndreas Boehler
216*a1a3b679SAndreas Boehler    }
217*a1a3b679SAndreas Boehler
218*a1a3b679SAndreas Boehler    function testEtag() {
219*a1a3b679SAndreas Boehler
220*a1a3b679SAndreas Boehler        $serverVars = array(
221*a1a3b679SAndreas Boehler            'HTTP_IF' => '(["etag1"])',
222*a1a3b679SAndreas Boehler            'REQUEST_URI' => '/foo',
223*a1a3b679SAndreas Boehler        );
224*a1a3b679SAndreas Boehler
225*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
226*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
227*a1a3b679SAndreas Boehler
228*a1a3b679SAndreas Boehler        $compare = array(
229*a1a3b679SAndreas Boehler
230*a1a3b679SAndreas Boehler            array(
231*a1a3b679SAndreas Boehler                'uri' => 'foo',
232*a1a3b679SAndreas Boehler                'tokens' => array(
233*a1a3b679SAndreas Boehler                    array(
234*a1a3b679SAndreas Boehler                        'negate' => false,
235*a1a3b679SAndreas Boehler                        'token'  => '',
236*a1a3b679SAndreas Boehler                        'etag'   => '"etag1"',
237*a1a3b679SAndreas Boehler                    ),
238*a1a3b679SAndreas Boehler                 ),
239*a1a3b679SAndreas Boehler            ),
240*a1a3b679SAndreas Boehler
241*a1a3b679SAndreas Boehler        );
242*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
243*a1a3b679SAndreas Boehler
244*a1a3b679SAndreas Boehler    }
245*a1a3b679SAndreas Boehler
246*a1a3b679SAndreas Boehler    function test2Etags() {
247*a1a3b679SAndreas Boehler
248*a1a3b679SAndreas Boehler        $serverVars = array(
249*a1a3b679SAndreas Boehler            'HTTP_IF' => '<http://www.example.org/> (["etag1"]) (["etag2"])',
250*a1a3b679SAndreas Boehler        );
251*a1a3b679SAndreas Boehler
252*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
253*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
254*a1a3b679SAndreas Boehler
255*a1a3b679SAndreas Boehler        $compare = array(
256*a1a3b679SAndreas Boehler
257*a1a3b679SAndreas Boehler            array(
258*a1a3b679SAndreas Boehler                'uri' => '',
259*a1a3b679SAndreas Boehler                'tokens' => array(
260*a1a3b679SAndreas Boehler                    array(
261*a1a3b679SAndreas Boehler                        'negate' => false,
262*a1a3b679SAndreas Boehler                        'token'  => '',
263*a1a3b679SAndreas Boehler                        'etag'   => '"etag1"',
264*a1a3b679SAndreas Boehler                    ),
265*a1a3b679SAndreas Boehler                    array(
266*a1a3b679SAndreas Boehler                        'negate' => false,
267*a1a3b679SAndreas Boehler                        'token'  => '',
268*a1a3b679SAndreas Boehler                        'etag'   => '"etag2"',
269*a1a3b679SAndreas Boehler                    ),
270*a1a3b679SAndreas Boehler                 ),
271*a1a3b679SAndreas Boehler            ),
272*a1a3b679SAndreas Boehler
273*a1a3b679SAndreas Boehler        );
274*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
275*a1a3b679SAndreas Boehler
276*a1a3b679SAndreas Boehler    }
277*a1a3b679SAndreas Boehler
278*a1a3b679SAndreas Boehler    function testComplexIf() {
279*a1a3b679SAndreas Boehler
280*a1a3b679SAndreas Boehler        $serverVars = array(
281*a1a3b679SAndreas Boehler            'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1> ["etag1"]) ' .
282*a1a3b679SAndreas Boehler                         '(Not <opaquelocktoken:token2>) (["etag2"]) <http://www.example.org/node2> ' .
283*a1a3b679SAndreas Boehler                         '(<opaquelocktoken:token3>) (Not <opaquelocktoken:token4>) (["etag3"])',
284*a1a3b679SAndreas Boehler        );
285*a1a3b679SAndreas Boehler
286*a1a3b679SAndreas Boehler        $request = HTTP\Sapi::createFromServerArray($serverVars);
287*a1a3b679SAndreas Boehler        $conditions = $this->server->getIfConditions($request);
288*a1a3b679SAndreas Boehler
289*a1a3b679SAndreas Boehler        $compare = array(
290*a1a3b679SAndreas Boehler
291*a1a3b679SAndreas Boehler            array(
292*a1a3b679SAndreas Boehler                'uri' => 'node1',
293*a1a3b679SAndreas Boehler                'tokens' => array(
294*a1a3b679SAndreas Boehler                    array(
295*a1a3b679SAndreas Boehler                        'negate' => false,
296*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token1',
297*a1a3b679SAndreas Boehler                        'etag'   => '"etag1"',
298*a1a3b679SAndreas Boehler                    ),
299*a1a3b679SAndreas Boehler                    array(
300*a1a3b679SAndreas Boehler                        'negate' => true,
301*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token2',
302*a1a3b679SAndreas Boehler                        'etag'   => '',
303*a1a3b679SAndreas Boehler                    ),
304*a1a3b679SAndreas Boehler                    array(
305*a1a3b679SAndreas Boehler                        'negate' => false,
306*a1a3b679SAndreas Boehler                        'token'  => '',
307*a1a3b679SAndreas Boehler                        'etag'   => '"etag2"',
308*a1a3b679SAndreas Boehler                    ),
309*a1a3b679SAndreas Boehler                 ),
310*a1a3b679SAndreas Boehler            ),
311*a1a3b679SAndreas Boehler            array(
312*a1a3b679SAndreas Boehler                'uri' => 'node2',
313*a1a3b679SAndreas Boehler                'tokens' => array(
314*a1a3b679SAndreas Boehler                    array(
315*a1a3b679SAndreas Boehler                        'negate' => false,
316*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token3',
317*a1a3b679SAndreas Boehler                        'etag'   => '',
318*a1a3b679SAndreas Boehler                    ),
319*a1a3b679SAndreas Boehler                    array(
320*a1a3b679SAndreas Boehler                        'negate' => true,
321*a1a3b679SAndreas Boehler                        'token'  => 'opaquelocktoken:token4',
322*a1a3b679SAndreas Boehler                        'etag'   => '',
323*a1a3b679SAndreas Boehler                    ),
324*a1a3b679SAndreas Boehler                    array(
325*a1a3b679SAndreas Boehler                        'negate' => false,
326*a1a3b679SAndreas Boehler                        'token'  => '',
327*a1a3b679SAndreas Boehler                        'etag'   => '"etag3"',
328*a1a3b679SAndreas Boehler                    ),
329*a1a3b679SAndreas Boehler                 ),
330*a1a3b679SAndreas Boehler            ),
331*a1a3b679SAndreas Boehler
332*a1a3b679SAndreas Boehler        );
333*a1a3b679SAndreas Boehler        $this->assertEquals($compare,$conditions);
334*a1a3b679SAndreas Boehler
335*a1a3b679SAndreas Boehler    }
336*a1a3b679SAndreas Boehler
337*a1a3b679SAndreas Boehler}
338