3 require_once 'Sabre/CalDAV/Backend/Mock.php';
4 require_once 'Sabre/DAVACL/MockPrincipalBackend.php';
5 require_once 'Sabre/HTTP/ResponseMock.php';
7 class Sabre_CalDAV_FreeBusyReportTest extends PHPUnit_Framework_TestCase {
10 * @var Sabre_CalDAV_Plugin
14 * @var Sabre_DAV_Server
23 DTSTART:20111005T120000Z
28 $obj2 = fopen('php://memory','r+');
32 DTSTART:20121005T120000Z
40 $calendarData = array(
44 'uri' => 'event1.ics',
45 'calendardata' => $obj1,
49 'uri' => 'event2.ics',
50 'calendardata' => $obj2
56 $caldavBackend = new Sabre_CalDAV_Backend_Mock(array(), $calendarData);
57 $principalBackend = new Sabre_DAVACL_MockPrincipalBackend();
59 $calendar = new Sabre_CalDAV_Calendar($principalBackend,$caldavBackend, array(
62 'principaluri' => 'principals/user1',
65 $this->server = new Sabre_DAV_Server(array($calendar));
67 $request = new Sabre_HTTP_Request(array(
68 'REQUEST_URI' => '/calendar',
70 $this->server->httpRequest = $request;
71 $this->server->httpResponse = new Sabre_HTTP_ResponseMock();
73 $this->plugin = new Sabre_CalDAV_Plugin();
74 $this->server->addPlugin($this->plugin);
75 $this->server->addPlugin(new Sabre_DAVACL_Plugin());
79 function testFreeBusyReport() {
83 <c:free-busy-query xmlns:c="urn:ietf:params:xml:ns:caldav">
84 <c:time-range start="20111001T000000Z" end="20111101T000000Z" />
88 $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML);
89 $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);
91 $this->assertEquals('HTTP/1.1 200 OK', $this->server->httpResponse->status);
92 $this->assertEquals('text/calendar', $this->server->httpResponse->headers['Content-Type']);
93 $this->assertTrue(strpos($this->server->httpResponse->body,'BEGIN:VFREEBUSY')!==false);
98 * @expectedException Sabre_DAV_Exception_BadRequest
100 function testFreeBusyReportNoTimeRange() {
103 <?xml version="1.0"?>
104 <c:free-busy-query xmlns:c="urn:ietf:params:xml:ns:caldav">
108 $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML);
109 $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);
114 * @expectedException Sabre_DAV_Exception_NotImplemented
116 function testFreeBusyReportWrongNode() {
118 $request = new Sabre_HTTP_Request(array(
119 'REQUEST_URI' => '/',
121 $this->server->httpRequest = $request;
124 <?xml version="1.0"?>
125 <c:free-busy-query xmlns:c="urn:ietf:params:xml:ns:caldav">
126 <c:time-range start="20111001T000000Z" end="20111101T000000Z" />
130 $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML);
131 $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);
136 * @expectedException Sabre_DAV_Exception
138 function testFreeBusyReportNoACLPlugin() {
140 $this->server = new Sabre_DAV_Server();
141 $this->plugin = new Sabre_CalDAV_Plugin();
142 $this->server->addPlugin($this->plugin);
145 <?xml version="1.0"?>
146 <c:free-busy-query xmlns:c="urn:ietf:params:xml:ns:caldav">
147 <c:time-range start="20111001T000000Z" end="20111101T000000Z" />
151 $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML);
152 $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);