[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