mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2025-07-07 17:08:48 +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
537
dav/SabreDAV/tests/Sabre/CalDAV/CalendarQueryParserTest.php
Normal file
537
dav/SabreDAV/tests/Sabre/CalDAV/CalendarQueryParserTest.php
Normal file
|
@ -0,0 +1,537 @@
|
|||
<?php
|
||||
|
||||
class Sabre_CalDAV_CalendarQueryParserTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
function parse($xml) {
|
||||
|
||||
$xml =
|
||||
'<?xml version="1.0"?>
|
||||
<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
|
||||
' . implode("\n", $xml) . '
|
||||
</c:calendar-query>';
|
||||
|
||||
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
||||
|
||||
$q = new Sabre_CalDAV_CalendarQueryParser($dom);
|
||||
$q->parse();
|
||||
return $q->filters;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
*/
|
||||
function testNoFilter() {
|
||||
|
||||
$xml = array();
|
||||
$this->parse($xml);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
*/
|
||||
function testTwoCompFilter() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VEVENT" />',
|
||||
' <c:comp-filter name="VEVENT" />',
|
||||
'</c:filter>'
|
||||
);
|
||||
$this->parse($xml);
|
||||
|
||||
}
|
||||
|
||||
function testBasicFilter() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR" />',
|
||||
'</c:filter>'
|
||||
);
|
||||
$result = $this->parse($xml);
|
||||
|
||||
$expected = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
function testCompIsNotDefined() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR">',
|
||||
' <c:comp-filter name="VEVENT">',
|
||||
' <c:is-not-defined/>',
|
||||
' </c:comp-filter>',
|
||||
' </c:comp-filter>',
|
||||
'</c:filter>'
|
||||
);
|
||||
$result = $this->parse($xml);
|
||||
|
||||
$expected = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VEVENT',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => true,
|
||||
'time-range' => false
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
*/
|
||||
function testCompTimeRangeOnVCALENDAR() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR">',
|
||||
' <c:time-range start="20110101T000000Z" end="20111231T235959Z" />',
|
||||
' </c:comp-filter>',
|
||||
'</c:filter>'
|
||||
);
|
||||
$result = $this->parse($xml);
|
||||
|
||||
}
|
||||
|
||||
function testCompTimeRange() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR">',
|
||||
' <c:comp-filter name="VEVENT">',
|
||||
' <c:time-range start="20110101T000000Z" end="20111231T235959Z" />',
|
||||
' </c:comp-filter>',
|
||||
' <c:comp-filter name="VTODO">',
|
||||
' <c:time-range start="20110101T000000Z" />',
|
||||
' </c:comp-filter>',
|
||||
' <c:comp-filter name="VJOURNAL">',
|
||||
' <c:time-range end="20111231T235959Z" />',
|
||||
' </c:comp-filter>',
|
||||
' </c:comp-filter>',
|
||||
'</c:filter>'
|
||||
);
|
||||
$result = $this->parse($xml);
|
||||
|
||||
$expected = 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('2011-01-01 00:00:00', new DateTimeZone('GMT')),
|
||||
'end' => new DateTime('2011-12-31 23:59:59', new DateTimeZone('GMT')),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'name' => 'VTODO',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => array(
|
||||
'start' => new DateTime('2011-01-01 00:00:00', new DateTimeZone('GMT')),
|
||||
'end' => null,
|
||||
),
|
||||
),
|
||||
array(
|
||||
'name' => 'VJOURNAL',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => array(
|
||||
'start' => null,
|
||||
'end' => new DateTime('2011-12-31 23:59:59', new DateTimeZone('GMT')),
|
||||
),
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
*/
|
||||
function testCompTimeRangeBadRange() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR">',
|
||||
' <c:comp-filter name="VEVENT">',
|
||||
' <c:time-range start="20110101T000000Z" end="20100101T000000Z" />',
|
||||
' </c:comp-filter>',
|
||||
' </c:comp-filter>',
|
||||
'</c:filter>'
|
||||
);
|
||||
$this->parse($xml);
|
||||
|
||||
}
|
||||
|
||||
function testProp() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR">',
|
||||
' <c:comp-filter name="VEVENT">',
|
||||
' <c:prop-filter name="SUMMARY">',
|
||||
' <c:text-match>vacation</c:text-match>',
|
||||
' </c:prop-filter>',
|
||||
' </c:comp-filter>',
|
||||
' </c:comp-filter>',
|
||||
'</c:filter>'
|
||||
);
|
||||
$result = $this->parse($xml);
|
||||
|
||||
$expected = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VEVENT',
|
||||
'is-not-defined' => false,
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(
|
||||
array(
|
||||
'name' => 'SUMMARY',
|
||||
'is-not-defined' => false,
|
||||
'param-filters' => array(),
|
||||
'text-match' => array(
|
||||
'negate-condition' => false,
|
||||
'collation' => 'i;ascii-casemap',
|
||||
'value' => 'vacation',
|
||||
),
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
function testComplex() {
|
||||
|
||||
$xml = array(
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR">',
|
||||
' <c:comp-filter name="VEVENT">',
|
||||
' <c:prop-filter name="SUMMARY">',
|
||||
' <c:text-match collation="i;unicode-casemap">vacation</c:text-match>',
|
||||
' </c:prop-filter>',
|
||||
' <c:prop-filter name="DTSTAMP">',
|
||||
' <c:time-range start="20110704T000000Z" />',
|
||||
' </c:prop-filter>',
|
||||
' <c:prop-filter name="ORGANIZER">',
|
||||
' <c:is-not-defined />',
|
||||
' </c:prop-filter>',
|
||||
' <c:prop-filter name="DTSTART">',
|
||||
' <c:param-filter name="VALUE">',
|
||||
' <c:text-match negate-condition="yes">DATE</c:text-match>',
|
||||
' </c:param-filter>',
|
||||
' </c:prop-filter>',
|
||||
' </c:comp-filter>',
|
||||
' </c:comp-filter>',
|
||||
'</c:filter>'
|
||||
);
|
||||
$result = $this->parse($xml);
|
||||
|
||||
$expected = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VEVENT',
|
||||
'is-not-defined' => false,
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(
|
||||
array(
|
||||
'name' => 'SUMMARY',
|
||||
'is-not-defined' => false,
|
||||
'param-filters' => array(),
|
||||
'text-match' => array(
|
||||
'negate-condition' => false,
|
||||
'collation' => 'i;unicode-casemap',
|
||||
'value' => 'vacation',
|
||||
),
|
||||
'time-range' => null,
|
||||
),
|
||||
array(
|
||||
'name' => 'DTSTAMP',
|
||||
'is-not-defined' => false,
|
||||
'param-filters' => array(),
|
||||
'text-match' => null,
|
||||
'time-range' => array(
|
||||
'start' => new DateTime('2011-07-04 00:00:00', new DateTimeZone('GMT')),
|
||||
'end' => null,
|
||||
),
|
||||
),
|
||||
array(
|
||||
'name' => 'ORGANIZER',
|
||||
'is-not-defined' => true,
|
||||
'param-filters' => array(),
|
||||
'text-match' => null,
|
||||
'time-range' => null,
|
||||
),
|
||||
array(
|
||||
'name' => 'DTSTART',
|
||||
'is-not-defined' => false,
|
||||
'param-filters' => array(
|
||||
array(
|
||||
'name' => 'VALUE',
|
||||
'is-not-defined' => false,
|
||||
'text-match' => array(
|
||||
'negate-condition' => true,
|
||||
'value' => 'DATE',
|
||||
'collation' => 'i;ascii-casemap',
|
||||
),
|
||||
),
|
||||
),
|
||||
'text-match' => null,
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'time-range' => null,
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
function testOther1() {
|
||||
|
||||
// This body was exactly sent to us from the sabredav mailing list. Checking if this parses correctly.
|
||||
|
||||
$body = <<<BLA
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<C:calendar-query xmlns:D="DAV:"
|
||||
xmlns:C="urn:ietf:params:xml:ns:caldav">
|
||||
<D:prop>
|
||||
<C:calendar-data/>
|
||||
<D:getetag/>
|
||||
</D:prop>
|
||||
<C:filter>
|
||||
<C:comp-filter name="VCALENDAR">
|
||||
<C:comp-filter name="VEVENT">
|
||||
<C:time-range start="20090101T000000Z" end="20121202T000000Z"/>
|
||||
</C:comp-filter>
|
||||
</C:comp-filter>
|
||||
</C:filter>
|
||||
</C:calendar-query>
|
||||
BLA;
|
||||
|
||||
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($body);
|
||||
|
||||
$q = new Sabre_CalDAV_CalendarQueryParser($dom);
|
||||
$q->parse();
|
||||
|
||||
$this->assertEquals(array(
|
||||
'{urn:ietf:params:xml:ns:caldav}calendar-data',
|
||||
'{DAV:}getetag',
|
||||
), $q->requestedProperties);
|
||||
|
||||
$expectedFilters = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(
|
||||
array(
|
||||
'name' => 'VEVENT',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'time-range' => array(
|
||||
'start' => new DateTime('2009-01-01 00:00:00', new DateTimeZone('UTC')),
|
||||
'end' => new DateTime('2012-12-02 00:00:00', new DateTimeZone('UTC')),
|
||||
),
|
||||
'is-not-defined' => false,
|
||||
),
|
||||
),
|
||||
'prop-filters' => array(),
|
||||
'time-range' => null,
|
||||
'is-not-defined' => false,
|
||||
);
|
||||
|
||||
$this->assertEquals($expectedFilters, $q->filters);
|
||||
|
||||
}
|
||||
|
||||
function testExpand() {
|
||||
|
||||
$xml = array(
|
||||
'<d:prop>',
|
||||
' <c:calendar-data>',
|
||||
' <c:expand start="20110101T000000Z" end="20120101T000000Z"/>',
|
||||
' </c:calendar-data>',
|
||||
'</d:prop>',
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR" />',
|
||||
'</c:filter>'
|
||||
);
|
||||
|
||||
$xml =
|
||||
'<?xml version="1.0"?>
|
||||
<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
|
||||
' . implode("\n", $xml) . '
|
||||
</c:calendar-query>';
|
||||
|
||||
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
||||
$q = new Sabre_CalDAV_CalendarQueryParser($dom);
|
||||
$q->parse();
|
||||
|
||||
|
||||
$expected = array(
|
||||
'name' => 'VCALENDAR',
|
||||
'comp-filters' => array(),
|
||||
'prop-filters' => array(),
|
||||
'is-not-defined' => false,
|
||||
'time-range' => false
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$q->filters
|
||||
);
|
||||
|
||||
$this->assertEquals(array(
|
||||
'{urn:ietf:params:xml:ns:caldav}calendar-data',
|
||||
), $q->requestedProperties);
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'start' => new DateTime('2011-01-01 00:00:00', new DateTimeZone('UTC')),
|
||||
'end' => new DateTime('2012-01-01 00:00:00', new DateTimeZone('UTC')),
|
||||
),
|
||||
$q->expand
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
*/
|
||||
function testExpandNoStart() {
|
||||
|
||||
$xml = array(
|
||||
'<d:prop>',
|
||||
' <c:calendar-data>',
|
||||
' <c:expand end="20120101T000000Z"/>',
|
||||
' </c:calendar-data>',
|
||||
'</d:prop>',
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR" />',
|
||||
'</c:filter>'
|
||||
);
|
||||
|
||||
$xml =
|
||||
'<?xml version="1.0"?>
|
||||
<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
|
||||
' . implode("\n", $xml) . '
|
||||
</c:calendar-query>';
|
||||
|
||||
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
||||
$q = new Sabre_CalDAV_CalendarQueryParser($dom);
|
||||
$q->parse();
|
||||
|
||||
}
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
*/
|
||||
function testExpandNoEnd() {
|
||||
|
||||
$xml = array(
|
||||
'<d:prop>',
|
||||
' <c:calendar-data>',
|
||||
' <c:expand start="20120101T000000Z"/>',
|
||||
' </c:calendar-data>',
|
||||
'</d:prop>',
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR" />',
|
||||
'</c:filter>'
|
||||
);
|
||||
|
||||
$xml =
|
||||
'<?xml version="1.0"?>
|
||||
<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
|
||||
' . implode("\n", $xml) . '
|
||||
</c:calendar-query>';
|
||||
|
||||
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
||||
$q = new Sabre_CalDAV_CalendarQueryParser($dom);
|
||||
$q->parse();
|
||||
|
||||
}
|
||||
/**
|
||||
* @expectedException Sabre_DAV_Exception_BadRequest
|
||||
*/
|
||||
function testExpandBadTimes() {
|
||||
|
||||
$xml = array(
|
||||
'<d:prop>',
|
||||
' <c:calendar-data>',
|
||||
' <c:expand start="20120101T000000Z" end="19980101T000000Z"/>',
|
||||
' </c:calendar-data>',
|
||||
'</d:prop>',
|
||||
'<c:filter>',
|
||||
' <c:comp-filter name="VCALENDAR" />',
|
||||
'</c:filter>'
|
||||
);
|
||||
|
||||
$xml =
|
||||
'<?xml version="1.0"?>
|
||||
<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
|
||||
' . implode("\n", $xml) . '
|
||||
</c:calendar-query>';
|
||||
|
||||
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
||||
$q = new Sabre_CalDAV_CalendarQueryParser($dom);
|
||||
$q->parse();
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue