aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/tests/Sabre/CardDAV/Backend
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/dav/tests/Sabre/CardDAV/Backend')
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php129
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php30
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php48
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php57
4 files changed, 172 insertions, 92 deletions
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
index 623188d32..d2ec278be 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
@@ -3,6 +3,7 @@
namespace Sabre\CardDAV\Backend;
use Sabre\CardDAV;
+use Sabre\DAV\PropPatch;
abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
@@ -19,7 +20,10 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function setUp() {
- $this->backend = new PDO($this->getPDO());
+ $pdo = $this->getPDO();
+ $this->backend = new PDO($pdo);
+ $pdo->exec('INSERT INTO addressbooks (principaluri, displayname, uri, description, synctoken) VALUES ("principals/user1", "book1", "book1", "addressbook 1", 1)');
+ $pdo->exec('INSERT INTO cards (addressbookid, carddata, uri, lastmodified, etag, size) VALUES (1, "card1", "card1", 0, "' . md5('card1') . '", 5)');
}
@@ -35,7 +39,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1
)
);
@@ -45,11 +49,14 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function testUpdateAddressBookInvalidProp() {
- $result = $this->backend->updateAddressBook(1, array(
+ $propPatch = new PropPatch([
'{DAV:}displayname' => 'updated',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated',
'{DAV:}foo' => 'bar',
- ));
+ ]);
+
+ $this->backend->updateAddressBook(1, $propPatch);
+ $result = $propPatch->commit();
$this->assertFalse($result);
@@ -63,7 +70,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1
)
);
@@ -73,9 +80,12 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function testUpdateAddressBookNoProps() {
- $result = $this->backend->updateAddressBook(1, array());
+ $propPatch = new PropPatch([
+ ]);
- $this->assertFalse($result);
+ $this->backend->updateAddressBook(1, $propPatch);
+ $result = $propPatch->commit();
+ $this->assertTrue($result);
$result = $this->backend->getAddressBooksForUser('principals/user1');
@@ -87,7 +97,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1
)
);
@@ -98,10 +108,13 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function testUpdateAddressBookSuccess() {
- $result = $this->backend->updateAddressBook(1, array(
+ $propPatch = new PropPatch([
'{DAV:}displayname' => 'updated',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated',
- ));
+ ]);
+
+ $this->backend->updateAddressBook(1, $propPatch);
+ $result = $propPatch->commit();
$this->assertTrue($result);
@@ -115,7 +128,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'updated',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated',
'{http://calendarserver.org/ns/}getctag' => 2,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 2
)
);
@@ -158,7 +171,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1,
),
array(
'id' => 2,
@@ -167,7 +180,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book2',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 2',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1,
)
);
$result = $this->backend->getAddressBooksForUser('principals/user1');
@@ -183,8 +196,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
array(
'id' => 1,
'uri' => 'card1',
- 'carddata' => 'card1',
'lastmodified' => 0,
+ 'etag' => '"' . md5('card1') . '"',
+ 'size' => 5
)
);
@@ -201,6 +215,8 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'uri' => 'card1',
'carddata' => 'card1',
'lastmodified' => 0,
+ 'etag' => '"' . md5('card1') . '"',
+ 'size' => 5
);
$this->assertEquals($expected, $result);
@@ -222,6 +238,53 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
}
/**
+ * @depends testCreateCard
+ */
+ public function testGetMultiple() {
+
+ $result = $this->backend->createCard(1, 'card2', 'data2');
+ $result = $this->backend->createCard(1, 'card3', 'data3');
+ $check = [
+ [
+ 'id' => 1,
+ 'uri' => 'card1',
+ 'carddata' => 'card1',
+ 'lastmodified' => 0,
+ ],
+ [
+ 'id' => 2,
+ 'uri' => 'card2',
+ 'carddata' => 'data2',
+ 'lastmodified' => time(),
+ ],
+ [
+ 'id' => 3,
+ 'uri' => 'card3',
+ 'carddata' => 'data3',
+ 'lastmodified' => time(),
+ ],
+ ];
+
+ $result = $this->backend->getMultipleCards(1, ['card1','card2','card3']);
+
+ foreach($check as $index=>$node) {
+
+ foreach($node as $k=>$v) {
+
+ if ($k!=='lastmodified') {
+ $this->assertEquals($v, $result[$index][$k]);
+ } else {
+ $this->assertTrue(isset($result[$index][$k]));
+ }
+
+ }
+
+ }
+
+
+ }
+
+ /**
* @depends testGetCard
*/
public function testUpdateCard() {
@@ -245,5 +308,43 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$this->assertFalse($result);
}
+
+ function testGetChanges() {
+
+ $backend = $this->backend;
+ $id = $backend->createAddressBook(
+ 'principals/user1',
+ 'bla',
+ []
+ );
+ $result = $backend->getChangesForAddressBook($id, null, 1);
+
+ $this->assertEquals([
+ 'syncToken' => 1,
+ "added" => [],
+ 'modified' => [],
+ 'deleted' => [],
+ ], $result);
+
+ $currentToken = $result['syncToken'];
+
+ $dummyCard = "BEGIN:VCARD\r\nEND:VCARD\r\n";
+
+ $backend->createCard($id, "card1.ics", $dummyCard);
+ $backend->createCard($id, "card2.ics", $dummyCard);
+ $backend->createCard($id, "card3.ics", $dummyCard);
+ $backend->updateCard($id, "card1.ics", $dummyCard);
+ $backend->deleteCard($id, "card2.ics");
+
+ $result = $backend->getChangesForAddressBook($id, $currentToken, 1);
+
+ $this->assertEquals([
+ 'syncToken' => 6,
+ 'modified' => ["card1.ics"],
+ 'deleted' => ["card2.ics"],
+ "added" => ["card3.ics"],
+ ], $result);
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
index ab7ac4e6a..3f96d3c5d 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
@@ -48,18 +48,36 @@ class Mock extends AbstractBackend {
}
- function updateAddressBook($addressBookId, array $mutations) {
+ /**
+ * Updates properties for an address book.
+ *
+ * The list of mutations is stored in a Sabre\DAV\PropPatch object.
+ * To do the actual updates, you must tell this object which properties
+ * you're going to process with the handle() method.
+ *
+ * Calling the handle method is like telling the PropPatch object "I
+ * promise I can handle updating this property".
+ *
+ * Read the PropPatch documenation for more info and examples.
+ *
+ * @param string $addressBookId
+ * @param \Sabre\DAV\PropPatch $propPatch
+ * @return void
+ */
+ public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) {
foreach($this->addressBooks as &$book) {
if ($book['id'] !== $addressBookId)
continue;
- foreach($mutations as $key=>$value) {
- $book[$key] = $value;
- }
- return true;
+ $propPatch->handleRemaining(function($mutations) use (&$book) {
+ foreach($mutations as $key=>$value) {
+ $book[$key] = $value;
+ }
+ return true;
+ });
+
}
- return false;
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
index b2f871f6e..38cb655d0 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
@@ -16,42 +16,18 @@ class PDOMySQLTest extends AbstractPDOTest {
$pdo = \Sabre\TestUtil::getMySQLDB();
if (!$pdo) $this->markTestSkipped('Could not connect to MySQL database');
- $pdo->query("DROP TABLE IF EXISTS addressbooks");
- $pdo->query("DROP TABLE IF EXISTS cards");
- $pdo->query("
-CREATE TABLE addressbooks (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- principaluri VARCHAR(255),
- displayname VARCHAR(255),
- uri VARCHAR(100),
- description TEXT,
- ctag INT(11) UNSIGNED NOT NULL DEFAULT '1'
-);
-");
-
- $pdo->query("
-INSERT INTO addressbooks
- (principaluri, displayname, uri, description, ctag)
-VALUES
- ('principals/user1', 'book1', 'book1', 'addressbook 1', 1);
-");
-
- $pdo->query("
-CREATE TABLE cards (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- addressbookid INT(11) UNSIGNED NOT NULL,
- carddata TEXT,
- uri VARCHAR(100),
- lastmodified INT(11) UNSIGNED
-);
-");
-
- $pdo->query("
-INSERT INTO cards
- (addressbookid, carddata, uri, lastmodified)
-VALUES
- (1, 'card1', 'card1', 0);
-");
+ $pdo->query("DROP TABLE IF EXISTS addressbooks, cards, addressbookchanges");
+
+ $queries = explode(
+ ';',
+ file_get_contents(__DIR__ . '/../../../../examples/sql/mysql.addressbook.sql')
+ );
+
+ foreach($queries as $query) {
+ $query = trim($query," \r\n\t");
+ if ($query)
+ $pdo->exec($query);
+ }
return $pdo;
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
index a9bbb0bd1..5a4a7a327 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
@@ -18,48 +18,33 @@ class PDOSqliteTest extends AbstractPDOTest {
*/
function getPDO() {
+ return self::getSQLite();
+
+ }
+
+ /**
+ * @return PDO
+ */
+ static function getSQLite() {
+
if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
$pdo = new \PDO('sqlite:'.SABRE_TEMPDIR.'/pdobackend');
$pdo->setAttribute(\PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION);
$pdo->query("DROP TABLE IF EXISTS addressbooks");
+ $pdo->query("DROP TABLE IF EXISTS addressbookchanges");
$pdo->query("DROP TABLE IF EXISTS cards");
- $pdo->query("
-CREATE TABLE addressbooks (
- id integer primary key asc,
- principaluri text,
- displayname text,
- uri text,
- description text,
- ctag integer
-);
-
-");
-
- $pdo->query("
-INSERT INTO addressbooks
- (principaluri, displayname, uri, description, ctag)
-VALUES
- ('principals/user1', 'book1', 'book1', 'addressbook 1', 1);
-");
-
- $pdo->query("
-
-CREATE TABLE cards (
- id integer primary key asc,
- addressbookid integer,
- carddata text,
- uri text,
- lastmodified integer
-);
-
-");
- $pdo->query("
-INSERT INTO cards
- (addressbookid, carddata, uri, lastmodified)
-VALUES
- (1, 'card1', 'card1', 0);
-");
+
+ $queries = explode(
+ ';',
+ file_get_contents(__DIR__ . '/../../../../examples/sql/sqlite.addressbooks.sql')
+ );
+
+ foreach($queries as $query) {
+ $query = trim($query," \r\n\t");
+ if ($query)
+ $pdo->exec($query);
+ }
return $pdo;