xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CalDAV/Subscriptions/SubscriptionTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV\Subscriptions;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse Sabre\DAV\Xml\Property\Href;
6*a1a3b679SAndreas Boehleruse Sabre\DAV\PropPatch;
7*a1a3b679SAndreas Boehler
8*a1a3b679SAndreas Boehlerclass SubscriptionTest extends \PHPUnit_Framework_TestCase {
9*a1a3b679SAndreas Boehler
10*a1a3b679SAndreas Boehler    protected $backend;
11*a1a3b679SAndreas Boehler
12*a1a3b679SAndreas Boehler    function getSub($override = []) {
13*a1a3b679SAndreas Boehler
14*a1a3b679SAndreas Boehler        $caldavBackend = new \Sabre\CalDAV\Backend\MockSubscriptionSupport([],[]);
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler        $info = [
17*a1a3b679SAndreas Boehler            '{http://calendarserver.org/ns/}source' => new Href('http://example.org/src', false),
18*a1a3b679SAndreas Boehler            'lastmodified' => date('2013-04-06 11:40:00'), // tomorrow is my birthday!
19*a1a3b679SAndreas Boehler            '{DAV:}displayname' => 'displayname',
20*a1a3b679SAndreas Boehler        ];
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler
23*a1a3b679SAndreas Boehler        $id = $caldavBackend->createSubscription('principals/user1', 'uri', array_merge($info, $override));
24*a1a3b679SAndreas Boehler        $subInfo = $caldavBackend->getSubscriptionsForUser('principals/user1');
25*a1a3b679SAndreas Boehler
26*a1a3b679SAndreas Boehler        $this->assertEquals(1, count($subInfo));
27*a1a3b679SAndreas Boehler        $subscription = new Subscription($caldavBackend, $subInfo[0]);
28*a1a3b679SAndreas Boehler
29*a1a3b679SAndreas Boehler        $this->backend = $caldavBackend;
30*a1a3b679SAndreas Boehler        return $subscription;
31*a1a3b679SAndreas Boehler
32*a1a3b679SAndreas Boehler    }
33*a1a3b679SAndreas Boehler
34*a1a3b679SAndreas Boehler    function testValues() {
35*a1a3b679SAndreas Boehler
36*a1a3b679SAndreas Boehler        $sub = $this->getSub();
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler        $this->assertEquals('uri', $sub->getName());
39*a1a3b679SAndreas Boehler        $this->assertEquals(date('2013-04-06 11:40:00'), $sub->getLastModified());
40*a1a3b679SAndreas Boehler        $this->assertEquals([], $sub->getChildren());
41*a1a3b679SAndreas Boehler
42*a1a3b679SAndreas Boehler        $this->assertEquals(
43*a1a3b679SAndreas Boehler            [
44*a1a3b679SAndreas Boehler                '{DAV:}displayname' => 'displayname',
45*a1a3b679SAndreas Boehler                '{http://calendarserver.org/ns/}source' => new Href('http://example.org/src',false),
46*a1a3b679SAndreas Boehler            ],
47*a1a3b679SAndreas Boehler            $sub->getProperties(['{DAV:}displayname', '{http://calendarserver.org/ns/}source'])
48*a1a3b679SAndreas Boehler        );
49*a1a3b679SAndreas Boehler
50*a1a3b679SAndreas Boehler        $this->assertEquals('principals/user1', $sub->getOwner());
51*a1a3b679SAndreas Boehler        $this->assertNull($sub->getGroup());
52*a1a3b679SAndreas Boehler
53*a1a3b679SAndreas Boehler        $acl = [
54*a1a3b679SAndreas Boehler            [
55*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
56*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
57*a1a3b679SAndreas Boehler                'protected' => true,
58*a1a3b679SAndreas Boehler            ],
59*a1a3b679SAndreas Boehler            [
60*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}write',
61*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
62*a1a3b679SAndreas Boehler                'protected' => true,
63*a1a3b679SAndreas Boehler            ],
64*a1a3b679SAndreas Boehler            [
65*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
66*a1a3b679SAndreas Boehler                'principal' => 'principals/user1/calendar-proxy-write',
67*a1a3b679SAndreas Boehler                'protected' => true,
68*a1a3b679SAndreas Boehler            ],
69*a1a3b679SAndreas Boehler            [
70*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}write',
71*a1a3b679SAndreas Boehler                'principal' => 'principals/user1/calendar-proxy-write',
72*a1a3b679SAndreas Boehler                'protected' => true,
73*a1a3b679SAndreas Boehler            ],
74*a1a3b679SAndreas Boehler            [
75*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
76*a1a3b679SAndreas Boehler                'principal' => 'principals/user1/calendar-proxy-read',
77*a1a3b679SAndreas Boehler                'protected' => true,
78*a1a3b679SAndreas Boehler            ]
79*a1a3b679SAndreas Boehler        ];
80*a1a3b679SAndreas Boehler        $this->assertEquals($acl, $sub->getACL());
81*a1a3b679SAndreas Boehler
82*a1a3b679SAndreas Boehler        $this->assertNull($sub->getSupportedPrivilegeSet());
83*a1a3b679SAndreas Boehler
84*a1a3b679SAndreas Boehler    }
85*a1a3b679SAndreas Boehler
86*a1a3b679SAndreas Boehler    function testValues2() {
87*a1a3b679SAndreas Boehler
88*a1a3b679SAndreas Boehler        $sub = $this->getSub([
89*a1a3b679SAndreas Boehler            'lastmodified' => null,
90*a1a3b679SAndreas Boehler        ]);
91*a1a3b679SAndreas Boehler
92*a1a3b679SAndreas Boehler        $this->assertEquals(null, $sub->getLastModified());
93*a1a3b679SAndreas Boehler
94*a1a3b679SAndreas Boehler    }
95*a1a3b679SAndreas Boehler
96*a1a3b679SAndreas Boehler    /**
97*a1a3b679SAndreas Boehler     * @expectedException \Sabre\DAV\Exception\MethodNotAllowed
98*a1a3b679SAndreas Boehler     */
99*a1a3b679SAndreas Boehler    function testSetACL() {
100*a1a3b679SAndreas Boehler
101*a1a3b679SAndreas Boehler        $sub = $this->getSub();
102*a1a3b679SAndreas Boehler        $sub->setACL([]);
103*a1a3b679SAndreas Boehler
104*a1a3b679SAndreas Boehler    }
105*a1a3b679SAndreas Boehler
106*a1a3b679SAndreas Boehler    function testDelete() {
107*a1a3b679SAndreas Boehler
108*a1a3b679SAndreas Boehler        $sub = $this->getSub();
109*a1a3b679SAndreas Boehler        $sub->delete();
110*a1a3b679SAndreas Boehler
111*a1a3b679SAndreas Boehler        $this->assertEquals([], $this->backend->getSubscriptionsForUser('principals1/user1'));
112*a1a3b679SAndreas Boehler
113*a1a3b679SAndreas Boehler    }
114*a1a3b679SAndreas Boehler
115*a1a3b679SAndreas Boehler    function testUpdateProperties() {
116*a1a3b679SAndreas Boehler
117*a1a3b679SAndreas Boehler        $sub = $this->getSub();
118*a1a3b679SAndreas Boehler        $propPatch = new PropPatch([
119*a1a3b679SAndreas Boehler            '{DAV:}displayname' => 'foo',
120*a1a3b679SAndreas Boehler        ]);
121*a1a3b679SAndreas Boehler        $sub->propPatch($propPatch);
122*a1a3b679SAndreas Boehler        $this->assertTrue($propPatch->commit());
123*a1a3b679SAndreas Boehler
124*a1a3b679SAndreas Boehler        $this->assertEquals(
125*a1a3b679SAndreas Boehler            'foo',
126*a1a3b679SAndreas Boehler            $this->backend->getSubscriptionsForUser('principals/user1')[0]['{DAV:}displayname']
127*a1a3b679SAndreas Boehler        );
128*a1a3b679SAndreas Boehler
129*a1a3b679SAndreas Boehler    }
130*a1a3b679SAndreas Boehler
131*a1a3b679SAndreas Boehler    /**
132*a1a3b679SAndreas Boehler     * @expectedException \InvalidArgumentException
133*a1a3b679SAndreas Boehler     */
134*a1a3b679SAndreas Boehler    function testBadConstruct() {
135*a1a3b679SAndreas Boehler
136*a1a3b679SAndreas Boehler        $caldavBackend = new \Sabre\CalDAV\Backend\MockSubscriptionSupport([],[]);
137*a1a3b679SAndreas Boehler        new Subscription($caldavBackend, []);
138*a1a3b679SAndreas Boehler
139*a1a3b679SAndreas Boehler    }
140*a1a3b679SAndreas Boehler
141*a1a3b679SAndreas Boehler}
142