]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/tests/Sabre/CalDAV/ICSExportPluginTest.php
d23b81231b2896d2401b18302d6c096056e2407f
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / CalDAV / ICSExportPluginTest.php
1 <?php
2
3 require_once 'Sabre/CalDAV/TestUtil.php';
4 require_once 'Sabre/DAV/Auth/MockBackend.php';
5 require_once 'Sabre/HTTP/ResponseMock.php';
6
7 class Sabre_CalDAV_ICSExportPluginTest extends PHPUnit_Framework_TestCase {
8
9     function testInit() {
10
11         $p = new Sabre_CalDAV_ICSExportPlugin();
12         $s = new Sabre_DAV_Server();
13         $s->addPlugin($p);
14
15     }
16
17     function testBeforeMethod() {
18
19         if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
20         $cbackend = Sabre_CalDAV_TestUtil::getBackend();
21         $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
22
23         $props = array(
24             'uri'=>'UUID-123467',
25             'principaluri' => 'admin',
26             'id' => 1,
27         );
28         $tree = array(
29             new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
30         );
31
32         $p = new Sabre_CalDAV_ICSExportPlugin();
33
34         $s = new Sabre_DAV_Server($tree);
35         $s->addPlugin($p);
36         $s->addPlugin(new Sabre_CalDAV_Plugin());
37
38         $h = new Sabre_HTTP_Request(array(
39             'QUERY_STRING' => 'export',
40         ));
41
42         $s->httpRequest = $h;
43         $s->httpResponse = new Sabre_HTTP_ResponseMock();
44
45         $this->assertFalse($p->beforeMethod('GET','UUID-123467?export'));
46
47         $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status);
48         $this->assertEquals(array(
49             'Content-Type' => 'text/calendar',
50         ), $s->httpResponse->headers);
51
52         $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
53
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));
61
62     }
63     function testBeforeMethodNoVersion() {
64
65         if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
66         $cbackend = Sabre_CalDAV_TestUtil::getBackend();
67         $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
68
69         $props = array(
70             'uri'=>'UUID-123467',
71             'principaluri' => 'admin',
72             'id' => 1,
73         );
74         $tree = array(
75             new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
76         );
77
78         $p = new Sabre_CalDAV_ICSExportPlugin();
79
80         $s = new Sabre_DAV_Server($tree);
81
82         $s->addPlugin($p);
83         $s->addPlugin(new Sabre_CalDAV_Plugin());
84
85         $h = new Sabre_HTTP_Request(array(
86             'QUERY_STRING' => 'export',
87         ));
88
89         $s->httpRequest = $h;
90         $s->httpResponse = new Sabre_HTTP_ResponseMock();
91
92         Sabre_DAV_Server::$exposeVersion = false;
93         $this->assertFalse($p->beforeMethod('GET','UUID-123467?export'));
94         Sabre_DAV_Server::$exposeVersion = true; 
95
96         $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status);
97         $this->assertEquals(array(
98             'Content-Type' => 'text/calendar',
99         ), $s->httpResponse->headers);
100
101         $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
102
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));
110
111     }
112
113     function testBeforeMethodNoGET() {
114
115         $p = new Sabre_CalDAV_ICSExportPlugin();
116
117         $s = new Sabre_DAV_Server();
118         $s->addPlugin($p);
119
120         $this->assertNull($p->beforeMethod('POST','UUID-123467?export'));
121
122     }
123
124     function testBeforeMethodNoExport() {
125
126         $p = new Sabre_CalDAV_ICSExportPlugin();
127
128         $s = new Sabre_DAV_Server();
129         $s->addPlugin($p);
130
131         $this->assertNull($p->beforeMethod('GET','UUID-123467'));
132
133     }
134
135     /**
136      * @expectedException Sabre_DAVACL_Exception_NeedPrivileges
137      */
138     function testACLIntegrationBlocked() {
139
140         if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
141         $cbackend = Sabre_CalDAV_TestUtil::getBackend();
142         $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
143
144         $props = array(
145             'uri'=>'UUID-123467',
146             'principaluri' => 'admin',
147             'id' => 1,
148         );
149         $tree = array(
150             new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
151         );
152
153         $p = new Sabre_CalDAV_ICSExportPlugin();
154
155         $s = new Sabre_DAV_Server($tree);
156         $s->addPlugin($p);
157         $s->addPlugin(new Sabre_CalDAV_Plugin());
158         $s->addPlugin(new Sabre_DAVACL_Plugin());
159
160         $h = new Sabre_HTTP_Request(array(
161             'QUERY_STRING' => 'export',
162         ));
163
164         $s->httpRequest = $h;
165         $s->httpResponse = new Sabre_HTTP_ResponseMock();
166
167         $p->beforeMethod('GET','UUID-123467?export');
168
169     }
170
171     function testACLIntegrationNotBlocked() {
172
173         if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
174         $cbackend = Sabre_CalDAV_TestUtil::getBackend();
175         $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
176
177         $props = array(
178             'uri'=>'UUID-123467',
179             'principaluri' => 'admin',
180             'id' => 1,
181         );
182         $tree = array(
183             new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
184             new Sabre_DAVACL_PrincipalCollection($pbackend),
185         );
186
187         $p = new Sabre_CalDAV_ICSExportPlugin();
188
189         $s = new Sabre_DAV_Server($tree);
190         $s->addPlugin($p);
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'));
194
195         // Forcing login
196         $s->getPlugin('acl')->adminPrincipals = array('principals/admin');
197
198         $h = new Sabre_HTTP_Request(array(
199             'QUERY_STRING' => 'export',
200             'REQUEST_URI' => '/UUID-123467',
201             'REQUEST_METHOD' => 'GET',
202         ));
203
204         $s->httpRequest = $h;
205         $s->httpResponse = new Sabre_HTTP_ResponseMock();
206
207         $s->exec();
208
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);
213
214         $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
215
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));
222
223     }
224 }