]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/tests/Sabre/CalDAV/ICSExportPluginTest.php
Merge branch 'master' of git://github.com/friendica/friendica-addons
[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->assertEquals(1,count($obj->VTIMEZONE));
59         $this->assertEquals(1,count($obj->VEVENT));
60
61     }
62
63     function testBeforeMethodNoGET() {
64
65         $p = new Sabre_CalDAV_ICSExportPlugin();
66
67         $s = new Sabre_DAV_Server();
68         $s->addPlugin($p);
69
70         $this->assertNull($p->beforeMethod('POST','UUID-123467?export'));
71
72     }
73
74     function testBeforeMethodNoExport() {
75
76         $p = new Sabre_CalDAV_ICSExportPlugin();
77
78         $s = new Sabre_DAV_Server();
79         $s->addPlugin($p);
80
81         $this->assertNull($p->beforeMethod('GET','UUID-123467'));
82
83     }
84
85     /**
86      * @expectedException Sabre_DAVACL_Exception_NeedPrivileges
87      */
88     function testACLIntegrationBlocked() {
89
90         if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
91         $cbackend = Sabre_CalDAV_TestUtil::getBackend();
92         $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
93
94         $props = array(
95             'uri'=>'UUID-123467',
96             'principaluri' => 'admin',
97             'id' => 1,
98         );
99         $tree = array(
100             new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
101         );
102
103         $p = new Sabre_CalDAV_ICSExportPlugin();
104
105         $s = new Sabre_DAV_Server($tree);
106         $s->addPlugin($p);
107         $s->addPlugin(new Sabre_CalDAV_Plugin());
108         $s->addPlugin(new Sabre_DAVACL_Plugin());
109
110         $h = new Sabre_HTTP_Request(array(
111             'QUERY_STRING' => 'export',
112         ));
113
114         $s->httpRequest = $h;
115         $s->httpResponse = new Sabre_HTTP_ResponseMock();
116
117         $p->beforeMethod('GET','UUID-123467?export');
118
119     }
120
121     function testACLIntegrationNotBlocked() {
122
123         if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
124         $cbackend = Sabre_CalDAV_TestUtil::getBackend();
125         $pbackend = new Sabre_DAVACL_MockPrincipalBackend();
126
127         $props = array(
128             'uri'=>'UUID-123467',
129             'principaluri' => 'admin',
130             'id' => 1,
131         );
132         $tree = array(
133             new Sabre_CalDAV_Calendar($pbackend,$cbackend,$props),
134             new Sabre_DAVACL_PrincipalCollection($pbackend),
135         );
136
137         $p = new Sabre_CalDAV_ICSExportPlugin();
138
139         $s = new Sabre_DAV_Server($tree);
140         $s->addPlugin($p);
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'));
144
145         // Forcing login
146         $s->getPlugin('acl')->adminPrincipals = array('principals/admin');
147
148         $h = new Sabre_HTTP_Request(array(
149             'QUERY_STRING' => 'export',
150             'REQUEST_URI' => '/UUID-123467',
151             'REQUEST_METHOD' => 'GET',
152         ));
153
154         $s->httpRequest = $h;
155         $s->httpResponse = new Sabre_HTTP_ResponseMock();
156
157         $s->exec();
158
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);
163
164         $obj = Sabre_VObject_Reader::read($s->httpResponse->body);
165
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));
172
173     }
174 }