3 require_once 'Sabre/CalDAV/TestUtil.php';
4 require_once 'Sabre/DAV/Auth/MockBackend.php';
5 require_once 'Sabre/HTTP/ResponseMock.php';
7 class Sabre_CalDAV_ICSExportPluginTest extends PHPUnit_Framework_TestCase {
11 $p = new Sabre_CalDAV_ICSExportPlugin();
12 $s = new Sabre_DAV_Server();
17 function testBeforeMethod() {
19 if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
20 $cbackend = Sabre_CalDAV_TestUtil::getBackend();
21 $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
25 'principaluri' => 'admin',
29 new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
32 $p = new Sabre_CalDAV_ICSExportPlugin();
34 $s = new Sabre_DAV_Server($tree);
36 $s->addPlugin(new Sabre_CalDAV_Plugin());
38 $h = new Sabre_HTTP_Request(array(
39 'QUERY_STRING' => 'export',
43 $s->httpResponse = new Sabre_HTTP_ResponseMock();
45 $this->assertFalse($p->beforeMethod('GET','UUID-123467?export'));
47 $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status);
48 $this->assertEquals(array(
49 'Content-Type' => 'text/calendar',
50 ), $s->httpResponse->headers);
52 $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
54 $this->assertEquals(5,count($obj->children()));
55 $this->assertEquals(1,count($obj->VERSION));
56 $this->assertEquals(1,count($obj->CALSCALE));
57 $this->assertEquals(1,count($obj->PRODID));
58 $this->assertEquals(1,count($obj->VTIMEZONE));
59 $this->assertEquals(1,count($obj->VEVENT));
63 function testBeforeMethodNoGET() {
65 $p = new Sabre_CalDAV_ICSExportPlugin();
67 $s = new Sabre_DAV_Server();
70 $this->assertNull($p->beforeMethod('POST','UUID-123467?export'));
74 function testBeforeMethodNoExport() {
76 $p = new Sabre_CalDAV_ICSExportPlugin();
78 $s = new Sabre_DAV_Server();
81 $this->assertNull($p->beforeMethod('GET','UUID-123467'));
86 * @expectedException Sabre_DAVACL_Exception_NeedPrivileges
88 function testACLIntegrationBlocked() {
90 if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
91 $cbackend = Sabre_CalDAV_TestUtil::getBackend();
92 $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
96 'principaluri' => 'admin',
100 new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
103 $p = new Sabre_CalDAV_ICSExportPlugin();
105 $s = new Sabre_DAV_Server($tree);
107 $s->addPlugin(new Sabre_CalDAV_Plugin());
108 $s->addPlugin(new Sabre_DAVACL_Plugin());
110 $h = new Sabre_HTTP_Request(array(
111 'QUERY_STRING' => 'export',
114 $s->httpRequest = $h;
115 $s->httpResponse = new Sabre_HTTP_ResponseMock();
117 $p->beforeMethod('GET','UUID-123467?export');
121 function testACLIntegrationNotBlocked() {
123 if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
124 $cbackend = Sabre_CalDAV_TestUtil::getBackend();
125 $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
128 'uri'=>'UUID-123467',
129 'principaluri' => 'admin',
133 new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
134 new Sabre_DAVACL_PrincipalCollection($pbackend),
137 $p = new Sabre_CalDAV_ICSExportPlugin();
139 $s = new Sabre_DAV_Server($tree);
141 $s->addPlugin(new Sabre_CalDAV_Plugin());
142 $s->addPlugin(new Sabre_DAVACL_Plugin());
143 $s->addPlugin(new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'SabreDAV'));
146 $s->getPlugin('acl')->adminPrincipals = array('principals/admin');
148 $h = new Sabre_HTTP_Request(array(
149 'QUERY_STRING' => 'export',
150 'REQUEST_URI' => '/UUID-123467',
151 'REQUEST_METHOD' => 'GET',
154 $s->httpRequest = $h;
155 $s->httpResponse = new Sabre_HTTP_ResponseMock();
159 $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
160 $this->assertEquals(array(
161 'Content-Type' => 'text/calendar',
162 ), $s->httpResponse->headers);
164 $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
166 $this->assertEquals(5,count($obj->children()));
167 $this->assertEquals(1,count($obj->VERSION));
168 $this->assertEquals(1,count($obj->CALSCALE));
169 $this->assertEquals(1,count($obj->PRODID));
170 $this->assertEquals(1,count($obj->VTIMEZONE));
171 $this->assertEquals(1,count($obj->VEVENT));