[ 'obj1' => [ 'calendarid' => 1, 'uri' => 'event1.ics', 'calendardata' => $obj1, ], 'obj2' => [ 'calendarid' => 1, 'uri' => 'event2.ics', 'calendardata' => $obj2, ], 'obj3' => [ 'calendarid' => 1, 'uri' => 'event3.ics', 'calendardata' => $obj3, ], ], ]; $caldavBackend = new Backend\Mock([], $calendarData); $calendar = new Calendar($caldavBackend, [ 'id' => 1, 'uri' => 'calendar', 'principaluri' => 'principals/user1', '{'.Plugin::NS_CALDAV.'}calendar-timezone' => "BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\nEND:VCALENDAR", ]); $this->server = new DAV\Server([$calendar]); $request = new HTTP\Request('GET', '/calendar'); $this->server->httpRequest = $request; $this->server->httpResponse = new HTTP\ResponseMock(); $this->plugin = new Plugin(); $this->server->addPlugin($this->plugin); } public function testFreeBusyReport() { $reportXML = << XML; $report = $this->server->xml->parse($reportXML, null, $rootElem); $this->plugin->report($rootElem, $report, null); $this->assertEquals(200, $this->server->httpResponse->status); $this->assertEquals('text/calendar', $this->server->httpResponse->getHeader('Content-Type')); $this->assertTrue(false !== strpos($this->server->httpResponse->body, 'BEGIN:VFREEBUSY')); $this->assertTrue(false !== strpos($this->server->httpResponse->body, '20111005T120000Z/20111005T130000Z')); $this->assertTrue(false !== strpos($this->server->httpResponse->body, '20111006T100000Z/20111006T110000Z')); } /** * @expectedException \Sabre\DAV\Exception\BadRequest */ public function testFreeBusyReportNoTimeRange() { $reportXML = << XML; $report = $this->server->xml->parse($reportXML, null, $rootElem); } /** * @expectedException \Sabre\DAV\Exception\NotImplemented */ public function testFreeBusyReportWrongNode() { $request = new HTTP\Request('REPORT', '/'); $this->server->httpRequest = $request; $reportXML = << XML; $report = $this->server->xml->parse($reportXML, null, $rootElem); $this->plugin->report($rootElem, $report, null); } /** * @expectedException \Sabre\DAV\Exception */ public function testFreeBusyReportNoACLPlugin() { $this->server = new DAV\Server(); $this->server->httpRequest = new HTTP\Request('REPORT', '/'); $this->plugin = new Plugin(); $this->server->addPlugin($this->plugin); $reportXML = << XML; $report = $this->server->xml->parse($reportXML, null, $rootElem); $this->plugin->report($rootElem, $report, null); } }