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