1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\CardDAV; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehleruse Sabre\DAV\Xml\Property\Href; 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehlerclass PluginTest extends AbstractPluginTest { 9*a1a3b679SAndreas Boehler 10*a1a3b679SAndreas Boehler function testConstruct() { 11*a1a3b679SAndreas Boehler 12*a1a3b679SAndreas Boehler $this->assertEquals('{' . Plugin::NS_CARDDAV . '}addressbook', $this->server->resourceTypeMapping['Sabre\\CardDAV\\IAddressBook']); 13*a1a3b679SAndreas Boehler 14*a1a3b679SAndreas Boehler $this->assertTrue(in_array('addressbook', $this->plugin->getFeatures())); 15*a1a3b679SAndreas Boehler $this->assertEquals('carddav', $this->plugin->getPluginInfo()['name']); 16*a1a3b679SAndreas Boehler 17*a1a3b679SAndreas Boehler } 18*a1a3b679SAndreas Boehler 19*a1a3b679SAndreas Boehler function testSupportedReportSet() { 20*a1a3b679SAndreas Boehler 21*a1a3b679SAndreas Boehler $this->assertEquals(array( 22*a1a3b679SAndreas Boehler '{' . Plugin::NS_CARDDAV . '}addressbook-multiget', 23*a1a3b679SAndreas Boehler '{' . Plugin::NS_CARDDAV . '}addressbook-query', 24*a1a3b679SAndreas Boehler ), $this->plugin->getSupportedReportSet('addressbooks/user1/book1')); 25*a1a3b679SAndreas Boehler 26*a1a3b679SAndreas Boehler } 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler function testSupportedReportSetEmpty() { 29*a1a3b679SAndreas Boehler 30*a1a3b679SAndreas Boehler $this->assertEquals(array( 31*a1a3b679SAndreas Boehler ), $this->plugin->getSupportedReportSet('')); 32*a1a3b679SAndreas Boehler 33*a1a3b679SAndreas Boehler } 34*a1a3b679SAndreas Boehler 35*a1a3b679SAndreas Boehler function testAddressBookHomeSet() { 36*a1a3b679SAndreas Boehler 37*a1a3b679SAndreas Boehler $result = $this->server->getProperties('principals/user1', array('{' . Plugin::NS_CARDDAV . '}addressbook-home-set')); 38*a1a3b679SAndreas Boehler 39*a1a3b679SAndreas Boehler $this->assertEquals(1, count($result)); 40*a1a3b679SAndreas Boehler $this->assertTrue(isset($result['{' . Plugin::NS_CARDDAV . '}addressbook-home-set'])); 41*a1a3b679SAndreas Boehler $this->assertEquals('addressbooks/user1/', $result['{' . Plugin::NS_CARDDAV . '}addressbook-home-set']->getHref()); 42*a1a3b679SAndreas Boehler 43*a1a3b679SAndreas Boehler } 44*a1a3b679SAndreas Boehler 45*a1a3b679SAndreas Boehler function testDirectoryGateway() { 46*a1a3b679SAndreas Boehler 47*a1a3b679SAndreas Boehler $result = $this->server->getProperties('principals/user1', array('{' . Plugin::NS_CARDDAV . '}directory-gateway')); 48*a1a3b679SAndreas Boehler 49*a1a3b679SAndreas Boehler $this->assertEquals(1, count($result)); 50*a1a3b679SAndreas Boehler $this->assertTrue(isset($result['{' . Plugin::NS_CARDDAV . '}directory-gateway'])); 51*a1a3b679SAndreas Boehler $this->assertEquals(array('directory'), $result['{' . Plugin::NS_CARDDAV . '}directory-gateway']->getHrefs()); 52*a1a3b679SAndreas Boehler 53*a1a3b679SAndreas Boehler } 54*a1a3b679SAndreas Boehler 55*a1a3b679SAndreas Boehler function testReportPassThrough() { 56*a1a3b679SAndreas Boehler 57*a1a3b679SAndreas Boehler $this->assertNull($this->plugin->report('{DAV:}foo', new \DomDocument())); 58*a1a3b679SAndreas Boehler 59*a1a3b679SAndreas Boehler } 60*a1a3b679SAndreas Boehler 61*a1a3b679SAndreas Boehler function testHTMLActionsPanel() { 62*a1a3b679SAndreas Boehler 63*a1a3b679SAndreas Boehler $output = ''; 64*a1a3b679SAndreas Boehler $r = $this->server->emit('onHTMLActionsPanel', [$this->server->tree->getNodeForPath('addressbooks/user1'), &$output]); 65*a1a3b679SAndreas Boehler $this->assertFalse($r); 66*a1a3b679SAndreas Boehler 67*a1a3b679SAndreas Boehler $this->assertTrue(!!strpos($output,'Display name')); 68*a1a3b679SAndreas Boehler 69*a1a3b679SAndreas Boehler } 70*a1a3b679SAndreas Boehler 71*a1a3b679SAndreas Boehler function testAddressbookPluginProperties() { 72*a1a3b679SAndreas Boehler 73*a1a3b679SAndreas Boehler $ns = '{' . Plugin::NS_CARDDAV . '}'; 74*a1a3b679SAndreas Boehler $propFind = new DAV\PropFind('addressbooks/user1/book1', [ 75*a1a3b679SAndreas Boehler $ns . 'supported-address-data', 76*a1a3b679SAndreas Boehler $ns . 'supported-collation-set', 77*a1a3b679SAndreas Boehler ]); 78*a1a3b679SAndreas Boehler $node = $this->server->tree->getNodeForPath('addressbooks/user1/book1'); 79*a1a3b679SAndreas Boehler $this->plugin->propFindEarly($propFind, $node); 80*a1a3b679SAndreas Boehler 81*a1a3b679SAndreas Boehler $this->assertInstanceOf( 82*a1a3b679SAndreas Boehler 'Sabre\\CardDAV\\Xml\\Property\\SupportedAddressData', 83*a1a3b679SAndreas Boehler $propFind->get($ns . 'supported-address-data') 84*a1a3b679SAndreas Boehler ); 85*a1a3b679SAndreas Boehler $this->assertInstanceOf( 86*a1a3b679SAndreas Boehler 'Sabre\\CardDAV\\Xml\\Property\\SupportedCollationSet', 87*a1a3b679SAndreas Boehler $propFind->get($ns . 'supported-collation-set') 88*a1a3b679SAndreas Boehler ); 89*a1a3b679SAndreas Boehler 90*a1a3b679SAndreas Boehler 91*a1a3b679SAndreas Boehler } 92*a1a3b679SAndreas Boehler 93*a1a3b679SAndreas Boehler function testGetTransform() { 94*a1a3b679SAndreas Boehler 95*a1a3b679SAndreas Boehler $request = new \Sabre\HTTP\Request('GET', '/addressbooks/user1/book1/card1', ['Accept: application/vcard+json']); 96*a1a3b679SAndreas Boehler $response = new \Sabre\HTTP\ResponseMock(); 97*a1a3b679SAndreas Boehler $this->server->invokeMethod($request, $response); 98*a1a3b679SAndreas Boehler 99*a1a3b679SAndreas Boehler $this->assertEquals(200, $response->getStatus()); 100*a1a3b679SAndreas Boehler 101*a1a3b679SAndreas Boehler } 102*a1a3b679SAndreas Boehler 103*a1a3b679SAndreas Boehler} 104