[Pkg-owncloud-commits] [php-sabredav] 194/220: CardDAV now also has Postgres support
David Prévot
taffit at moszumanska.debian.org
Thu May 12 01:21:27 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository php-sabredav.
commit 234900729fa33d3f3e63308c49d502c5ad12c68a
Author: Evert Pot <me at evertpot.com>
Date: Thu Apr 28 15:22:39 2016 +0700
CardDAV now also has Postgres support
---
...ysql.addressbook.sql => mysql.addressbooks.sql} | 0
...gsql.addressbook.sql => pgsql.addressbooks.sql} | 8 ----
lib/CardDAV/Backend/PDO.php | 9 +++-
tests/Sabre/CardDAV/Backend/AbstractPDOTest.php | 48 ++++++++++++++++------
tests/Sabre/CardDAV/Backend/PDOMySQLTest.php | 28 +------------
tests/Sabre/CardDAV/Backend/PDOPgSqlTest.php | 9 ++++
tests/Sabre/CardDAV/Backend/PDOSqliteTest.php | 46 +--------------------
7 files changed, 54 insertions(+), 94 deletions(-)
diff --git a/examples/sql/mysql.addressbook.sql b/examples/sql/mysql.addressbooks.sql
similarity index 100%
rename from examples/sql/mysql.addressbook.sql
rename to examples/sql/mysql.addressbooks.sql
diff --git a/examples/sql/pgsql.addressbook.sql b/examples/sql/pgsql.addressbooks.sql
similarity index 77%
rename from examples/sql/pgsql.addressbook.sql
rename to examples/sql/pgsql.addressbooks.sql
index 48a7365..98f414f 100644
--- a/examples/sql/pgsql.addressbook.sql
+++ b/examples/sql/pgsql.addressbooks.sql
@@ -29,10 +29,6 @@ ALTER TABLE ONLY cards
CREATE UNIQUE INDEX cards_ukey
ON cards USING btree (addressbookid, uri);
-ALTER TABLE ONLY cards
- ADD CONSTRAINT cards_addressbookid_fkey FOREIGN KEY (addressbookid) REFERENCES addressbooks(id)
- ON DELETE CASCADE;
-
CREATE TABLE addressbookchanges (
id SERIAL NOT NULL,
uri VARCHAR(200) NOT NULL,
@@ -46,7 +42,3 @@ ALTER TABLE ONLY addressbookchanges
CREATE INDEX addressbookchanges_addressbookid_synctoken_ix
ON addressbookchanges USING btree (addressbookid, synctoken);
-
-ALTER TABLE ONLY addressbookchanges
- ADD CONSTRAINT addressbookchanges_addressbookid_fkey FOREIGN KEY (addressbookid) REFERENCES addressbooks(id)
- ON DELETE CASCADE;
diff --git a/lib/CardDAV/Backend/PDO.php b/lib/CardDAV/Backend/PDO.php
index 5509ddc..7c3feff 100644
--- a/lib/CardDAV/Backend/PDO.php
+++ b/lib/CardDAV/Backend/PDO.php
@@ -128,7 +128,7 @@ class PDO extends AbstractBackend implements SyncSupport {
} else {
$query .= ', ';
}
- $query .= ' `' . $key . '` = :' . $key . ' ';
+ $query .= ' ' . $key . ' = :' . $key . ' ';
}
$query .= ' WHERE id = :addressbookid';
@@ -180,7 +180,9 @@ class PDO extends AbstractBackend implements SyncSupport {
$query = 'INSERT INTO ' . $this->addressBooksTableName . ' (uri, displayname, description, principaluri, synctoken) VALUES (:uri, :displayname, :description, :principaluri, 1)';
$stmt = $this->pdo->prepare($query);
$stmt->execute($values);
- return $this->pdo->lastInsertId();
+ return $this->pdo->lastInsertId(
+ $this->addressBooksTableName . '_id_seq'
+ );
}
@@ -230,6 +232,7 @@ class PDO extends AbstractBackend implements SyncSupport {
$result = [];
while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
$row['etag'] = '"' . $row['etag'] . '"';
+ $row['lastmodified'] = (int)$row['lastmodified'];
$result[] = $row;
}
return $result;
@@ -258,6 +261,7 @@ class PDO extends AbstractBackend implements SyncSupport {
if (!$result) return false;
$result['etag'] = '"' . $result['etag'] . '"';
+ $result['lastmodified'] = (int)$result['lastmodified'];
return $result;
}
@@ -286,6 +290,7 @@ class PDO extends AbstractBackend implements SyncSupport {
$result = [];
while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
$row['etag'] = '"' . $row['etag'] . '"';
+ $row['lastmodified'] = (int)$row['lastmodified'];
$result[] = $row;
}
return $result;
diff --git a/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php b/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
index eb2158e..74647cd 100644
--- a/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
+++ b/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
@@ -7,23 +7,26 @@ use Sabre\DAV\PropPatch;
abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
+ use \Sabre\DAV\DbTestHelperTrait;
+
/**
* @var CardDAV\Backend\PDO
*/
protected $backend;
- /**
- * @abstract
- * @return PDO
- */
- abstract function getPDO();
-
function setUp() {
+ $this->dropTables([
+ 'addressbooks',
+ 'cards',
+ 'addressbookchanges',
+ ]);
+ $this->createSchema('addressbooks');
$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)');
+ $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)");
}
@@ -219,6 +222,10 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'size' => 5
];
+ if (is_resource($result['carddata'])) {
+ $result['carddata'] = stream_get_contents($result['carddata']);
+ }
+
$this->assertEquals($expected, $result);
}
@@ -233,6 +240,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$result = $this->backend->getCard(1, 'card2');
$this->assertEquals(2, $result['id']);
$this->assertEquals('card2', $result['uri']);
+ if (is_resource($result['carddata'])) {
+ $result['carddata'] = stream_get_contents($result['carddata']);
+ }
$this->assertEquals('data2', $result['carddata']);
}
@@ -271,10 +281,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
foreach ($node as $k => $v) {
- if ($k !== 'lastmodified') {
- $this->assertEquals($v, $result[$index][$k]);
- } else {
- $this->assertTrue(isset($result[$index][$k]));
+ $expected = $v;
+ $actual = $result[$index][$k];
+
+ switch($k) {
+ case 'lastmodified' :
+ $this->assertInternalType('int', $actual);
+ break;
+ case 'carddata' :
+ if (is_resource($actual)) {
+ $actual = stream_get_contents($actual);
+ }
+ // No break intended.
+ default :
+ $this->assertEquals($expected, $actual);
+ break;
}
}
@@ -294,6 +315,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$result = $this->backend->getCard(1, 'card1');
$this->assertEquals(1, $result['id']);
+ if (is_resource($result['carddata'])) {
+ $result['carddata'] = stream_get_contents($result['carddata']);
+ }
$this->assertEquals('newdata', $result['carddata']);
}
diff --git a/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php b/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
index ab78926..c1b0e27 100644
--- a/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
+++ b/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
@@ -2,34 +2,8 @@
namespace Sabre\CardDAV\Backend;
-require_once 'Sabre/TestUtil.php';
-
class PDOMySQLTest extends AbstractPDOTest {
- /**
- * @return PDO
- */
- function getPDO() {
-
- if (!SABRE_HASMYSQL) $this->markTestSkipped('MySQL driver is not available, or not properly configured');
-
- $pdo = \Sabre\TestUtil::getMySQLDB();
- if (!$pdo) $this->markTestSkipped('Could not connect to MySQL database');
-
- $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;
-
- }
+ public $driver = 'mysql';
}
diff --git a/tests/Sabre/CardDAV/Backend/PDOPgSqlTest.php b/tests/Sabre/CardDAV/Backend/PDOPgSqlTest.php
new file mode 100644
index 0000000..7691b78
--- /dev/null
+++ b/tests/Sabre/CardDAV/Backend/PDOPgSqlTest.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace Sabre\CardDAV\Backend;
+
+class PDOPgSqlTest extends AbstractPDOTest {
+
+ public $driver = 'pgsql';
+
+}
diff --git a/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php b/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
index 3595a53..b187c4d 100644
--- a/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
+++ b/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
@@ -2,52 +2,8 @@
namespace Sabre\CardDAV\Backend;
-require_once 'Sabre/TestUtil.php';
-
class PDOSqliteTest extends AbstractPDOTest {
- function tearDown() {
-
- if (file_exists(SABRE_TEMPDIR . '/pdobackend')) unlink(SABRE_TEMPDIR . '/pdobackend');
- if (file_exists(SABRE_TEMPDIR . '/pdobackend2')) unlink(SABRE_TEMPDIR . '/pdobackend2');
-
- }
-
- /**
- * @return PDO
- */
- 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");
-
- $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;
-
- }
+ public $driver = 'sqlite';
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-php/php-sabredav.git
More information about the Pkg-owncloud-commits
mailing list