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