array( 'obj1' => array( 'calendarid' => 1, 'uri' => 'event1.ics', 'calendardata' => $obj1, ), 'obj2' => array( 'calendarid' => 1, 'uri' => 'event2.ics', 'calendardata' => $obj2 ) ), ); $caldavBackend = new Sabre_CalDAV_Backend_Mock(array(), $calendarData); $principalBackend = new Sabre_DAVACL_MockPrincipalBackend(); $calendar = new Sabre_CalDAV_Calendar($principalBackend,$caldavBackend, array( 'id' => 1, 'uri' => 'calendar', 'principaluri' => 'principals/user1', )); $this->server = new Sabre_DAV_Server(array($calendar)); $request = new Sabre_HTTP_Request(array( 'REQUEST_URI' => '/calendar', )); $this->server->httpRequest = $request; $this->server->httpResponse = new Sabre_HTTP_ResponseMock(); $this->plugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($this->plugin); $this->server->addPlugin(new Sabre_DAVACL_Plugin()); } function testFreeBusyReport() { $reportXML = << XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML); $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom); $this->assertEquals('HTTP/1.1 200 OK', $this->server->httpResponse->status); $this->assertEquals('text/calendar', $this->server->httpResponse->headers['Content-Type']); $this->assertTrue(strpos($this->server->httpResponse->body,'BEGIN:VFREEBUSY')!==false); } /** * @expectedException Sabre_DAV_Exception_BadRequest */ function testFreeBusyReportNoTimeRange() { $reportXML = << XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML); $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom); } /** * @expectedException Sabre_DAV_Exception_NotImplemented */ function testFreeBusyReportWrongNode() { $request = new Sabre_HTTP_Request(array( 'REQUEST_URI' => '/', )); $this->server->httpRequest = $request; $reportXML = << XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML); $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom); } /** * @expectedException Sabre_DAV_Exception */ function testFreeBusyReportNoACLPlugin() { $this->server = new Sabre_DAV_Server(); $this->plugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($this->plugin); $reportXML = << XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML); $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom); } }