[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