]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/tests/Sabre/CalDAV/ValidateICalTest.php
Merge pull request #57 from CatoTH/master
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / CalDAV / ValidateICalTest.php
1 <?php
2
3 require_once 'Sabre/CalDAV/Backend/Mock.php';
4 require_once 'Sabre/DAVACL/MockPrincipalBackend.php';
5 require_once 'Sabre/HTTP/ResponseMock.php';
6
7 class Sabre_CalDAV_ValidateICalTest extends PHPUnit_Framework_TestCase {
8
9     /**
10      * @var Sabre_DAV_Server
11      */
12     protected $server;
13     /**
14      * @var Sabre_CalDAV_Backend_Mock
15      */
16     protected $calBackend;
17
18     function setUp() {
19
20         $calendars = array(
21             array(
22                 'id' => 'calendar1',
23                 'principaluri' => 'principals/admin',
24                 'uri' => 'calendar1',
25             )
26         );
27
28         $this->calBackend = new Sabre_CalDAV_Backend_Mock($calendars,array());
29         $principalBackend = new Sabre_DAVACL_MockPrincipalBackend();
30
31         $tree = array(
32             new Sabre_CalDAV_CalendarRootNode($principalBackend, $this->calBackend),
33         );
34
35         $this->server = new Sabre_DAV_Server($tree);
36         $this->server->debugExceptions = true;
37
38         $plugin = new Sabre_CalDAV_Plugin();
39         $this->server->addPlugin($plugin);
40
41         $response = new Sabre_HTTP_ResponseMock();
42         $this->server->httpResponse = $response;
43
44     }
45
46     function request(Sabre_HTTP_Request $request) {
47
48         $this->server->httpRequest = $request;
49         $this->server->exec();
50
51         return $this->server->httpResponse;
52
53     }
54
55     function testCreateFile() {
56
57         $request = new Sabre_HTTP_Request(array(
58             'REQUEST_METHOD' => 'PUT',
59             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
60         ));
61
62         $response = $this->request($request);
63
64         $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status);
65
66     }
67
68     function testCreateFileValid() {
69
70         $request = new Sabre_HTTP_Request(array(
71             'REQUEST_METHOD' => 'PUT',
72             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
73         ));
74         $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
75
76         $response = $this->request($request);
77
78         $this->assertEquals('HTTP/1.1 201 Created', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
79         $expected = array(
80             'uri'          => 'blabla.ics',
81             'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
82             'calendarid'   => 'calendar1',
83         );
84
85         $this->assertEquals($expected, $this->calBackend->getCalendarObject('calendar1','blabla.ics'));
86
87     }
88
89     function testCreateFileNoComponents() {
90
91         $request = new Sabre_HTTP_Request(array(
92             'REQUEST_METHOD' => 'PUT',
93             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
94         ));
95         $request->setBody("BEGIN:VCALENDAR\r\nEND:VCALENDAR\r\n");
96
97         $response = $this->request($request);
98
99         $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
100
101     }
102
103     function testCreateFileNoUID() {
104
105         $request = new Sabre_HTTP_Request(array(
106             'REQUEST_METHOD' => 'PUT',
107             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
108         ));
109         $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
110
111         $response = $this->request($request);
112
113         $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
114
115     }
116
117     function testCreateFileVCard() {
118
119         $request = new Sabre_HTTP_Request(array(
120             'REQUEST_METHOD' => 'PUT',
121             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
122         ));
123         $request->setBody("BEGIN:VCARD\r\nEND:VCARD\r\n");
124
125         $response = $this->request($request);
126
127         $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
128
129     }
130
131     function testCreateFile2Components() {
132
133         $request = new Sabre_HTTP_Request(array(
134             'REQUEST_METHOD' => 'PUT',
135             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
136         ));
137         $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nBEGIN:VJOURNAL\r\nUID:foo\r\nEND:VJOURNAL\r\nEND:VCALENDAR\r\n");
138
139         $response = $this->request($request);
140
141         $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
142
143     }
144
145     function testCreateFile2UIDS() {
146
147         $request = new Sabre_HTTP_Request(array(
148             'REQUEST_METHOD' => 'PUT',
149             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
150         ));
151         $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:bar\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
152
153         $response = $this->request($request);
154
155         $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
156
157     }
158
159     function testCreateFileWrongComponent() {
160
161         $request = new Sabre_HTTP_Request(array(
162             'REQUEST_METHOD' => 'PUT',
163             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
164         ));
165         $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nBEGIN:VFREEBUSY\r\nUID:foo\r\nEND:VFREEBUSY\r\nEND:VCALENDAR\r\n");
166
167         $response = $this->request($request);
168
169         $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
170
171     }
172
173     function testUpdateFile() {
174
175         $this->calBackend->createCalendarObject('calendar1','blabla.ics','foo');
176         $request = new Sabre_HTTP_Request(array(
177             'REQUEST_METHOD' => 'PUT',
178             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
179         ));
180
181         $response = $this->request($request);
182
183         $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status);
184
185     }
186
187     function testUpdateFileParsableBody() {
188
189         $this->calBackend->createCalendarObject('calendar1','blabla.ics','foo');
190         $request = new Sabre_HTTP_Request(array(
191             'REQUEST_METHOD' => 'PUT',
192             'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
193         ));
194         $body = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
195         $request->setBody($body);
196
197         $response = $this->request($request);
198
199         $this->assertEquals('HTTP/1.1 204 No Content', $response->status);
200
201         $expected = array(
202             'uri'          => 'blabla.ics',
203             'calendardata' => $body,
204             'calendarid'   => 'calendar1',
205         );
206
207         $this->assertEquals($expected, $this->calBackend->getCalendarObject('calendar1','blabla.ics'));
208
209     }
210 }