forked from extern/egroupware
121 lines
2.5 KiB
PHP
121 lines
2.5 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* CalDAV tests: create, read and delete an event
|
||
|
*
|
||
|
* @link https://www.egroupware.org
|
||
|
* @author Ralf Becker <rb@egroupware.org>
|
||
|
* @package calendar
|
||
|
* @subpackage tests
|
||
|
* @copyright (c) 2020 by Ralf Becker <rb@egroupware.org>
|
||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||
|
*/
|
||
|
|
||
|
namespace EGroupware\calendar;
|
||
|
|
||
|
require_once __DIR__.'/../../../api/tests/CalDAVTest.php';
|
||
|
|
||
|
use EGroupware\Api\CalDAVTest;
|
||
|
use GuzzleHttp\RequestOptions;
|
||
|
|
||
|
class CalDAVcreateReadDelete extends CalDAVTest
|
||
|
{
|
||
|
/**
|
||
|
* Test accessing CalDAV without authentication
|
||
|
*/
|
||
|
public function testNoAuth()
|
||
|
{
|
||
|
$response = $this->getClient([])->get($this->url('/'));
|
||
|
|
||
|
$this->assertHttpStatus(401, $response);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test accessing CalDAV with authentication
|
||
|
*/
|
||
|
public function testAuth()
|
||
|
{
|
||
|
$response = $this->getClient()->get($this->url('/'));
|
||
|
|
||
|
$this->assertHttpStatus(200, $response);
|
||
|
}
|
||
|
|
||
|
const EVENT_URL = '/demo/calendar/new-event-1233456789-new.ics';
|
||
|
const EVENT_ICAL = <<<EOICAL
|
||
|
BEGIN:VCALENDAR
|
||
|
VERSION:2.0
|
||
|
BEGIN:VTIMEZONE
|
||
|
TZID:Europe/Berlin
|
||
|
BEGIN:DAYLIGHT
|
||
|
TZOFFSETFROM:+0100
|
||
|
TZOFFSETTO:+0200
|
||
|
TZNAME:CEST
|
||
|
DTSTART:19700329T020000
|
||
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||
|
END:DAYLIGHT
|
||
|
BEGIN:STANDARD
|
||
|
TZOFFSETFROM:+0200
|
||
|
TZOFFSETTO:+0100
|
||
|
TZNAME:CET
|
||
|
DTSTART:19701025T030000
|
||
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||
|
END:STANDARD
|
||
|
END:VTIMEZONE
|
||
|
BEGIN:VEVENT
|
||
|
DTSTART;TZID=Europe/Berlin:20110406T210000
|
||
|
DTEND;TZID=Europe/Berlin:20110406T220000
|
||
|
DTSTAMP:20110406T183747Z
|
||
|
LAST-MODIFIED:20110406T183747Z
|
||
|
LOCATION:Somewhere
|
||
|
SUMMARY:Tonight
|
||
|
UID:new-event-1233456789-new
|
||
|
END:VEVENT
|
||
|
END:VCALENDAR
|
||
|
EOICAL;
|
||
|
|
||
|
/**
|
||
|
* Create an event
|
||
|
*/
|
||
|
public function testCreate()
|
||
|
{
|
||
|
$response = $this->getClient()->put($this->url(self::EVENT_URL), [
|
||
|
RequestOptions::HEADERS => [
|
||
|
'Content-Type' => 'text/calendar',
|
||
|
'If-None-Match' => '*',
|
||
|
],
|
||
|
RequestOptions::BODY => self::EVENT_ICAL,
|
||
|
]);
|
||
|
|
||
|
$this->assertHttpStatus(201, $response);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Read created event
|
||
|
*/
|
||
|
public function testRead()
|
||
|
{
|
||
|
$response = $this->getClient()->get($this->url(self::EVENT_URL));
|
||
|
|
||
|
$this->assertHttpStatus(200, $response);
|
||
|
$this->assertIcal(self::EVENT_ICAL, $response->getBody());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Delete created event
|
||
|
*/
|
||
|
public function testDelete()
|
||
|
{
|
||
|
$response = $this->getClient()->delete($this->url(self::EVENT_URL));
|
||
|
|
||
|
$this->assertHttpStatus(204, $response);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Read created event
|
||
|
*/
|
||
|
public function testReadDeleted()
|
||
|
{
|
||
|
$response = $this->getClient()->get($this->url(self::EVENT_URL));
|
||
|
|
||
|
$this->assertHttpStatus(404, $response);
|
||
|
}
|
||
|
}
|