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