mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2025-07-09 18:08:49 +00:00
Initial Release of the calendar plugin
This commit is contained in:
parent
45cc9885fc
commit
7115197a33
561 changed files with 189494 additions and 0 deletions
511
dav/SabreDAV/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
Normal file
511
dav/SabreDAV/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
Normal file
|
@ -0,0 +1,511 @@
|
|||
<?php
|
||||
|
||||
abstract class Sabre_CalDAV_Backend_AbstractPDOTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
protected $pdo;
|
||||
|
||||
function testConstruct() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$this->assertTrue($backend instanceof Sabre_CalDAV_Backend_PDO);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testConstruct
|
||||
*/
|
||||
function testGetCalendarsForUserNoCalendars() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$calendars = $backend->getCalendarsForUser('principals/user2');
|
||||
$this->assertEquals(array(),$calendars);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testConstruct
|
||||
*/
|
||||
function testCreateCalendarAndFetch() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array(
|
||||
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet(array('VEVENT')),
|
||||
'{DAV:}displayname' => 'Hello!',
|
||||
));
|
||||
$calendars = $backend->getCalendarsForUser('principals/user2');
|
||||
|
||||
$elementCheck = array(
|
||||
'id' => $returnedId,
|
||||
'uri' => 'somerandomid',
|
||||
'{DAV:}displayname' => 'Hello!',
|
||||
'{urn:ietf:params:xml:ns:caldav}calendar-description' => '',
|
||||
);
|
||||
|
||||
$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 Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
|
||||
//Creating a new calendar
|
||||
$newId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
// Updating the calendar
|
||||
$result = $backend->updateCalendar($newId,array(
|
||||
'{DAV:}displayname' => 'myCalendar',
|
||||
));
|
||||
|
||||
// Verifying the result of the update
|
||||
$this->assertEquals(true, $result);
|
||||
|
||||
// Fetching all calendars from this user
|
||||
$calendars = $backend->getCalendarsForUser('principals/user2');
|
||||
|
||||
// Checking if all the information is still correct
|
||||
$elementCheck = array(
|
||||
'id' => $newId,
|
||||
'uri' => 'somerandomid',
|
||||
'{DAV:}displayname' => 'myCalendar',
|
||||
'{urn:ietf:params:xml:ns:caldav}calendar-description' => '',
|
||||
'{urn:ietf:params:xml:ns:caldav}calendar-timezone' => '',
|
||||
'{http://calendarserver.org/ns/}getctag' => '2',
|
||||
);
|
||||
|
||||
$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 testUpdateCalendarAndFetch
|
||||
*/
|
||||
function testUpdateCalendarUnknownProperty() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
|
||||
//Creating a new calendar
|
||||
$newId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
// Updating the calendar
|
||||
$result = $backend->updateCalendar($newId,array(
|
||||
'{DAV:}displayname' => 'myCalendar',
|
||||
'{DAV:}yourmom' => 'wittycomment',
|
||||
));
|
||||
|
||||
// Verifying the result of the update
|
||||
$this->assertEquals(array(
|
||||
'403' => array('{DAV:}yourmom' => null),
|
||||
'424' => array('{DAV:}displayname' => null),
|
||||
), $result);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarAndFetch
|
||||
*/
|
||||
function testDeleteCalendar() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array(
|
||||
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet(array('VEVENT')),
|
||||
'{DAV:}displayname' => 'Hello!',
|
||||
));
|
||||
|
||||
$backend->deleteCalendar($returnedId);
|
||||
|
||||
$calendars = $backend->getCalendarsForUser('principals/user2');
|
||||
$this->assertEquals(array(),$calendars);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarAndFetch
|
||||
* @expectedException Sabre_DAV_Exception
|
||||
*/
|
||||
function testCreateCalendarIncorrectComponentSet() {;
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
|
||||
//Creating a new calendar
|
||||
$newId = $backend->createCalendar('principals/user2','somerandomid',array(
|
||||
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => 'blabla',
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
function testCreateCalendarObject() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$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 etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
|
||||
$this->assertEquals(array(
|
||||
'etag' => md5($object),
|
||||
'size' => strlen($object),
|
||||
'calendardata' => $object,
|
||||
'firstoccurence' => strtotime('20120101'),
|
||||
'lastoccurence' => strtotime('20120101')+(3600*24),
|
||||
'componenttype' => 'VEVENT',
|
||||
), $result->fetch(PDO::FETCH_ASSOC));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testCreateCalendarObjectNoComponent() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$object = "BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nEND:VCALENDAR\r\n";
|
||||
|
||||
$backend->createCalendarObject($returnedId, 'random-id', $object);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testCreateCalendarObjectDuration() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nDURATION:P2D\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
|
||||
|
||||
$backend->createCalendarObject($returnedId, 'random-id', $object);
|
||||
|
||||
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
|
||||
$this->assertEquals(array(
|
||||
'etag' => md5($object),
|
||||
'size' => strlen($object),
|
||||
'calendardata' => $object,
|
||||
'firstoccurence' => strtotime('20120101'),
|
||||
'lastoccurence' => strtotime('20120101')+(3600*48),
|
||||
'componenttype' => 'VEVENT',
|
||||
), $result->fetch(PDO::FETCH_ASSOC));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testCreateCalendarObjectNoDTEND() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
|
||||
|
||||
$backend->createCalendarObject($returnedId, 'random-id', $object);
|
||||
|
||||
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
|
||||
$this->assertEquals(array(
|
||||
'etag' => md5($object),
|
||||
'size' => strlen($object),
|
||||
'calendardata' => $object,
|
||||
'firstoccurence' => strtotime('2012-01-01 10:00:00'),
|
||||
'lastoccurence' => strtotime('2012-01-01 10:00:00'),
|
||||
'componenttype' => 'VEVENT',
|
||||
), $result->fetch(PDO::FETCH_ASSOC));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testCreateCalendarObjectInfiniteReccurence() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nRRULE:FREQ=DAILY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
|
||||
|
||||
$backend->createCalendarObject($returnedId, 'random-id', $object);
|
||||
|
||||
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
|
||||
$this->assertEquals(array(
|
||||
'etag' => md5($object),
|
||||
'size' => strlen($object),
|
||||
'calendardata' => $object,
|
||||
'firstoccurence' => strtotime('2012-01-01 10:00:00'),
|
||||
'lastoccurence' => strtotime(Sabre_CalDAV_Backend_PDO::MAX_DATE),
|
||||
'componenttype' => 'VEVENT',
|
||||
), $result->fetch(PDO::FETCH_ASSOC));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testCreateCalendarObjectEndingReccurence() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nDTEND;VALUE=DATE-TIME:20120101T110000Z\r\nRRULE:FREQ=DAILY;COUNT=1000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
|
||||
|
||||
$backend->createCalendarObject($returnedId, 'random-id', $object);
|
||||
|
||||
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
|
||||
$this->assertEquals(array(
|
||||
'etag' => md5($object),
|
||||
'size' => strlen($object),
|
||||
'calendardata' => $object,
|
||||
'firstoccurence' => strtotime('2012-01-01 10:00:00'),
|
||||
'lastoccurence' => strtotime('2012-01-01 11:00:00') + (3600 * 24 * 999),
|
||||
'componenttype' => 'VEVENT',
|
||||
), $result->fetch(PDO::FETCH_ASSOC));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testCreateCalendarObjectTask() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$object = "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nDUE;VALUE=DATE-TIME:20120101T100000Z\r\nEND:VTODO\r\nEND:VCALENDAR\r\n";
|
||||
|
||||
$backend->createCalendarObject($returnedId, 'random-id', $object);
|
||||
|
||||
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
|
||||
$this->assertEquals(array(
|
||||
'etag' => md5($object),
|
||||
'size' => strlen($object),
|
||||
'calendardata' => $object,
|
||||
'firstoccurence' => null,
|
||||
'lastoccurence' => null,
|
||||
'componenttype' => 'VTODO',
|
||||
), $result->fetch(PDO::FETCH_ASSOC));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testGetCalendarObjects() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$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,'random-id');
|
||||
|
||||
$this->assertEquals(1, count($data));
|
||||
$data = $data[0];
|
||||
|
||||
$this->assertEquals($returnedId, $data['calendarid']);
|
||||
$this->assertEquals('random-id', $data['uri']);
|
||||
$this->assertEquals(strlen($object),$data['size']);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testUpdateCalendarObject() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$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($returnedId, $data['calendarid']);
|
||||
$this->assertEquals('random-id', $data['uri']);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateCalendarObject
|
||||
*/
|
||||
function testDeleteCalendarObject() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
|
||||
|
||||
$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 Sabre_CalDAV_Backend_PDO($this->pdo);
|
||||
$filters = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VJOURNAL',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
);
|
||||
|
||||
$this->assertEquals(array(
|
||||
), $abstract->calendarQuery(1, $filters));
|
||||
|
||||
}
|
||||
|
||||
function testCalendarQueryTodo() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($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 = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VTODO',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
);
|
||||
|
||||
$this->assertEquals(array(
|
||||
"todo",
|
||||
), $backend->calendarQuery(1, $filters));
|
||||
|
||||
}
|
||||
function testCalendarQueryTodoNotMatch() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($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 = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VTODO',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(
|
||||
array(
|
||||
'name' => 'summary',
|
||||
'text-match' => null,
|
||||
'time-range' => null,
|
||||
'param-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
),
|
||||
),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
);
|
||||
|
||||
$this->assertEquals(array(
|
||||
), $backend->calendarQuery(1, $filters));
|
||||
|
||||
}
|
||||
|
||||
function testCalendarQueryNoFilter() {
|
||||
|
||||
$backend = new Sabre_CalDAV_Backend_PDO($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 = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'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 Sabre_CalDAV_Backend_PDO($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 = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VEVENT',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => array(
|
||||
'start' => new DateTime('20120103'),
|
||||
'end' => new DateTime('20120104'),
|
||||
),
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
);
|
||||
|
||||
$this->assertEquals(array(
|
||||
"event2",
|
||||
), $backend->calendarQuery(1, $filters));
|
||||
|
||||
}
|
||||
}
|
86
dav/SabreDAV/tests/Sabre/CalDAV/Backend/AbstractTest.php
Normal file
86
dav/SabreDAV/tests/Sabre/CalDAV/Backend/AbstractTest.php
Normal file
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
class Sabre_CalDAV_Backend_AbstractTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
function testUpdateCalendar() {
|
||||
|
||||
$abstract = new Sabre_CalDAV_Backend_AbstractMock();
|
||||
$this->assertEquals(false, $abstract->updateCalendar('randomid', array('{DAV:}displayname' => 'anything')));
|
||||
|
||||
}
|
||||
|
||||
function testCalendarQuery() {
|
||||
|
||||
$abstract = new Sabre_CalDAV_Backend_AbstractMock();
|
||||
$filters = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VEVENT',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => null,
|
||||
);
|
||||
|
||||
$this->assertEquals(array(
|
||||
'event1.ics',
|
||||
), $abstract->calendarQuery(1, $filters));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Sabre_CalDAV_Backend_AbstractMock extends Sabre_CalDAV_Backend_Abstract {
|
||||
|
||||
function getCalendarsForUser($principalUri) { }
|
||||
function createCalendar($principalUri,$calendarUri,array $properties) { }
|
||||
function deleteCalendar($calendarId) { }
|
||||
function getCalendarObjects($calendarId) {
|
||||
|
||||
return array(
|
||||
array(
|
||||
'id' => 1,
|
||||
'calendarid' => 1,
|
||||
'uri' => 'event1.ics',
|
||||
),
|
||||
array(
|
||||
'id' => 2,
|
||||
'calendarid' => 1,
|
||||
'uri' => 'task1.ics',
|
||||
),
|
||||
);
|
||||
|
||||
}
|
||||
function getCalendarObject($calendarId,$objectUri) {
|
||||
|
||||
switch($objectUri) {
|
||||
|
||||
case 'event1.ics' :
|
||||
return array(
|
||||
'id' => 1,
|
||||
'calendarid' => 1,
|
||||
'uri' => 'event1.ics',
|
||||
'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
|
||||
);
|
||||
case 'task1.ics' :
|
||||
return array(
|
||||
'id' => 1,
|
||||
'calendarid' => 1,
|
||||
'uri' => 'event1.ics',
|
||||
'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n",
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
function createCalendarObject($calendarId,$objectUri,$calendarData) { }
|
||||
function updateCalendarObject($calendarId,$objectUri,$calendarData) { }
|
||||
function deleteCalendarObject($calendarId,$objectUri) { }
|
||||
|
||||
}
|
230
dav/SabreDAV/tests/Sabre/CalDAV/Backend/Mock.php
Normal file
230
dav/SabreDAV/tests/Sabre/CalDAV/Backend/Mock.php
Normal file
|
@ -0,0 +1,230 @@
|
|||
<?php
|
||||
|
||||
class Sabre_CalDAV_Backend_Mock extends Sabre_CalDAV_Backend_Abstract {
|
||||
|
||||
private $calendarData;
|
||||
private $calendars;
|
||||
|
||||
function __construct(array $calendars, array $calendarData) {
|
||||
|
||||
$this->calendars = $calendars;
|
||||
$this->calendarData = $calendarData;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of calendars for a principal.
|
||||
*
|
||||
* Every project is an array with the following keys:
|
||||
* * id, a unique id that will be used by other functions to modify the
|
||||
* calendar. This can be the same as the uri or a database key.
|
||||
* * uri, which the basename of the uri with which the calendar is
|
||||
* accessed.
|
||||
* * principalUri. The owner of the calendar. Almost always the same as
|
||||
* principalUri passed to this method.
|
||||
*
|
||||
* Furthermore it can contain webdav properties in clark notation. A very
|
||||
* common one is '{DAV:}displayname'.
|
||||
*
|
||||
* @param string $principalUri
|
||||
* @return array
|
||||
*/
|
||||
function getCalendarsForUser($principalUri) {
|
||||
|
||||
$r = array();
|
||||
foreach($this->calendars as $row) {
|
||||
if ($row['principaluri'] == $principalUri) {
|
||||
$r[] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
return $r;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new calendar for a principal.
|
||||
*
|
||||
* If the creation was a success, an id must be returned that can be used to reference
|
||||
* this calendar in other methods, such as updateCalendar.
|
||||
*
|
||||
* This function must return a server-wide unique id that can be used
|
||||
* later to reference the calendar.
|
||||
*
|
||||
* @param string $principalUri
|
||||
* @param string $calendarUri
|
||||
* @param array $properties
|
||||
* @return string|int
|
||||
*/
|
||||
function createCalendar($principalUri,$calendarUri,array $properties) {
|
||||
|
||||
throw new Exception('Not implemented');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates properties on this node,
|
||||
*
|
||||
* The properties array uses the propertyName in clark-notation as key,
|
||||
* and the array value for the property value. In the case a property
|
||||
* should be deleted, the property value will be null.
|
||||
*
|
||||
* This method must be atomic. If one property cannot be changed, the
|
||||
* entire operation must fail.
|
||||
*
|
||||
* If the operation was successful, true can be returned.
|
||||
* If the operation failed, false can be returned.
|
||||
*
|
||||
* Deletion of a non-existent property is always successful.
|
||||
*
|
||||
* Lastly, it is optional to return detailed information about any
|
||||
* failures. In this case an array should be returned with the following
|
||||
* structure:
|
||||
*
|
||||
* array(
|
||||
* 403 => array(
|
||||
* '{DAV:}displayname' => null,
|
||||
* ),
|
||||
* 424 => array(
|
||||
* '{DAV:}owner' => null,
|
||||
* )
|
||||
* )
|
||||
*
|
||||
* In this example it was forbidden to update {DAV:}displayname.
|
||||
* (403 Forbidden), which in turn also caused {DAV:}owner to fail
|
||||
* (424 Failed Dependency) because the request needs to be atomic.
|
||||
*
|
||||
* @param string $calendarId
|
||||
* @param array $properties
|
||||
* @return bool|array
|
||||
*/
|
||||
public function updateCalendar($calendarId, array $properties) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a calendar and all it's objects
|
||||
*
|
||||
* @param string $calendarId
|
||||
* @return void
|
||||
*/
|
||||
public function deleteCalendar($calendarId) {
|
||||
|
||||
throw new Exception('Not implemented');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all calendar objects within a calendar object.
|
||||
*
|
||||
* Every item contains an array with the following keys:
|
||||
* * id - unique identifier which will be used for subsequent updates
|
||||
* * calendardata - The iCalendar-compatible calendar data
|
||||
* * uri - a unique key which will be used to construct the uri. This can be any arbitrary string.
|
||||
* * lastmodified - a timestamp of the last modification time
|
||||
* * etag - An arbitrary string, surrounded by double-quotes. (e.g.:
|
||||
* ' "abcdef"')
|
||||
* * calendarid - The calendarid as it was passed to this function.
|
||||
*
|
||||
* Note that the etag is optional, but it's highly encouraged to return for
|
||||
* speed reasons.
|
||||
*
|
||||
* The calendardata is also optional. If it's not returned
|
||||
* 'getCalendarObject' will be called later, which *is* expected to return
|
||||
* calendardata.
|
||||
*
|
||||
* @param string $calendarId
|
||||
* @return array
|
||||
*/
|
||||
public function getCalendarObjects($calendarId) {
|
||||
|
||||
if (!isset($this->calendarData[$calendarId]))
|
||||
return array();
|
||||
|
||||
$objects = $this->calendarData[$calendarId];
|
||||
foreach($objects as $uri => &$object) {
|
||||
$object['calendarid'] = $calendarId;
|
||||
$object['uri'] = $uri;
|
||||
|
||||
}
|
||||
return $objects;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information from a single calendar object, based on it's object
|
||||
* uri.
|
||||
*
|
||||
* The returned array must have the same keys as getCalendarObjects. The
|
||||
* 'calendardata' object is required here though, while it's not required
|
||||
* for getCalendarObjects.
|
||||
*
|
||||
* @param string $calendarId
|
||||
* @param string $objectUri
|
||||
* @return array
|
||||
*/
|
||||
function getCalendarObject($calendarId,$objectUri) {
|
||||
|
||||
if (!isset($this->calendarData[$calendarId][$objectUri])) {
|
||||
throw new Sabre_DAV_Exception_NotFound('Object could not be found');
|
||||
}
|
||||
$object = $this->calendarData[$calendarId][$objectUri];
|
||||
$object['calendarid'] = $calendarId;
|
||||
$object['uri'] = $objectUri;
|
||||
return $object;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new calendar object.
|
||||
*
|
||||
* @param string $calendarId
|
||||
* @param string $objectUri
|
||||
* @param string $calendarData
|
||||
* @return void
|
||||
*/
|
||||
function createCalendarObject($calendarId,$objectUri,$calendarData) {
|
||||
|
||||
$this->calendarData[$calendarId][$objectUri] = array(
|
||||
'calendardata' => $calendarData,
|
||||
'calendarid' => $calendarId,
|
||||
'uri' => $objectUri,
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an existing calendarobject, based on it's uri.
|
||||
*
|
||||
* @param string $calendarId
|
||||
* @param string $objectUri
|
||||
* @param string $calendarData
|
||||
* @return void
|
||||
*/
|
||||
function updateCalendarObject($calendarId,$objectUri,$calendarData) {
|
||||
|
||||
$this->calendarData[$calendarId][$objectUri] = array(
|
||||
'calendardata' => $calendarData,
|
||||
'calendarid' => $calendarId,
|
||||
'uri' => $objectUri,
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an existing calendar object.
|
||||
*
|
||||
* @param string $calendarId
|
||||
* @param string $objectUri
|
||||
* @return void
|
||||
*/
|
||||
function deleteCalendarObject($calendarId,$objectUri) {
|
||||
|
||||
throw new Exception('Not implemented');
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
37
dav/SabreDAV/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php
Normal file
37
dav/SabreDAV/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
require_once 'Sabre/TestUtil.php';
|
||||
require_once 'Sabre/CalDAV/TestUtil.php';
|
||||
require_once 'Sabre/CalDAV/Backend/AbstractPDOTest.php';
|
||||
|
||||
class Sabre_CalDAV_Backend_PDOMySQLTest extends Sabre_CalDAV_Backend_AbstractPDOTest {
|
||||
|
||||
function setup() {
|
||||
|
||||
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 calendarobjects, calendars');
|
||||
|
||||
$queries = explode(
|
||||
';',
|
||||
file_get_contents(__DIR__ . '/../../../../examples/sql/mysql.calendars.sql')
|
||||
);
|
||||
|
||||
foreach($queries as $query) {
|
||||
$query = trim($query," \r\n\t");
|
||||
if ($query)
|
||||
$pdo->exec($query);
|
||||
}
|
||||
$this->pdo = $pdo;
|
||||
|
||||
}
|
||||
|
||||
function teardown() {
|
||||
|
||||
$this->pdo = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
21
dav/SabreDAV/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php
Normal file
21
dav/SabreDAV/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
require_once 'Sabre/CalDAV/Backend/AbstractPDOTest.php';
|
||||
|
||||
class Sabre_CalDAV_Backend_PDOSQLiteTest extends Sabre_CalDAV_Backend_AbstractPDOTest {
|
||||
|
||||
function setup() {
|
||||
|
||||
if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
|
||||
$this->pdo = Sabre_CalDAV_TestUtil::getSQLiteDB();
|
||||
|
||||
}
|
||||
|
||||
function teardown() {
|
||||
|
||||
$this->pdo = null;
|
||||
unlink(SABRE_TEMPDIR . '/testdb.sqlite');
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue