xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\CardDAV;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehlerclass CardTest extends \PHPUnit_Framework_TestCase {
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler    /**
8*a1a3b679SAndreas Boehler     * @var Sabre\CardDAV\Card
9*a1a3b679SAndreas Boehler     */
10*a1a3b679SAndreas Boehler    protected $card;
11*a1a3b679SAndreas Boehler    /**
12*a1a3b679SAndreas Boehler     * @var Sabre\CardDAV\MockBackend
13*a1a3b679SAndreas Boehler     */
14*a1a3b679SAndreas Boehler    protected $backend;
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler    function setUp() {
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler        $this->backend = new Backend\Mock();
19*a1a3b679SAndreas Boehler        $this->card = new Card(
20*a1a3b679SAndreas Boehler            $this->backend,
21*a1a3b679SAndreas Boehler            array(
22*a1a3b679SAndreas Boehler                'uri' => 'book1',
23*a1a3b679SAndreas Boehler                'id' => 'foo',
24*a1a3b679SAndreas Boehler                'principaluri' => 'principals/user1',
25*a1a3b679SAndreas Boehler            ),
26*a1a3b679SAndreas Boehler            array(
27*a1a3b679SAndreas Boehler                'uri' => 'card1',
28*a1a3b679SAndreas Boehler                'addressbookid' => 'foo',
29*a1a3b679SAndreas Boehler                'carddata' => 'card',
30*a1a3b679SAndreas Boehler            )
31*a1a3b679SAndreas Boehler        );
32*a1a3b679SAndreas Boehler
33*a1a3b679SAndreas Boehler    }
34*a1a3b679SAndreas Boehler
35*a1a3b679SAndreas Boehler    function testGet() {
36*a1a3b679SAndreas Boehler
37*a1a3b679SAndreas Boehler        $result = $this->card->get();
38*a1a3b679SAndreas Boehler        $this->assertEquals('card', $result);
39*a1a3b679SAndreas Boehler
40*a1a3b679SAndreas Boehler    }
41*a1a3b679SAndreas Boehler    function testGet2() {
42*a1a3b679SAndreas Boehler
43*a1a3b679SAndreas Boehler        $this->card = new Card(
44*a1a3b679SAndreas Boehler            $this->backend,
45*a1a3b679SAndreas Boehler            array(
46*a1a3b679SAndreas Boehler                'uri' => 'book1',
47*a1a3b679SAndreas Boehler                'id' => 'foo',
48*a1a3b679SAndreas Boehler                'principaluri' => 'principals/user1',
49*a1a3b679SAndreas Boehler            ),
50*a1a3b679SAndreas Boehler            array(
51*a1a3b679SAndreas Boehler                'uri' => 'card1',
52*a1a3b679SAndreas Boehler                'addressbookid' => 'foo',
53*a1a3b679SAndreas Boehler            )
54*a1a3b679SAndreas Boehler        );
55*a1a3b679SAndreas Boehler        $result = $this->card->get();
56*a1a3b679SAndreas Boehler        $this->assertEquals("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD", $result);
57*a1a3b679SAndreas Boehler
58*a1a3b679SAndreas Boehler    }
59*a1a3b679SAndreas Boehler
60*a1a3b679SAndreas Boehler
61*a1a3b679SAndreas Boehler    /**
62*a1a3b679SAndreas Boehler     * @depends testGet
63*a1a3b679SAndreas Boehler     */
64*a1a3b679SAndreas Boehler    function testPut() {
65*a1a3b679SAndreas Boehler
66*a1a3b679SAndreas Boehler        $file = fopen('php://memory','r+');
67*a1a3b679SAndreas Boehler        fwrite($file, 'newdata');
68*a1a3b679SAndreas Boehler        rewind($file);
69*a1a3b679SAndreas Boehler        $this->card->put($file);
70*a1a3b679SAndreas Boehler        $result = $this->card->get();
71*a1a3b679SAndreas Boehler        $this->assertEquals('newdata', $result);
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler    }
74*a1a3b679SAndreas Boehler
75*a1a3b679SAndreas Boehler
76*a1a3b679SAndreas Boehler    function testDelete() {
77*a1a3b679SAndreas Boehler
78*a1a3b679SAndreas Boehler        $this->card->delete();
79*a1a3b679SAndreas Boehler        $this->assertEquals(1, count($this->backend->cards['foo']));
80*a1a3b679SAndreas Boehler
81*a1a3b679SAndreas Boehler    }
82*a1a3b679SAndreas Boehler
83*a1a3b679SAndreas Boehler    function testGetContentType() {
84*a1a3b679SAndreas Boehler
85*a1a3b679SAndreas Boehler        $this->assertEquals('text/vcard; charset=utf-8', $this->card->getContentType());
86*a1a3b679SAndreas Boehler
87*a1a3b679SAndreas Boehler    }
88*a1a3b679SAndreas Boehler
89*a1a3b679SAndreas Boehler    function testGetETag() {
90*a1a3b679SAndreas Boehler
91*a1a3b679SAndreas Boehler        $this->assertEquals('"' . md5('card') . '"' , $this->card->getETag());
92*a1a3b679SAndreas Boehler
93*a1a3b679SAndreas Boehler    }
94*a1a3b679SAndreas Boehler
95*a1a3b679SAndreas Boehler    function testGetETag2() {
96*a1a3b679SAndreas Boehler
97*a1a3b679SAndreas Boehler        $card = new Card(
98*a1a3b679SAndreas Boehler            $this->backend,
99*a1a3b679SAndreas Boehler            array(
100*a1a3b679SAndreas Boehler                'uri' => 'book1',
101*a1a3b679SAndreas Boehler                'id' => 'foo',
102*a1a3b679SAndreas Boehler                'principaluri' => 'principals/user1',
103*a1a3b679SAndreas Boehler            ),
104*a1a3b679SAndreas Boehler            array(
105*a1a3b679SAndreas Boehler                'uri' => 'card1',
106*a1a3b679SAndreas Boehler                'addressbookid' => 'foo',
107*a1a3b679SAndreas Boehler                'carddata' => 'card',
108*a1a3b679SAndreas Boehler                'etag' => '"blabla"',
109*a1a3b679SAndreas Boehler            )
110*a1a3b679SAndreas Boehler        );
111*a1a3b679SAndreas Boehler        $this->assertEquals('"blabla"' , $card->getETag());
112*a1a3b679SAndreas Boehler
113*a1a3b679SAndreas Boehler    }
114*a1a3b679SAndreas Boehler
115*a1a3b679SAndreas Boehler    function testGetLastModified() {
116*a1a3b679SAndreas Boehler
117*a1a3b679SAndreas Boehler        $this->assertEquals(null, $this->card->getLastModified());
118*a1a3b679SAndreas Boehler
119*a1a3b679SAndreas Boehler    }
120*a1a3b679SAndreas Boehler
121*a1a3b679SAndreas Boehler    function testGetSize() {
122*a1a3b679SAndreas Boehler
123*a1a3b679SAndreas Boehler        $this->assertEquals(4, $this->card->getSize());
124*a1a3b679SAndreas Boehler        $this->assertEquals(4, $this->card->getSize());
125*a1a3b679SAndreas Boehler
126*a1a3b679SAndreas Boehler    }
127*a1a3b679SAndreas Boehler
128*a1a3b679SAndreas Boehler    function testGetSize2() {
129*a1a3b679SAndreas Boehler
130*a1a3b679SAndreas Boehler        $card = new Card(
131*a1a3b679SAndreas Boehler            $this->backend,
132*a1a3b679SAndreas Boehler            array(
133*a1a3b679SAndreas Boehler                'uri' => 'book1',
134*a1a3b679SAndreas Boehler                'id' => 'foo',
135*a1a3b679SAndreas Boehler                'principaluri' => 'principals/user1',
136*a1a3b679SAndreas Boehler            ),
137*a1a3b679SAndreas Boehler            array(
138*a1a3b679SAndreas Boehler                'uri' => 'card1',
139*a1a3b679SAndreas Boehler                'addressbookid' => 'foo',
140*a1a3b679SAndreas Boehler                'etag' => '"blabla"',
141*a1a3b679SAndreas Boehler                'size' => 4,
142*a1a3b679SAndreas Boehler            )
143*a1a3b679SAndreas Boehler        );
144*a1a3b679SAndreas Boehler        $this->assertEquals(4, $card->getSize());
145*a1a3b679SAndreas Boehler
146*a1a3b679SAndreas Boehler    }
147*a1a3b679SAndreas Boehler
148*a1a3b679SAndreas Boehler    function testACLMethods() {
149*a1a3b679SAndreas Boehler
150*a1a3b679SAndreas Boehler        $this->assertEquals('principals/user1', $this->card->getOwner());
151*a1a3b679SAndreas Boehler        $this->assertNull($this->card->getGroup());
152*a1a3b679SAndreas Boehler        $this->assertEquals(array(
153*a1a3b679SAndreas Boehler            array(
154*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
155*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
156*a1a3b679SAndreas Boehler                'protected' => true,
157*a1a3b679SAndreas Boehler            ),
158*a1a3b679SAndreas Boehler            array(
159*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}write',
160*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
161*a1a3b679SAndreas Boehler                'protected' => true,
162*a1a3b679SAndreas Boehler            ),
163*a1a3b679SAndreas Boehler        ), $this->card->getACL());
164*a1a3b679SAndreas Boehler
165*a1a3b679SAndreas Boehler    }
166*a1a3b679SAndreas Boehler    function testOverrideACL() {
167*a1a3b679SAndreas Boehler
168*a1a3b679SAndreas Boehler        $card = new Card(
169*a1a3b679SAndreas Boehler            $this->backend,
170*a1a3b679SAndreas Boehler            array(
171*a1a3b679SAndreas Boehler                'uri' => 'book1',
172*a1a3b679SAndreas Boehler                'id' => 'foo',
173*a1a3b679SAndreas Boehler                'principaluri' => 'principals/user1',
174*a1a3b679SAndreas Boehler            ),
175*a1a3b679SAndreas Boehler            array(
176*a1a3b679SAndreas Boehler                'uri' => 'card1',
177*a1a3b679SAndreas Boehler                'addressbookid' => 'foo',
178*a1a3b679SAndreas Boehler                'carddata' => 'card',
179*a1a3b679SAndreas Boehler                'acl' => array(
180*a1a3b679SAndreas Boehler                    array(
181*a1a3b679SAndreas Boehler                        'privilege' => '{DAV:}read',
182*a1a3b679SAndreas Boehler                        'principal' => 'principals/user1',
183*a1a3b679SAndreas Boehler                        'protected' => true,
184*a1a3b679SAndreas Boehler                    ),
185*a1a3b679SAndreas Boehler                ),
186*a1a3b679SAndreas Boehler            )
187*a1a3b679SAndreas Boehler        );
188*a1a3b679SAndreas Boehler        $this->assertEquals(array(
189*a1a3b679SAndreas Boehler            array(
190*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
191*a1a3b679SAndreas Boehler                'principal' => 'principals/user1',
192*a1a3b679SAndreas Boehler                'protected' => true,
193*a1a3b679SAndreas Boehler            ),
194*a1a3b679SAndreas Boehler        ), $card->getACL());
195*a1a3b679SAndreas Boehler
196*a1a3b679SAndreas Boehler    }
197*a1a3b679SAndreas Boehler
198*a1a3b679SAndreas Boehler    /**
199*a1a3b679SAndreas Boehler     * @expectedException Sabre\DAV\Exception\MethodNotAllowed
200*a1a3b679SAndreas Boehler     */
201*a1a3b679SAndreas Boehler    function testSetACL() {
202*a1a3b679SAndreas Boehler
203*a1a3b679SAndreas Boehler       $this->card->setACL(array());
204*a1a3b679SAndreas Boehler
205*a1a3b679SAndreas Boehler    }
206*a1a3b679SAndreas Boehler
207*a1a3b679SAndreas Boehler    function testGetSupportedPrivilegeSet() {
208*a1a3b679SAndreas Boehler
209*a1a3b679SAndreas Boehler        $this->assertNull(
210*a1a3b679SAndreas Boehler            $this->card->getSupportedPrivilegeSet()
211*a1a3b679SAndreas Boehler        );
212*a1a3b679SAndreas Boehler
213*a1a3b679SAndreas Boehler    }
214*a1a3b679SAndreas Boehler
215*a1a3b679SAndreas Boehler}
216