1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAVACL; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehlerclass SharedCalendarTest extends \PHPUnit_Framework_TestCase { 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehler protected $backend; 10*a1a3b679SAndreas Boehler 11*a1a3b679SAndreas Boehler function getInstance(array $props = null) { 12*a1a3b679SAndreas Boehler 13*a1a3b679SAndreas Boehler if (is_null($props)) { 14*a1a3b679SAndreas Boehler $props = array( 15*a1a3b679SAndreas Boehler 'id' => 1, 16*a1a3b679SAndreas Boehler '{http://calendarserver.org/ns/}shared-url' => 'calendars/owner/original', 17*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}owner-principal' => 'principals/owner', 18*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}read-only' => false, 19*a1a3b679SAndreas Boehler 'principaluri' => 'principals/sharee', 20*a1a3b679SAndreas Boehler ); 21*a1a3b679SAndreas Boehler } 22*a1a3b679SAndreas Boehler 23*a1a3b679SAndreas Boehler $this->backend = new Backend\MockSharing( 24*a1a3b679SAndreas Boehler array($props), 25*a1a3b679SAndreas Boehler array(), 26*a1a3b679SAndreas Boehler array() 27*a1a3b679SAndreas Boehler ); 28*a1a3b679SAndreas Boehler $this->backend->updateShares(1, array( 29*a1a3b679SAndreas Boehler array( 30*a1a3b679SAndreas Boehler 'href' => 'mailto:removeme@example.org', 31*a1a3b679SAndreas Boehler 'commonName' => 'To be removed', 32*a1a3b679SAndreas Boehler 'readOnly' => true, 33*a1a3b679SAndreas Boehler ), 34*a1a3b679SAndreas Boehler ), array()); 35*a1a3b679SAndreas Boehler 36*a1a3b679SAndreas Boehler return new SharedCalendar($this->backend, $props); 37*a1a3b679SAndreas Boehler 38*a1a3b679SAndreas Boehler } 39*a1a3b679SAndreas Boehler 40*a1a3b679SAndreas Boehler function testGetSharedUrl() { 41*a1a3b679SAndreas Boehler $this->assertEquals('calendars/owner/original', $this->getInstance()->getSharedUrl()); 42*a1a3b679SAndreas Boehler } 43*a1a3b679SAndreas Boehler 44*a1a3b679SAndreas Boehler function testGetShares() { 45*a1a3b679SAndreas Boehler 46*a1a3b679SAndreas Boehler $this->assertEquals(array(array( 47*a1a3b679SAndreas Boehler 'href' => 'mailto:removeme@example.org', 48*a1a3b679SAndreas Boehler 'commonName' => 'To be removed', 49*a1a3b679SAndreas Boehler 'readOnly' => true, 50*a1a3b679SAndreas Boehler 'status' => SharingPlugin::STATUS_NORESPONSE, 51*a1a3b679SAndreas Boehler )), $this->getInstance()->getShares()); 52*a1a3b679SAndreas Boehler 53*a1a3b679SAndreas Boehler } 54*a1a3b679SAndreas Boehler 55*a1a3b679SAndreas Boehler function testGetOwner() { 56*a1a3b679SAndreas Boehler $this->assertEquals('principals/owner', $this->getInstance()->getOwner()); 57*a1a3b679SAndreas Boehler } 58*a1a3b679SAndreas Boehler 59*a1a3b679SAndreas Boehler function testGetACL() { 60*a1a3b679SAndreas Boehler 61*a1a3b679SAndreas Boehler $expected = array( 62*a1a3b679SAndreas Boehler array( 63*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 64*a1a3b679SAndreas Boehler 'principal' => 'principals/owner', 65*a1a3b679SAndreas Boehler 'protected' => true, 66*a1a3b679SAndreas Boehler ), 67*a1a3b679SAndreas Boehler 68*a1a3b679SAndreas Boehler array( 69*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 70*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-write', 71*a1a3b679SAndreas Boehler 'protected' => true, 72*a1a3b679SAndreas Boehler ), 73*a1a3b679SAndreas Boehler array( 74*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 75*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-read', 76*a1a3b679SAndreas Boehler 'protected' => true, 77*a1a3b679SAndreas Boehler ), 78*a1a3b679SAndreas Boehler array( 79*a1a3b679SAndreas Boehler 'privilege' => '{' . Plugin::NS_CALDAV . '}read-free-busy', 80*a1a3b679SAndreas Boehler 'principal' => '{DAV:}authenticated', 81*a1a3b679SAndreas Boehler 'protected' => true, 82*a1a3b679SAndreas Boehler ), 83*a1a3b679SAndreas Boehler array( 84*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}write', 85*a1a3b679SAndreas Boehler 'principal' => 'principals/owner', 86*a1a3b679SAndreas Boehler 'protected' => true, 87*a1a3b679SAndreas Boehler ), 88*a1a3b679SAndreas Boehler array( 89*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}write', 90*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-write', 91*a1a3b679SAndreas Boehler 'protected' => true, 92*a1a3b679SAndreas Boehler ), 93*a1a3b679SAndreas Boehler array( 94*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 95*a1a3b679SAndreas Boehler 'principal' => 'principals/sharee', 96*a1a3b679SAndreas Boehler 'protected' => true, 97*a1a3b679SAndreas Boehler ), 98*a1a3b679SAndreas Boehler array( 99*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}write', 100*a1a3b679SAndreas Boehler 'principal' => 'principals/sharee', 101*a1a3b679SAndreas Boehler 'protected' => true, 102*a1a3b679SAndreas Boehler ), 103*a1a3b679SAndreas Boehler ); 104*a1a3b679SAndreas Boehler 105*a1a3b679SAndreas Boehler $this->assertEquals($expected, $this->getInstance()->getACL()); 106*a1a3b679SAndreas Boehler 107*a1a3b679SAndreas Boehler } 108*a1a3b679SAndreas Boehler 109*a1a3b679SAndreas Boehler function testGetChildACL() { 110*a1a3b679SAndreas Boehler 111*a1a3b679SAndreas Boehler $expected = array( 112*a1a3b679SAndreas Boehler array( 113*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 114*a1a3b679SAndreas Boehler 'principal' => 'principals/owner', 115*a1a3b679SAndreas Boehler 'protected' => true, 116*a1a3b679SAndreas Boehler ), 117*a1a3b679SAndreas Boehler array( 118*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 119*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-write', 120*a1a3b679SAndreas Boehler 'protected' => true, 121*a1a3b679SAndreas Boehler ), 122*a1a3b679SAndreas Boehler array( 123*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 124*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-read', 125*a1a3b679SAndreas Boehler 'protected' => true, 126*a1a3b679SAndreas Boehler ), 127*a1a3b679SAndreas Boehler array( 128*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}write', 129*a1a3b679SAndreas Boehler 'principal' => 'principals/owner', 130*a1a3b679SAndreas Boehler 'protected' => true, 131*a1a3b679SAndreas Boehler ), 132*a1a3b679SAndreas Boehler array( 133*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}write', 134*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-write', 135*a1a3b679SAndreas Boehler 'protected' => true, 136*a1a3b679SAndreas Boehler ), 137*a1a3b679SAndreas Boehler array( 138*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 139*a1a3b679SAndreas Boehler 'principal' => 'principals/sharee', 140*a1a3b679SAndreas Boehler 'protected' => true, 141*a1a3b679SAndreas Boehler ), 142*a1a3b679SAndreas Boehler array( 143*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}write', 144*a1a3b679SAndreas Boehler 'principal' => 'principals/sharee', 145*a1a3b679SAndreas Boehler 'protected' => true, 146*a1a3b679SAndreas Boehler ), 147*a1a3b679SAndreas Boehler ); 148*a1a3b679SAndreas Boehler 149*a1a3b679SAndreas Boehler $this->assertEquals($expected, $this->getInstance()->getChildACL()); 150*a1a3b679SAndreas Boehler 151*a1a3b679SAndreas Boehler } 152*a1a3b679SAndreas Boehler 153*a1a3b679SAndreas Boehler function testGetChildACLReadOnly() { 154*a1a3b679SAndreas Boehler 155*a1a3b679SAndreas Boehler $expected = array( 156*a1a3b679SAndreas Boehler array( 157*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 158*a1a3b679SAndreas Boehler 'principal' => 'principals/owner', 159*a1a3b679SAndreas Boehler 'protected' => true, 160*a1a3b679SAndreas Boehler ), 161*a1a3b679SAndreas Boehler array( 162*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 163*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-write', 164*a1a3b679SAndreas Boehler 'protected' => true, 165*a1a3b679SAndreas Boehler ), 166*a1a3b679SAndreas Boehler array( 167*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 168*a1a3b679SAndreas Boehler 'principal' => 'principals/owner/calendar-proxy-read', 169*a1a3b679SAndreas Boehler 'protected' => true, 170*a1a3b679SAndreas Boehler ), 171*a1a3b679SAndreas Boehler array( 172*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 173*a1a3b679SAndreas Boehler 'principal' => 'principals/sharee', 174*a1a3b679SAndreas Boehler 'protected' => true, 175*a1a3b679SAndreas Boehler ), 176*a1a3b679SAndreas Boehler ); 177*a1a3b679SAndreas Boehler 178*a1a3b679SAndreas Boehler $props = array( 179*a1a3b679SAndreas Boehler 'id' => 1, 180*a1a3b679SAndreas Boehler '{http://calendarserver.org/ns/}shared-url' => 'calendars/owner/original', 181*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}owner-principal' => 'principals/owner', 182*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}read-only' => true, 183*a1a3b679SAndreas Boehler 'principaluri' => 'principals/sharee', 184*a1a3b679SAndreas Boehler ); 185*a1a3b679SAndreas Boehler $this->assertEquals($expected, $this->getInstance($props)->getChildACL()); 186*a1a3b679SAndreas Boehler 187*a1a3b679SAndreas Boehler } 188*a1a3b679SAndreas Boehler 189*a1a3b679SAndreas Boehler /** 190*a1a3b679SAndreas Boehler * @expectedException InvalidArgumentException 191*a1a3b679SAndreas Boehler */ 192*a1a3b679SAndreas Boehler public function testCreateInstanceMissingArg() { 193*a1a3b679SAndreas Boehler 194*a1a3b679SAndreas Boehler $this->getInstance(array( 195*a1a3b679SAndreas Boehler 'id' => 1, 196*a1a3b679SAndreas Boehler '{http://calendarserver.org/ns/}shared-url' => 'calendars/owner/original', 197*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}read-only' => false, 198*a1a3b679SAndreas Boehler 'principaluri' => 'principals/sharee', 199*a1a3b679SAndreas Boehler )); 200*a1a3b679SAndreas Boehler 201*a1a3b679SAndreas Boehler } 202*a1a3b679SAndreas Boehler 203*a1a3b679SAndreas Boehler} 204