xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
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