diff options
author | redmatrix <git@macgirvin.com> | 2016-05-10 17:26:44 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-05-10 17:26:44 -0700 |
commit | 0b02a6d123b2014705998c94ddf3d460948d3eac (patch) | |
tree | 78ff2cab9944a4f5ab3f80ec93cbe1120de90bb2 /vendor/sabre/dav/tests/Sabre/CardDAV/Backend | |
parent | 40b5b6e9d2da7ab65c8b4d38cdceac83a4d78deb (diff) | |
download | volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.tar.gz volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.tar.bz2 volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.zip |
initial sabre upgrade (needs lots of work - to wit: authentication, redo the browser interface, and rework event export/import)
Diffstat (limited to 'vendor/sabre/dav/tests/Sabre/CardDAV/Backend')
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; |