xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\DAV;
4*a1a3b679SAndreas Boehleruse Sabre\HTTP;
5*a1a3b679SAndreas Boehler
6*a1a3b679SAndreas Boehlerclass ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
7*a1a3b679SAndreas Boehler
8*a1a3b679SAndreas Boehler    function testUpdatePropertiesFail() {
9*a1a3b679SAndreas Boehler
10*a1a3b679SAndreas Boehler        $tree = array(
11*a1a3b679SAndreas Boehler            new SimpleCollection('foo'),
12*a1a3b679SAndreas Boehler        );
13*a1a3b679SAndreas Boehler        $server = new Server($tree);
14*a1a3b679SAndreas Boehler
15*a1a3b679SAndreas Boehler        $result = $server->updateProperties('foo', array(
16*a1a3b679SAndreas Boehler            '{DAV:}foo' => 'bar'
17*a1a3b679SAndreas Boehler        ));
18*a1a3b679SAndreas Boehler
19*a1a3b679SAndreas Boehler        $expected = array(
20*a1a3b679SAndreas Boehler            '{DAV:}foo' => 403,
21*a1a3b679SAndreas Boehler        );
22*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $result);
23*a1a3b679SAndreas Boehler
24*a1a3b679SAndreas Boehler    }
25*a1a3b679SAndreas Boehler
26*a1a3b679SAndreas Boehler    function testUpdatePropertiesProtected() {
27*a1a3b679SAndreas Boehler
28*a1a3b679SAndreas Boehler        $tree = array(
29*a1a3b679SAndreas Boehler            new SimpleCollection('foo'),
30*a1a3b679SAndreas Boehler        );
31*a1a3b679SAndreas Boehler        $server = new Server($tree);
32*a1a3b679SAndreas Boehler
33*a1a3b679SAndreas Boehler        $server->on('propPatch', function($path, PropPatch $propPatch) {
34*a1a3b679SAndreas Boehler            $propPatch->handleRemaining(function() { return true; });
35*a1a3b679SAndreas Boehler        });
36*a1a3b679SAndreas Boehler        $result = $server->updateProperties('foo', array(
37*a1a3b679SAndreas Boehler            '{DAV:}getetag' => 'bla',
38*a1a3b679SAndreas Boehler            '{DAV:}foo' => 'bar'
39*a1a3b679SAndreas Boehler        ));
40*a1a3b679SAndreas Boehler
41*a1a3b679SAndreas Boehler        $expected = array(
42*a1a3b679SAndreas Boehler            '{DAV:}getetag' => 403,
43*a1a3b679SAndreas Boehler            '{DAV:}foo' => 424,
44*a1a3b679SAndreas Boehler        );
45*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $result);
46*a1a3b679SAndreas Boehler
47*a1a3b679SAndreas Boehler    }
48*a1a3b679SAndreas Boehler
49*a1a3b679SAndreas Boehler    function testUpdatePropertiesEventFail() {
50*a1a3b679SAndreas Boehler
51*a1a3b679SAndreas Boehler        $tree = array(
52*a1a3b679SAndreas Boehler            new SimpleCollection('foo'),
53*a1a3b679SAndreas Boehler        );
54*a1a3b679SAndreas Boehler        $server = new Server($tree);
55*a1a3b679SAndreas Boehler        $server->on('propPatch', function($path, PropPatch $propPatch) {
56*a1a3b679SAndreas Boehler            $propPatch->setResultCode('{DAV:}foo', 404);
57*a1a3b679SAndreas Boehler            $propPatch->handleRemaining(function() { return true; });
58*a1a3b679SAndreas Boehler        });
59*a1a3b679SAndreas Boehler
60*a1a3b679SAndreas Boehler        $result = $server->updateProperties('foo', array(
61*a1a3b679SAndreas Boehler            '{DAV:}foo' => 'bar',
62*a1a3b679SAndreas Boehler            '{DAV:}foo2' => 'bla',
63*a1a3b679SAndreas Boehler        ));
64*a1a3b679SAndreas Boehler
65*a1a3b679SAndreas Boehler        $expected = array(
66*a1a3b679SAndreas Boehler            '{DAV:}foo' => 404,
67*a1a3b679SAndreas Boehler            '{DAV:}foo2' => 424,
68*a1a3b679SAndreas Boehler        );
69*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $result);
70*a1a3b679SAndreas Boehler
71*a1a3b679SAndreas Boehler    }
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler    function updatePropFail(&$propertyDelta, &$result, $node) {
74*a1a3b679SAndreas Boehler
75*a1a3b679SAndreas Boehler        $result[404] = array(
76*a1a3b679SAndreas Boehler            '{DAV:}foo' => null,
77*a1a3b679SAndreas Boehler        );
78*a1a3b679SAndreas Boehler        unset($propertyDelta['{DAV:}foo']);
79*a1a3b679SAndreas Boehler        return false;
80*a1a3b679SAndreas Boehler
81*a1a3b679SAndreas Boehler    }
82*a1a3b679SAndreas Boehler
83*a1a3b679SAndreas Boehler
84*a1a3b679SAndreas Boehler    function testUpdatePropertiesEventSuccess() {
85*a1a3b679SAndreas Boehler
86*a1a3b679SAndreas Boehler        $tree = array(
87*a1a3b679SAndreas Boehler            new SimpleCollection('foo'),
88*a1a3b679SAndreas Boehler        );
89*a1a3b679SAndreas Boehler        $server = new Server($tree);
90*a1a3b679SAndreas Boehler        $server->on('propPatch', function($path, PropPatch $propPatch) {
91*a1a3b679SAndreas Boehler
92*a1a3b679SAndreas Boehler            $propPatch->handle(['{DAV:}foo', '{DAV:}foo2'], function() {
93*a1a3b679SAndreas Boehler                return [
94*a1a3b679SAndreas Boehler                    '{DAV:}foo' => 200,
95*a1a3b679SAndreas Boehler                    '{DAV:}foo2' => 201,
96*a1a3b679SAndreas Boehler                ];
97*a1a3b679SAndreas Boehler            });
98*a1a3b679SAndreas Boehler
99*a1a3b679SAndreas Boehler        });
100*a1a3b679SAndreas Boehler
101*a1a3b679SAndreas Boehler        $result = $server->updateProperties('foo', array(
102*a1a3b679SAndreas Boehler            '{DAV:}foo' => 'bar',
103*a1a3b679SAndreas Boehler            '{DAV:}foo2' => 'bla',
104*a1a3b679SAndreas Boehler        ));
105*a1a3b679SAndreas Boehler
106*a1a3b679SAndreas Boehler        $expected = array(
107*a1a3b679SAndreas Boehler            '{DAV:}foo' => 200,
108*a1a3b679SAndreas Boehler            '{DAV:}foo2' => 201,
109*a1a3b679SAndreas Boehler        );
110*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $result);
111*a1a3b679SAndreas Boehler
112*a1a3b679SAndreas Boehler    }
113*a1a3b679SAndreas Boehler
114*a1a3b679SAndreas Boehler    function updatePropSuccess(&$propertyDelta, &$result, $node) {
115*a1a3b679SAndreas Boehler
116*a1a3b679SAndreas Boehler        $result[200] = array(
117*a1a3b679SAndreas Boehler            '{DAV:}foo' => null,
118*a1a3b679SAndreas Boehler        );
119*a1a3b679SAndreas Boehler        $result[201] = array(
120*a1a3b679SAndreas Boehler            '{DAV:}foo2' => null,
121*a1a3b679SAndreas Boehler        );
122*a1a3b679SAndreas Boehler        unset($propertyDelta['{DAV:}foo']);
123*a1a3b679SAndreas Boehler        unset($propertyDelta['{DAV:}foo2']);
124*a1a3b679SAndreas Boehler        return;
125*a1a3b679SAndreas Boehler
126*a1a3b679SAndreas Boehler    }
127*a1a3b679SAndreas Boehler}
128