[Pkg-owncloud-commits] [php-sabredav] 159/220: Tests for SimplePDO backend

David Prévot taffit at moszumanska.debian.org
Thu May 12 01:21:21 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 3a4785514af3e25329061b28be46ec5625e39f59
Author: Evert Pot <me at evertpot.com>
Date:   Sun Apr 17 18:46:36 2016 +0900

    Tests for SimplePDO backend
---
 lib/CalDAV/Backend/SimplePDO.php               |   2 +-
 tests/Sabre/CalDAV/Backend/AbstractPDOTest.php |   4 +-
 tests/Sabre/CalDAV/Backend/SimplePDOTest.php   | 445 +++++++++++++++++++++++++
 3 files changed, 448 insertions(+), 3 deletions(-)

diff --git a/lib/CalDAV/Backend/SimplePDO.php b/lib/CalDAV/Backend/SimplePDO.php
index 6c3767a..f8238ea 100644
--- a/lib/CalDAV/Backend/SimplePDO.php
+++ b/lib/CalDAV/Backend/SimplePDO.php
@@ -110,7 +110,7 @@ class SimplePDO extends AbstractBackend {
     function createCalendar($principalUri, $calendarUri, array $properties) {
 
         $stmt = $this->pdo->prepare("INSERT INTO simple_calendars (principaluri, uri) VALUES (?, ?)");
-        $stmt->execute($principalUri, $calendarUri);
+        $stmt->execute([$principalUri, $calendarUri]);
 
         return $this->pdo->lastInsertId();
 
diff --git a/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php b/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
index 9cd1e70..9d4af34 100644
--- a/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
+++ b/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
@@ -281,7 +281,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
     function testGetMultipleObjectsBadId() {
 
         $backend = new PDO($this->pdo);
-        $backend->getMultipleCalendarObjects('bad-id',['foo-bar']);
+        $backend->getMultipleCalendarObjects('bad-id', ['foo-bar']);
 
     }
 
@@ -499,7 +499,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
     function testGetCalendarObjectBadId() {
 
         $backend = new PDO($this->pdo);
-        $backend->getCalendarObject('bad-id','foo-bar');
+        $backend->getCalendarObject('bad-id', 'foo-bar');
 
     }
 
diff --git a/tests/Sabre/CalDAV/Backend/SimplePDOTest.php b/tests/Sabre/CalDAV/Backend/SimplePDOTest.php
new file mode 100644
index 0000000..bf09c22
--- /dev/null
+++ b/tests/Sabre/CalDAV/Backend/SimplePDOTest.php
@@ -0,0 +1,445 @@
+<?php
+
+namespace Sabre\CalDAV\Backend;
+
+use Sabre\CalDAV;
+use Sabre\DAV;
+use Sabre\DAV\PropPatch;
+
+class SimplePDOTest extends \PHPUnit_Framework_TestCase {
+
+    protected $pdo;
+
+    function setUp() {
+
+        if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
+
+        if (file_exists(SABRE_TEMPDIR . '/testdb.sqlite'))
+            unlink(SABRE_TEMPDIR . '/testdb.sqlite');
+
+        $pdo = new \PDO('sqlite:' . SABRE_TEMPDIR . '/testdb.sqlite');
+        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
+
+        $pdo->exec(<<<SQL
+CREATE TABLE simple_calendars (
+    id INTEGER PRIMARY KEY ASC NOT NULL,
+    uri TEXT NOT NULL,
+    principaluri TEXT NOT NULL
+)
+SQL
+        );
+        $pdo->exec(<<<SQL
+CREATE TABLE simple_calendarobjects (
+    id INTEGER PRIMARY KEY ASC NOT NULL,
+    calendarid INT UNSIGNED NOT NULL,
+    uri TEXT NOT NULL,
+    calendardata TEXT
+);
+SQL
+        );
+
+        $this->pdo = $pdo;
+
+    }
+
+    function testConstruct() {
+
+        $backend = new SimplePDO($this->pdo);
+        $this->assertTrue($backend instanceof SimplePDO);
+
+    }
+
+    /**
+     * @depends testConstruct
+     */
+    function testGetCalendarsForUserNoCalendars() {
+
+        $backend = new SimplePDO($this->pdo);
+        $calendars = $backend->getCalendarsForUser('principals/user2');
+        $this->assertEquals([], $calendars);
+
+    }
+
+    /**
+     * @depends testConstruct
+     */
+    function testCreateCalendarAndFetch() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [
+            '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']),
+            '{DAV:}displayname'                                               => 'Hello!',
+            '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp'         => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'),
+        ]);
+        $calendars = $backend->getCalendarsForUser('principals/user2');
+
+        $elementCheck = [
+            'uri'                                                     => 'somerandomid',
+        ];
+
+        $this->assertInternalType('array', $calendars);
+        $this->assertEquals(1, count($calendars));
+
+        foreach ($elementCheck as $name => $value) {
+
+            $this->assertArrayHasKey($name, $calendars[0]);
+            $this->assertEquals($value, $calendars[0][$name]);
+
+        }
+
+    }
+
+    /**
+     * @depends testConstruct
+     */
+    function testUpdateCalendarAndFetch() {
+
+        $backend = new SimplePDO($this->pdo);
+
+        //Creating a new calendar
+        $newId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+        $propPatch = new PropPatch([
+            '{DAV:}displayname'                                       => 'myCalendar',
+            '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'),
+        ]);
+
+        // Updating the calendar
+        $backend->updateCalendar($newId, $propPatch);
+        $result = $propPatch->commit();
+
+        // Verifying the result of the update
+        $this->assertFalse($result);
+
+    }
+
+    /**
+     * @depends testCreateCalendarAndFetch
+     */
+    function testDeleteCalendar() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [
+            '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']),
+            '{DAV:}displayname'                                               => 'Hello!',
+        ]);
+
+        $backend->deleteCalendar($returnedId);
+
+        $calendars = $backend->getCalendarsForUser('principals/user2');
+        $this->assertEquals([], $calendars);
+
+    }
+
+    function testCreateCalendarObject() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+        $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+
+        $backend->createCalendarObject($returnedId, 'random-id', $object);
+
+        $result = $this->pdo->query('SELECT calendardata FROM simple_calendarobjects WHERE uri = "random-id"');
+        $this->assertEquals([
+            'calendardata'   => $object,
+        ], $result->fetch(\PDO::FETCH_ASSOC));
+
+    }
+    function testGetMultipleObjects() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+        $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+
+        $backend->createCalendarObject($returnedId, 'id-1', $object);
+        $backend->createCalendarObject($returnedId, 'id-2', $object);
+
+        $check = [
+            [
+                'id'           => 1,
+                'etag'         => '"' . md5($object) . '"',
+                'uri'          => 'id-1',
+                'size'         => strlen($object),
+                'calendardata' => $object,
+            ],
+            [
+                'id'           => 2,
+                'etag'         => '"' . md5($object) . '"',
+                'uri'          => 'id-2',
+                'size'         => strlen($object),
+                'calendardata' => $object,
+            ],
+        ];
+
+        $result = $backend->getMultipleCalendarObjects($returnedId, [ 'id-1', 'id-2' ]);
+
+        foreach ($check as $index => $props) {
+
+            foreach ($props as $key => $value) {
+
+                if ($key !== 'lastmodified') {
+                    $this->assertEquals($value, $result[$index][$key]);
+                } else {
+                    $this->assertTrue(isset($result[$index][$key]));
+                }
+
+            }
+
+        }
+
+    }
+
+    /**
+     * @depends testCreateCalendarObject
+     */
+    function testGetCalendarObjects() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+        $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+        $backend->createCalendarObject($returnedId, 'random-id', $object);
+
+        $data = $backend->getCalendarObjects($returnedId);
+
+        $this->assertEquals(1, count($data));
+        $data = $data[0];
+
+        $this->assertEquals('random-id', $data['uri']);
+        $this->assertEquals(strlen($object), $data['size']);
+
+    }
+
+    /**
+     * @depends testCreateCalendarObject
+     */
+    function testGetCalendarObjectByUID() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+        $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+        $backend->createCalendarObject($returnedId, 'random-id', $object);
+
+        $this->assertNull(
+            $backend->getCalendarObjectByUID('principals/user2', 'bar')
+        );
+        $this->assertEquals(
+            'somerandomid/random-id',
+            $backend->getCalendarObjectByUID('principals/user2', 'foo')
+        );
+
+    }
+
+    /**
+     * @depends testCreateCalendarObject
+     */
+    function testUpdateCalendarObject() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+        $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+        $object2 = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20130101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+        $backend->createCalendarObject($returnedId, 'random-id', $object);
+        $backend->updateCalendarObject($returnedId, 'random-id', $object2);
+
+        $data = $backend->getCalendarObject($returnedId, 'random-id');
+
+        $this->assertEquals($object2, $data['calendardata']);
+        $this->assertEquals('random-id', $data['uri']);
+
+
+    }
+
+
+    /**
+     * @depends testCreateCalendarObject
+     */
+    function testDeleteCalendarObject() {
+
+        $backend = new SimplePDO($this->pdo);
+        $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+        $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+        $backend->createCalendarObject($returnedId, 'random-id', $object);
+        $backend->deleteCalendarObject($returnedId, 'random-id');
+
+        $data = $backend->getCalendarObject($returnedId, 'random-id');
+        $this->assertNull($data);
+
+    }
+
+
+    function testCalendarQueryNoResult() {
+
+        $abstract = new SimplePDO($this->pdo);
+        $filters = [
+            'name'         => 'VCALENDAR',
+            'comp-filters' => [
+                [
+                    'name'           => 'VJOURNAL',
+                    'comp-filters'   => [],
+                    'prop-filters'   => [],
+                    'is-not-defined' => false,
+                    'time-range'     => null,
+                ],
+            ],
+            'prop-filters'   => [],
+            'is-not-defined' => false,
+            'time-range'     => null,
+        ];
+
+        $this->assertEquals([
+        ], $abstract->calendarQuery(1, $filters));
+
+    }
+
+    function testCalendarQueryTodo() {
+
+        $backend = new SimplePDO($this->pdo);
+        $backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
+        $backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+
+        $filters = [
+            'name'         => 'VCALENDAR',
+            'comp-filters' => [
+                [
+                    'name'           => 'VTODO',
+                    'comp-filters'   => [],
+                    'prop-filters'   => [],
+                    'is-not-defined' => false,
+                    'time-range'     => null,
+                ],
+            ],
+            'prop-filters'   => [],
+            'is-not-defined' => false,
+            'time-range'     => null,
+        ];
+
+        $this->assertEquals([
+            "todo",
+        ], $backend->calendarQuery(1, $filters));
+
+    }
+    function testCalendarQueryTodoNotMatch() {
+
+        $backend = new SimplePDO($this->pdo);
+        $backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
+        $backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+
+        $filters = [
+            'name'         => 'VCALENDAR',
+            'comp-filters' => [
+                [
+                    'name'         => 'VTODO',
+                    'comp-filters' => [],
+                    'prop-filters' => [
+                        [
+                            'name'           => 'summary',
+                            'text-match'     => null,
+                            'time-range'     => null,
+                            'param-filters'  => [],
+                            'is-not-defined' => false,
+                        ],
+                    ],
+                    'is-not-defined' => false,
+                    'time-range'     => null,
+                ],
+            ],
+            'prop-filters'   => [],
+            'is-not-defined' => false,
+            'time-range'     => null,
+        ];
+
+        $this->assertEquals([
+        ], $backend->calendarQuery(1, $filters));
+
+    }
+
+    function testCalendarQueryNoFilter() {
+
+        $backend = new SimplePDO($this->pdo);
+        $backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
+        $backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+
+        $filters = [
+            'name'           => 'VCALENDAR',
+            'comp-filters'   => [],
+            'prop-filters'   => [],
+            'is-not-defined' => false,
+            'time-range'     => null,
+        ];
+
+        $result = $backend->calendarQuery(1, $filters);
+        $this->assertTrue(in_array('todo', $result));
+        $this->assertTrue(in_array('event', $result));
+
+    }
+
+    function testCalendarQueryTimeRange() {
+
+        $backend = new SimplePDO($this->pdo);
+        $backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
+        $backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+        $backend->createCalendarObject(1, "event2", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+
+        $filters = [
+            'name'         => 'VCALENDAR',
+            'comp-filters' => [
+                [
+                    'name'           => 'VEVENT',
+                    'comp-filters'   => [],
+                    'prop-filters'   => [],
+                    'is-not-defined' => false,
+                    'time-range'     => [
+                        'start' => new \DateTime('20120103'),
+                        'end'   => new \DateTime('20120104'),
+                    ],
+                ],
+            ],
+            'prop-filters'   => [],
+            'is-not-defined' => false,
+            'time-range'     => null,
+        ];
+
+        $this->assertEquals([
+            "event2",
+        ], $backend->calendarQuery(1, $filters));
+
+    }
+    function testCalendarQueryTimeRangeNoEnd() {
+
+        $backend = new SimplePDO($this->pdo);
+        $backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
+        $backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+        $backend->createCalendarObject(1, "event2", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+
+        $filters = [
+            'name'         => 'VCALENDAR',
+            'comp-filters' => [
+                [
+                    'name'           => 'VEVENT',
+                    'comp-filters'   => [],
+                    'prop-filters'   => [],
+                    'is-not-defined' => false,
+                    'time-range'     => [
+                        'start' => new \DateTime('20120102'),
+                        'end'   => null,
+                    ],
+                ],
+            ],
+            'prop-filters'   => [],
+            'is-not-defined' => false,
+            'time-range'     => null,
+        ];
+
+        $this->assertEquals([
+            "event2",
+        ], $backend->calendarQuery(1, $filters));
+
+    }
+
+}

-- 
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