20 $this->server->addPlugin(
21 $this->icsExportPlugin
24 $id = $this->caldavBackend->createCalendar(
28 '{DAV:}displayname' =>
'Hello!',
29 '{http://apple.com/ns/ical/}calendar-color' =>
'#AA0000FF',
33 $this->caldavBackend->createCalendarObject(
43 DTSTART;TZID=Europe/Amsterdam:20151020T000000
48 $this->caldavBackend->createCalendarObject(
66 $this->icsExportPlugin,
67 $this->server->getPlugin(
'ics-export')
69 $this->assertEquals($this->icsExportPlugin, $this->server->getPlugin(
'ics-export'));
70 $this->assertEquals(
'ics-export', $this->icsExportPlugin->getPluginInfo()[
'name']);
78 '/calendars/admin/UUID-123467?export' 83 $this->assertEquals(200,
$response->getStatus());
84 $this->assertEquals(
'text/calendar',
$response->getHeader(
'Content-Type'));
88 $this->assertEquals(8, count($obj->children()));
89 $this->assertEquals(1, count($obj->VERSION));
90 $this->assertEquals(1, count($obj->CALSCALE));
91 $this->assertEquals(1, count($obj->PRODID));
92 $this->assertTrue(strpos((
string)$obj->PRODID, DAV\
Version::VERSION) !==
false);
93 $this->assertEquals(1, count($obj->VTIMEZONE));
94 $this->assertEquals(1, count($obj->VEVENT));
95 $this->assertEquals(
"Hello!", $obj->{
"X-WR-CALNAME"});
96 $this->assertEquals(
"#AA0000FF", $obj->{
"X-APPLE-CALENDAR-COLOR"});
103 '/calendars/admin/UUID-123467?export' 109 $this->assertEquals(200,
$response->getStatus());
110 $this->assertEquals(
'text/calendar',
$response->getHeader(
'Content-Type'));
114 $this->assertEquals(8, count($obj->children()));
115 $this->assertEquals(1, count($obj->VERSION));
116 $this->assertEquals(1, count($obj->CALSCALE));
117 $this->assertEquals(1, count($obj->PRODID));
118 $this->assertFalse(strpos((
string)$obj->PRODID, DAV\
Version::VERSION) !==
false);
119 $this->assertEquals(1, count($obj->VTIMEZONE));
120 $this->assertEquals(1, count($obj->VEVENT));
128 '/calendars/admin/UUID-123467' 138 $aclPlugin->allowUnauthenticatedAccess =
false;
139 $this->server->addPlugin(
145 '/calendars/admin/UUID-123467?export' 155 $aclPlugin->allowUnauthenticatedAccess =
false;
156 $this->server->addPlugin(
159 $this->server->addPlugin(
167 '/calendars/admin/UUID-123467?export' 171 $this->assertEquals(
'text/calendar',
$response->getHeader(
'Content-Type'));
175 $this->assertEquals(8, count($obj->children()));
176 $this->assertEquals(1, count($obj->VERSION));
177 $this->assertEquals(1, count($obj->CALSCALE));
178 $this->assertEquals(1, count($obj->PRODID));
179 $this->assertTrue(strpos((
string)$obj->PRODID, DAV\
Version::VERSION) !==
false);
180 $this->assertEquals(1, count($obj->VTIMEZONE));
181 $this->assertEquals(1, count($obj->VEVENT));
189 '/calendars/admin/UUID-123467?export&start=foo' 199 '/calendars/admin/UUID-123467?export&end=foo' 209 '/calendars/admin/UUID-123467?export&start=1&end=2' 215 $this->assertEquals(0, count($obj->VTIMEZONE));
216 $this->assertEquals(0, count($obj->VEVENT));
224 '/calendars/admin/UUID-123467?export&expand=1&end=2' 234 '/calendars/admin/UUID-123467?export&start=1&end=2000000000&expand=1' 240 $this->assertEquals(0, count($obj->VTIMEZONE));
241 $this->assertEquals(1, count($obj->VEVENT));
249 '/calendars/admin/UUID-123467?export',
250 [
'Accept' =>
'application/calendar+json']
254 $this->assertEquals(
'application/calendar+json',
$response->getHeader(
'Content-Type'));
262 '/calendars/admin/UUID-123467?export&accept=jcal' 266 $this->assertEquals(
'application/calendar+json',
$response->getHeader(
'Content-Type'));
274 '/calendars/admin/UUID-123467?export',
275 [
'Accept' =>
'text/plain']
279 $this->assertEquals(
'text/calendar',
$response->getHeader(
'Content-Type'));
287 '/calendars/admin/UUID-123467?export&componentType=VEVENT' 293 $this->assertEquals(1, count($obj->VTIMEZONE));
294 $this->assertEquals(1, count($obj->VEVENT));
295 $this->assertEquals(0, count($obj->VTODO));
303 '/calendars/admin/UUID-123467?export&componentType=VTODO' 310 $this->assertEquals(0, count($obj->VTIMEZONE));
311 $this->assertEquals(0, count($obj->VEVENT));
312 $this->assertEquals(1, count($obj->VTODO));
320 '/calendars/admin/UUID-123467?export&componentType=VVOODOO' 331 '/calendars/admin/UUID-123467?export' 335 $this->assertEquals(
'text/calendar',
$response->getHeader(
'Content-Type'));
337 'attachment; filename="UUID-123467-' . date(
'Y-m-d') .
'.ics"',
338 $response->getHeader(
'Content-Disposition')
347 '/calendars/admin/UUID-123467?export',
348 [
'Accept' =>
'application/calendar+json']
352 $this->assertEquals(
'application/calendar+json',
$response->getHeader(
'Content-Type'));
354 'attachment; filename="UUID-123467-' . date(
'Y-m-d') .
'.json"',
355 $response->getHeader(
'Content-Disposition')
362 $this->caldavBackend->createCalendar(
366 '{DAV:}displayname' =>
'Test bad characters',
367 '{http://apple.com/ns/ical/}calendar-color' =>
'#AA0000FF',
373 '/calendars/admin/UUID-b_ad"(ch)ars?export',
374 [
'Accept' =>
'application/calendar+json']
378 $this->assertEquals(
'application/calendar+json',
$response->getHeader(
'Content-Type'));
380 'attachment; filename="UUID-b_adchars-' . date(
'Y-m-d') .
'.json"',
381 $response->getHeader(
'Content-Disposition')
foreach($paths as $path) $request
testFilterComponentBadComponent()
if(!array_key_exists('StateId', $_REQUEST)) $id
testACLIntegrationNotBlocked()
const VERSION
Full version number.
testACLIntegrationBlocked()
testFilterComponentVEVENT()
testBeforeMethodNoExport()
This class may be used as a basis for other webdav-related unittests.
autoLogin($userName)
This function takes a username and sets the server in a state where this user is logged in...
testFilterComponentVTODO()
static read($data, $options=0, $charset='UTF-8')
Parses a vCard or iCalendar object, and returns the top component.
testContentDispositionJson()
testContentDispositionBadChars()
request($request, $expectedStatus=null)
Makes a request, and returns a response object.
testBeforeMethodNoVersion()