xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/InboxTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV\Schedule;
4*a1a3b679SAndreas Boehleruse Sabre\CalDAV;
5*a1a3b679SAndreas Boehleruse Sabre\DAV;
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehlerclass InboxTest extends \PHPUnit_Framework_TestCase {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler    function testSetup() {
10*a1a3b679SAndreas Boehler
11*a1a3b679SAndreas Boehler        $inbox = new Inbox(
12*a1a3b679SAndreas Boehler            new CalDAV\Backend\MockScheduling(),
13*a1a3b679SAndreas Boehler            'principals/user1'
14*a1a3b679SAndreas Boehler        );
15*a1a3b679SAndreas Boehler        $this->assertEquals('inbox', $inbox->getName());
16*a1a3b679SAndreas Boehler        $this->assertEquals(array(), $inbox->getChildren());
17*a1a3b679SAndreas Boehler        $this->assertEquals('principals/user1', $inbox->getOwner());
18*a1a3b679SAndreas Boehler        $this->assertEquals(null, $inbox->getGroup());
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler        $this->assertEquals(array(
21*a1a3b679SAndreas Boehler            array(
22*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
23*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
24*a1a3b679SAndreas Boehler                'protected' => true,
25*a1a3b679SAndreas Boehler            ),
26*a1a3b679SAndreas Boehler            array(
27*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}write-properties',
28*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
29*a1a3b679SAndreas Boehler                'protected' => true,
30*a1a3b679SAndreas Boehler            ),
31*a1a3b679SAndreas Boehler            array(
32*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}unbind',
33*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
34*a1a3b679SAndreas Boehler                'protected' => true,
35*a1a3b679SAndreas Boehler            ),
36*a1a3b679SAndreas Boehler            array(
37*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
38*a1a3b679SAndreas Boehler                'principal' => 'principals/user1/calendar-proxy-read',
39*a1a3b679SAndreas Boehler                'protected' => true,
40*a1a3b679SAndreas Boehler            ),
41*a1a3b679SAndreas Boehler            array(
42*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
43*a1a3b679SAndreas Boehler                'principal' => 'principals/user1/calendar-proxy-write',
44*a1a3b679SAndreas Boehler                'protected' => true,
45*a1a3b679SAndreas Boehler            ),
46*a1a3b679SAndreas Boehler            array(
47*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}unbind',
48*a1a3b679SAndreas Boehler                'principal' => 'principals/user1/calendar-proxy-write',
49*a1a3b679SAndreas Boehler                'protected' => true,
50*a1a3b679SAndreas Boehler            ),
51*a1a3b679SAndreas Boehler            array(
52*a1a3b679SAndreas Boehler                'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-deliver-invite',
53*a1a3b679SAndreas Boehler                'principal' => '{DAV:}authenticated',
54*a1a3b679SAndreas Boehler                'protected' => true,
55*a1a3b679SAndreas Boehler            ),
56*a1a3b679SAndreas Boehler            array(
57*a1a3b679SAndreas Boehler                'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-deliver-reply',
58*a1a3b679SAndreas Boehler                'principal' => '{DAV:}authenticated',
59*a1a3b679SAndreas Boehler                'protected' => true,
60*a1a3b679SAndreas Boehler            ),
61*a1a3b679SAndreas Boehler        ), $inbox->getACL());
62*a1a3b679SAndreas Boehler
63*a1a3b679SAndreas Boehler        $ok = false;
64*a1a3b679SAndreas Boehler        try {
65*a1a3b679SAndreas Boehler            $inbox->setACL(array());
66*a1a3b679SAndreas Boehler        } catch (DAV\Exception\MethodNotAllowed $e) {
67*a1a3b679SAndreas Boehler            $ok = true;
68*a1a3b679SAndreas Boehler        }
69*a1a3b679SAndreas Boehler        if (!$ok) {
70*a1a3b679SAndreas Boehler            $this->fail('Exception was not emitted');
71*a1a3b679SAndreas Boehler        }
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler    }
74*a1a3b679SAndreas Boehler
75*a1a3b679SAndreas Boehler    function testGetSupportedPrivilegeSet() {
76*a1a3b679SAndreas Boehler
77*a1a3b679SAndreas Boehler        $inbox = new Inbox(
78*a1a3b679SAndreas Boehler            new CalDAV\Backend\MockScheduling(),
79*a1a3b679SAndreas Boehler            'principals/user1'
80*a1a3b679SAndreas Boehler        );
81*a1a3b679SAndreas Boehler        $r = $inbox->getSupportedPrivilegeSet();
82*a1a3b679SAndreas Boehler
83*a1a3b679SAndreas Boehler        $ok = 0;
84*a1a3b679SAndreas Boehler        foreach($r['aggregates'] as $priv) {
85*a1a3b679SAndreas Boehler
86*a1a3b679SAndreas Boehler            if ($priv['privilege'] == '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-deliver') {
87*a1a3b679SAndreas Boehler                $ok++;
88*a1a3b679SAndreas Boehler                foreach($priv['aggregates'] as $subpriv) {
89*a1a3b679SAndreas Boehler                    if ($subpriv['privilege'] == '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-deliver-invite') {
90*a1a3b679SAndreas Boehler                        $ok++;
91*a1a3b679SAndreas Boehler                    }
92*a1a3b679SAndreas Boehler                    if ($subpriv['privilege'] == '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-deliver-reply') {
93*a1a3b679SAndreas Boehler                        $ok++;
94*a1a3b679SAndreas Boehler                    }
95*a1a3b679SAndreas Boehler                }
96*a1a3b679SAndreas Boehler            }
97*a1a3b679SAndreas Boehler        }
98*a1a3b679SAndreas Boehler
99*a1a3b679SAndreas Boehler        $this->assertEquals(3, $ok, "We're missing one or more privileges");
100*a1a3b679SAndreas Boehler
101*a1a3b679SAndreas Boehler    }
102*a1a3b679SAndreas Boehler
103*a1a3b679SAndreas Boehler    /**
104*a1a3b679SAndreas Boehler     * @depends testSetup
105*a1a3b679SAndreas Boehler     */
106*a1a3b679SAndreas Boehler    function testGetChildren() {
107*a1a3b679SAndreas Boehler
108*a1a3b679SAndreas Boehler        $backend = new CalDAV\Backend\MockScheduling();
109*a1a3b679SAndreas Boehler        $inbox = new Inbox(
110*a1a3b679SAndreas Boehler            $backend,
111*a1a3b679SAndreas Boehler            'principals/user1'
112*a1a3b679SAndreas Boehler        );
113*a1a3b679SAndreas Boehler
114*a1a3b679SAndreas Boehler        $this->assertEquals(
115*a1a3b679SAndreas Boehler            0,
116*a1a3b679SAndreas Boehler            count($inbox->getChildren())
117*a1a3b679SAndreas Boehler        );
118*a1a3b679SAndreas Boehler        $backend->createSchedulingObject('principals/user1', 'schedule1.ics', "BEGIN:VCALENDAR\r\nEND:VCALENDAR");
119*a1a3b679SAndreas Boehler        $this->assertEquals(
120*a1a3b679SAndreas Boehler            1,
121*a1a3b679SAndreas Boehler            count($inbox->getChildren())
122*a1a3b679SAndreas Boehler        );
123*a1a3b679SAndreas Boehler        $this->assertInstanceOf('Sabre\CalDAV\Schedule\SchedulingObject', $inbox->getChildren()[0]);
124*a1a3b679SAndreas Boehler        $this->assertEquals(
125*a1a3b679SAndreas Boehler            'schedule1.ics',
126*a1a3b679SAndreas Boehler            $inbox->getChildren()[0]->getName()
127*a1a3b679SAndreas Boehler        );
128*a1a3b679SAndreas Boehler
129*a1a3b679SAndreas Boehler    }
130*a1a3b679SAndreas Boehler
131*a1a3b679SAndreas Boehler    /**
132*a1a3b679SAndreas Boehler     * @depends testGetChildren
133*a1a3b679SAndreas Boehler     */
134*a1a3b679SAndreas Boehler    function testCreateFile() {
135*a1a3b679SAndreas Boehler
136*a1a3b679SAndreas Boehler        $backend = new CalDAV\Backend\MockScheduling();
137*a1a3b679SAndreas Boehler        $inbox = new Inbox(
138*a1a3b679SAndreas Boehler            $backend,
139*a1a3b679SAndreas Boehler            'principals/user1'
140*a1a3b679SAndreas Boehler        );
141*a1a3b679SAndreas Boehler
142*a1a3b679SAndreas Boehler        $this->assertEquals(
143*a1a3b679SAndreas Boehler            0,
144*a1a3b679SAndreas Boehler            count($inbox->getChildren())
145*a1a3b679SAndreas Boehler        );
146*a1a3b679SAndreas Boehler        $inbox->createFile('schedule1.ics', "BEGIN:VCALENDAR\r\nEND:VCALENDAR");
147*a1a3b679SAndreas Boehler        $this->assertEquals(
148*a1a3b679SAndreas Boehler            1,
149*a1a3b679SAndreas Boehler            count($inbox->getChildren())
150*a1a3b679SAndreas Boehler        );
151*a1a3b679SAndreas Boehler        $this->assertInstanceOf('Sabre\CalDAV\Schedule\SchedulingObject', $inbox->getChildren()[0]);
152*a1a3b679SAndreas Boehler        $this->assertEquals(
153*a1a3b679SAndreas Boehler            'schedule1.ics',
154*a1a3b679SAndreas Boehler            $inbox->getChildren()[0]->getName()
155*a1a3b679SAndreas Boehler        );
156*a1a3b679SAndreas Boehler
157*a1a3b679SAndreas Boehler    }
158*a1a3b679SAndreas Boehler
159*a1a3b679SAndreas Boehler    /**
160*a1a3b679SAndreas Boehler     * @depends testSetup
161*a1a3b679SAndreas Boehler     */
162*a1a3b679SAndreas Boehler    function testCalendarQuery() {
163*a1a3b679SAndreas Boehler
164*a1a3b679SAndreas Boehler        $backend = new CalDAV\Backend\MockScheduling();
165*a1a3b679SAndreas Boehler        $inbox = new Inbox(
166*a1a3b679SAndreas Boehler            $backend,
167*a1a3b679SAndreas Boehler            'principals/user1'
168*a1a3b679SAndreas Boehler        );
169*a1a3b679SAndreas Boehler
170*a1a3b679SAndreas Boehler        $this->assertEquals(
171*a1a3b679SAndreas Boehler            0,
172*a1a3b679SAndreas Boehler            count($inbox->getChildren())
173*a1a3b679SAndreas Boehler        );
174*a1a3b679SAndreas Boehler        $backend->createSchedulingObject('principals/user1', 'schedule1.ics', "BEGIN:VCALENDAR\r\nEND:VCALENDAR");
175*a1a3b679SAndreas Boehler        $this->assertEquals(
176*a1a3b679SAndreas Boehler            ['schedule1.ics'],
177*a1a3b679SAndreas Boehler            $inbox->calendarQuery([
178*a1a3b679SAndreas Boehler                'name' => 'VCALENDAR',
179*a1a3b679SAndreas Boehler                'comp-filters' => [],
180*a1a3b679SAndreas Boehler                'prop-filters' => [],
181*a1a3b679SAndreas Boehler                'is-not-defined' => false
182*a1a3b679SAndreas Boehler            ])
183*a1a3b679SAndreas Boehler        );
184*a1a3b679SAndreas Boehler
185*a1a3b679SAndreas Boehler    }
186*a1a3b679SAndreas Boehler}
187