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