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->assertTrue(strpos((string)$obj->PRODID, Sabre_DAV_Version::VERSION)!==false);
59 $this->assertEquals(1,count($obj->VTIMEZONE));
60 $this->assertEquals(1,count($obj->VEVENT));
63 function testBeforeMethodNoVersion() {
65 if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
66 $cbackend = Sabre_CalDAV_TestUtil::getBackend();
67 $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
71 'principaluri' => 'admin',
75 new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
78 $p = new Sabre_CalDAV_ICSExportPlugin();
80 $s = new Sabre_DAV_Server($tree);
83 $s->addPlugin(new Sabre_CalDAV_Plugin());
85 $h = new Sabre_HTTP_Request(array(
86 'QUERY_STRING' => 'export',
90 $s->httpResponse = new Sabre_HTTP_ResponseMock();
92 Sabre_DAV_Server::$exposeVersion = false;
93 $this->assertFalse($p->beforeMethod('GET','UUID-123467?export'));
94 Sabre_DAV_Server::$exposeVersion = true;
96 $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status);
97 $this->assertEquals(array(
98 'Content-Type' => 'text/calendar',
99 ), $s->httpResponse->headers);
101 $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
103 $this->assertEquals(5,count($obj->children()));
104 $this->assertEquals(1,count($obj->VERSION));
105 $this->assertEquals(1,count($obj->CALSCALE));
106 $this->assertEquals(1,count($obj->PRODID));
107 $this->assertFalse(strpos((string)$obj->PRODID, Sabre_DAV_Version::VERSION)!==false);
108 $this->assertEquals(1,count($obj->VTIMEZONE));
109 $this->assertEquals(1,count($obj->VEVENT));
113 function testBeforeMethodNoGET() {
115 $p = new Sabre_CalDAV_ICSExportPlugin();
117 $s = new Sabre_DAV_Server();
120 $this->assertNull($p->beforeMethod('POST','UUID-123467?export'));
124 function testBeforeMethodNoExport() {
126 $p = new Sabre_CalDAV_ICSExportPlugin();
128 $s = new Sabre_DAV_Server();
131 $this->assertNull($p->beforeMethod('GET','UUID-123467'));
136 * @expectedException Sabre_DAVACL_Exception_NeedPrivileges
138 function testACLIntegrationBlocked() {
140 if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
141 $cbackend = Sabre_CalDAV_TestUtil::getBackend();
142 $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
145 'uri'=>'UUID-123467',
146 'principaluri' => 'admin',
150 new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
153 $p = new Sabre_CalDAV_ICSExportPlugin();
155 $s = new Sabre_DAV_Server($tree);
157 $s->addPlugin(new Sabre_CalDAV_Plugin());
158 $s->addPlugin(new Sabre_DAVACL_Plugin());
160 $h = new Sabre_HTTP_Request(array(
161 'QUERY_STRING' => 'export',
164 $s->httpRequest = $h;
165 $s->httpResponse = new Sabre_HTTP_ResponseMock();
167 $p->beforeMethod('GET','UUID-123467?export');
171 function testACLIntegrationNotBlocked() {
173 if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
174 $cbackend = Sabre_CalDAV_TestUtil::getBackend();
175 $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
178 'uri'=>'UUID-123467',
179 'principaluri' => 'admin',
183 new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
184 new Sabre_DAVACL_PrincipalCollection($pbackend),
187 $p = new Sabre_CalDAV_ICSExportPlugin();
189 $s = new Sabre_DAV_Server($tree);
191 $s->addPlugin(new Sabre_CalDAV_Plugin());
192 $s->addPlugin(new Sabre_DAVACL_Plugin());
193 $s->addPlugin(new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'SabreDAV'));
196 $s->getPlugin('acl')->adminPrincipals = array('principals/admin');
198 $h = new Sabre_HTTP_Request(array(
199 'QUERY_STRING' => 'export',
200 'REQUEST_URI' => '/UUID-123467',
201 'REQUEST_METHOD' => 'GET',
204 $s->httpRequest = $h;
205 $s->httpResponse = new Sabre_HTTP_ResponseMock();
209 $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
210 $this->assertEquals(array(
211 'Content-Type' => 'text/calendar',
212 ), $s->httpResponse->headers);
214 $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
216 $this->assertEquals(5,count($obj->children()));
217 $this->assertEquals(1,count($obj->VERSION));
218 $this->assertEquals(1,count($obj->CALSCALE));
219 $this->assertEquals(1,count($obj->PRODID));
220 $this->assertEquals(1,count($obj->VTIMEZONE));
221 $this->assertEquals(1,count($obj->VEVENT));