xref: /plugin/davcal/vendor/sabre/vobject/tests/VObject/ITip/BrokerNewEventTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\VObject\ITip;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehlerclass BrokerNewEventTest extends \PHPUnit_Framework_TestCase {
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler    function testNoAttendee() {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler        $message = <<<ICS
10*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
11*a1a3b679SAndreas BoehlerBEGIN:VEVENT
12*a1a3b679SAndreas BoehlerUID:foobar
13*a1a3b679SAndreas BoehlerDTSTART:20140811T220000Z
14*a1a3b679SAndreas BoehlerEND:VEVENT
15*a1a3b679SAndreas BoehlerEND:VCALENDAR
16*a1a3b679SAndreas BoehlerICS;
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler        $result = $this->parse($message);
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler    }
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler    function testVTODO() {
23*a1a3b679SAndreas Boehler
24*a1a3b679SAndreas Boehler        $message = <<<ICS
25*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
26*a1a3b679SAndreas BoehlerBEGIN:VTODO
27*a1a3b679SAndreas BoehlerUID:foobar
28*a1a3b679SAndreas BoehlerEND:VTODO
29*a1a3b679SAndreas BoehlerEND:VCALENDAR
30*a1a3b679SAndreas BoehlerICS;
31*a1a3b679SAndreas Boehler
32*a1a3b679SAndreas Boehler        $result = $this->parse($message);
33*a1a3b679SAndreas Boehler
34*a1a3b679SAndreas Boehler    }
35*a1a3b679SAndreas Boehler
36*a1a3b679SAndreas Boehler    function testSimpleInvite() {
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler        $message = <<<ICS
39*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
40*a1a3b679SAndreas BoehlerVERSION:2.0
41*a1a3b679SAndreas BoehlerBEGIN:VEVENT
42*a1a3b679SAndreas BoehlerUID:foobar
43*a1a3b679SAndreas BoehlerDTSTART:20140811T220000Z
44*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
45*a1a3b679SAndreas BoehlerATTENDEE;CN=White:mailto:white@example.org
46*a1a3b679SAndreas BoehlerEND:VEVENT
47*a1a3b679SAndreas BoehlerEND:VCALENDAR
48*a1a3b679SAndreas BoehlerICS;
49*a1a3b679SAndreas Boehler
50*a1a3b679SAndreas Boehler        $version = \Sabre\VObject\Version::VERSION;
51*a1a3b679SAndreas Boehler        $expectedMessage = <<<ICS
52*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
53*a1a3b679SAndreas BoehlerVERSION:2.0
54*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
55*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
56*a1a3b679SAndreas BoehlerMETHOD:REQUEST
57*a1a3b679SAndreas BoehlerBEGIN:VEVENT
58*a1a3b679SAndreas BoehlerUID:foobar
59*a1a3b679SAndreas BoehlerDTSTART:20140811T220000Z
60*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
61*a1a3b679SAndreas BoehlerATTENDEE;CN=White;PARTSTAT=NEEDS-ACTION:mailto:white@example.org
62*a1a3b679SAndreas BoehlerEND:VEVENT
63*a1a3b679SAndreas BoehlerEND:VCALENDAR
64*a1a3b679SAndreas BoehlerICS;
65*a1a3b679SAndreas Boehler
66*a1a3b679SAndreas Boehler        $expected = array(
67*a1a3b679SAndreas Boehler            array(
68*a1a3b679SAndreas Boehler                'uid' => 'foobar',
69*a1a3b679SAndreas Boehler                'method' => 'REQUEST',
70*a1a3b679SAndreas Boehler                'component' => 'VEVENT',
71*a1a3b679SAndreas Boehler                'sender' => 'mailto:strunk@example.org',
72*a1a3b679SAndreas Boehler                'senderName' => 'Strunk',
73*a1a3b679SAndreas Boehler                'recipient' => 'mailto:white@example.org',
74*a1a3b679SAndreas Boehler                'recipientName' => 'White',
75*a1a3b679SAndreas Boehler                'message' => $expectedMessage,
76*a1a3b679SAndreas Boehler            ),
77*a1a3b679SAndreas Boehler        );
78*a1a3b679SAndreas Boehler
79*a1a3b679SAndreas Boehler        $result = $this->parse($message, $expected);
80*a1a3b679SAndreas Boehler
81*a1a3b679SAndreas Boehler    }
82*a1a3b679SAndreas Boehler
83*a1a3b679SAndreas Boehler    /**
84*a1a3b679SAndreas Boehler     * @expectedException \Sabre\VObject\ITip\ITipException
85*a1a3b679SAndreas Boehler     */
86*a1a3b679SAndreas Boehler    function testBrokenEventUIDMisMatch() {
87*a1a3b679SAndreas Boehler
88*a1a3b679SAndreas Boehler        $message = <<<ICS
89*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
90*a1a3b679SAndreas BoehlerVERSION:2.0
91*a1a3b679SAndreas BoehlerBEGIN:VEVENT
92*a1a3b679SAndreas BoehlerUID:foobar
93*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
94*a1a3b679SAndreas BoehlerATTENDEE;CN=White:mailto:white@example.org
95*a1a3b679SAndreas BoehlerEND:VEVENT
96*a1a3b679SAndreas BoehlerBEGIN:VEVENT
97*a1a3b679SAndreas BoehlerUID:foobar2
98*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
99*a1a3b679SAndreas BoehlerATTENDEE;CN=White:mailto:white@example.org
100*a1a3b679SAndreas BoehlerEND:VEVENT
101*a1a3b679SAndreas BoehlerEND:VCALENDAR
102*a1a3b679SAndreas BoehlerICS;
103*a1a3b679SAndreas Boehler
104*a1a3b679SAndreas Boehler        $expected = array();
105*a1a3b679SAndreas Boehler        $this->parse($message, array());
106*a1a3b679SAndreas Boehler
107*a1a3b679SAndreas Boehler    }
108*a1a3b679SAndreas Boehler    /**
109*a1a3b679SAndreas Boehler     * @expectedException \Sabre\VObject\ITip\ITipException
110*a1a3b679SAndreas Boehler     */
111*a1a3b679SAndreas Boehler    function testBrokenEventOrganizerMisMatch() {
112*a1a3b679SAndreas Boehler
113*a1a3b679SAndreas Boehler        $message = <<<ICS
114*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
115*a1a3b679SAndreas BoehlerVERSION:2.0
116*a1a3b679SAndreas BoehlerBEGIN:VEVENT
117*a1a3b679SAndreas BoehlerUID:foobar
118*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
119*a1a3b679SAndreas BoehlerATTENDEE;CN=White:mailto:white@example.org
120*a1a3b679SAndreas BoehlerEND:VEVENT
121*a1a3b679SAndreas BoehlerBEGIN:VEVENT
122*a1a3b679SAndreas BoehlerUID:foobar
123*a1a3b679SAndreas BoehlerORGANIZER:mailto:foo@example.org
124*a1a3b679SAndreas BoehlerATTENDEE;CN=White:mailto:white@example.org
125*a1a3b679SAndreas BoehlerEND:VEVENT
126*a1a3b679SAndreas BoehlerEND:VCALENDAR
127*a1a3b679SAndreas BoehlerICS;
128*a1a3b679SAndreas Boehler
129*a1a3b679SAndreas Boehler        $expected = array();
130*a1a3b679SAndreas Boehler        $this->parse($message, array());
131*a1a3b679SAndreas Boehler
132*a1a3b679SAndreas Boehler    }
133*a1a3b679SAndreas Boehler
134*a1a3b679SAndreas Boehler    function testRecurrenceInvite() {
135*a1a3b679SAndreas Boehler
136*a1a3b679SAndreas Boehler        $message = <<<ICS
137*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
138*a1a3b679SAndreas BoehlerVERSION:2.0
139*a1a3b679SAndreas BoehlerBEGIN:VEVENT
140*a1a3b679SAndreas BoehlerUID:foobar
141*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
142*a1a3b679SAndreas BoehlerATTENDEE;CN=One:mailto:one@example.org
143*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
144*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
145*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
146*a1a3b679SAndreas BoehlerEXDATE:20140717T120000Z
147*a1a3b679SAndreas BoehlerEND:VEVENT
148*a1a3b679SAndreas BoehlerBEGIN:VEVENT
149*a1a3b679SAndreas BoehlerUID:foobar
150*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
151*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
152*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
153*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
154*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
155*a1a3b679SAndreas BoehlerEND:VEVENT
156*a1a3b679SAndreas BoehlerEND:VCALENDAR
157*a1a3b679SAndreas BoehlerICS;
158*a1a3b679SAndreas Boehler
159*a1a3b679SAndreas Boehler        $version = \Sabre\VObject\Version::VERSION;
160*a1a3b679SAndreas Boehler
161*a1a3b679SAndreas Boehler        $expected = array(
162*a1a3b679SAndreas Boehler            array(
163*a1a3b679SAndreas Boehler                'uid' => 'foobar',
164*a1a3b679SAndreas Boehler                'method' => 'REQUEST',
165*a1a3b679SAndreas Boehler                'component' => 'VEVENT',
166*a1a3b679SAndreas Boehler                'sender' => 'mailto:strunk@example.org',
167*a1a3b679SAndreas Boehler                'senderName' => 'Strunk',
168*a1a3b679SAndreas Boehler                'recipient' => 'mailto:one@example.org',
169*a1a3b679SAndreas Boehler                'recipientName' => 'One',
170*a1a3b679SAndreas Boehler                'message' => <<<ICS
171*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
172*a1a3b679SAndreas BoehlerVERSION:2.0
173*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
174*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
175*a1a3b679SAndreas BoehlerMETHOD:REQUEST
176*a1a3b679SAndreas BoehlerBEGIN:VEVENT
177*a1a3b679SAndreas BoehlerUID:foobar
178*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
179*a1a3b679SAndreas BoehlerATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
180*a1a3b679SAndreas BoehlerATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
181*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
182*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
183*a1a3b679SAndreas BoehlerEXDATE:20140717T120000Z,20140718T120000Z
184*a1a3b679SAndreas BoehlerEND:VEVENT
185*a1a3b679SAndreas BoehlerEND:VCALENDAR
186*a1a3b679SAndreas BoehlerICS
187*a1a3b679SAndreas Boehler
188*a1a3b679SAndreas Boehler            ),
189*a1a3b679SAndreas Boehler            array(
190*a1a3b679SAndreas Boehler                'uid' => 'foobar',
191*a1a3b679SAndreas Boehler                'method' => 'REQUEST',
192*a1a3b679SAndreas Boehler                'component' => 'VEVENT',
193*a1a3b679SAndreas Boehler                'sender' => 'mailto:strunk@example.org',
194*a1a3b679SAndreas Boehler                'senderName' => 'Strunk',
195*a1a3b679SAndreas Boehler                'recipient' => 'mailto:two@example.org',
196*a1a3b679SAndreas Boehler                'recipientName' => 'Two',
197*a1a3b679SAndreas Boehler                'message' => <<<ICS
198*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
199*a1a3b679SAndreas BoehlerVERSION:2.0
200*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
201*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
202*a1a3b679SAndreas BoehlerMETHOD:REQUEST
203*a1a3b679SAndreas BoehlerBEGIN:VEVENT
204*a1a3b679SAndreas BoehlerUID:foobar
205*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
206*a1a3b679SAndreas BoehlerATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
207*a1a3b679SAndreas BoehlerATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
208*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
209*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
210*a1a3b679SAndreas BoehlerEXDATE:20140717T120000Z
211*a1a3b679SAndreas BoehlerEND:VEVENT
212*a1a3b679SAndreas BoehlerBEGIN:VEVENT
213*a1a3b679SAndreas BoehlerUID:foobar
214*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
215*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
216*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
217*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
218*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
219*a1a3b679SAndreas BoehlerEND:VEVENT
220*a1a3b679SAndreas BoehlerEND:VCALENDAR
221*a1a3b679SAndreas BoehlerICS
222*a1a3b679SAndreas Boehler
223*a1a3b679SAndreas Boehler            ),
224*a1a3b679SAndreas Boehler            array(
225*a1a3b679SAndreas Boehler                'uid' => 'foobar',
226*a1a3b679SAndreas Boehler                'method' => 'REQUEST',
227*a1a3b679SAndreas Boehler                'component' => 'VEVENT',
228*a1a3b679SAndreas Boehler                'sender' => 'mailto:strunk@example.org',
229*a1a3b679SAndreas Boehler                'senderName' => 'Strunk',
230*a1a3b679SAndreas Boehler                'recipient' => 'mailto:three@example.org',
231*a1a3b679SAndreas Boehler                'recipientName' => 'Three',
232*a1a3b679SAndreas Boehler                'message' => <<<ICS
233*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
234*a1a3b679SAndreas BoehlerVERSION:2.0
235*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
236*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
237*a1a3b679SAndreas BoehlerMETHOD:REQUEST
238*a1a3b679SAndreas BoehlerBEGIN:VEVENT
239*a1a3b679SAndreas BoehlerUID:foobar
240*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
241*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
242*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
243*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
244*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
245*a1a3b679SAndreas BoehlerEND:VEVENT
246*a1a3b679SAndreas BoehlerEND:VCALENDAR
247*a1a3b679SAndreas BoehlerICS
248*a1a3b679SAndreas Boehler
249*a1a3b679SAndreas Boehler            ),
250*a1a3b679SAndreas Boehler        );
251*a1a3b679SAndreas Boehler
252*a1a3b679SAndreas Boehler        $result = $this->parse($message, $expected);
253*a1a3b679SAndreas Boehler
254*a1a3b679SAndreas Boehler    }
255*a1a3b679SAndreas Boehler
256*a1a3b679SAndreas Boehler    function testRecurrenceInvite2() {
257*a1a3b679SAndreas Boehler
258*a1a3b679SAndreas Boehler        // This method tests a nearly identical path, but in this case the
259*a1a3b679SAndreas Boehler        // master event does not have an EXDATE.
260*a1a3b679SAndreas Boehler        $message = <<<ICS
261*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
262*a1a3b679SAndreas BoehlerVERSION:2.0
263*a1a3b679SAndreas BoehlerBEGIN:VEVENT
264*a1a3b679SAndreas BoehlerUID:foobar
265*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
266*a1a3b679SAndreas BoehlerATTENDEE;CN=One:mailto:one@example.org
267*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
268*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
269*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
270*a1a3b679SAndreas BoehlerEND:VEVENT
271*a1a3b679SAndreas BoehlerBEGIN:VEVENT
272*a1a3b679SAndreas BoehlerUID:foobar
273*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
274*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
275*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
276*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
277*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
278*a1a3b679SAndreas BoehlerEND:VEVENT
279*a1a3b679SAndreas BoehlerEND:VCALENDAR
280*a1a3b679SAndreas BoehlerICS;
281*a1a3b679SAndreas Boehler
282*a1a3b679SAndreas Boehler        $version = \Sabre\VObject\Version::VERSION;
283*a1a3b679SAndreas Boehler
284*a1a3b679SAndreas Boehler        $expected = array(
285*a1a3b679SAndreas Boehler            array(
286*a1a3b679SAndreas Boehler                'uid' => 'foobar',
287*a1a3b679SAndreas Boehler                'method' => 'REQUEST',
288*a1a3b679SAndreas Boehler                'component' => 'VEVENT',
289*a1a3b679SAndreas Boehler                'sender' => 'mailto:strunk@example.org',
290*a1a3b679SAndreas Boehler                'senderName' => 'Strunk',
291*a1a3b679SAndreas Boehler                'recipient' => 'mailto:one@example.org',
292*a1a3b679SAndreas Boehler                'recipientName' => 'One',
293*a1a3b679SAndreas Boehler                'message' => <<<ICS
294*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
295*a1a3b679SAndreas BoehlerVERSION:2.0
296*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
297*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
298*a1a3b679SAndreas BoehlerMETHOD:REQUEST
299*a1a3b679SAndreas BoehlerBEGIN:VEVENT
300*a1a3b679SAndreas BoehlerUID:foobar
301*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
302*a1a3b679SAndreas BoehlerATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
303*a1a3b679SAndreas BoehlerATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
304*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
305*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
306*a1a3b679SAndreas BoehlerEXDATE:20140718T120000Z
307*a1a3b679SAndreas BoehlerEND:VEVENT
308*a1a3b679SAndreas BoehlerEND:VCALENDAR
309*a1a3b679SAndreas BoehlerICS
310*a1a3b679SAndreas Boehler
311*a1a3b679SAndreas Boehler            ),
312*a1a3b679SAndreas Boehler            array(
313*a1a3b679SAndreas Boehler                'uid' => 'foobar',
314*a1a3b679SAndreas Boehler                'method' => 'REQUEST',
315*a1a3b679SAndreas Boehler                'component' => 'VEVENT',
316*a1a3b679SAndreas Boehler                'sender' => 'mailto:strunk@example.org',
317*a1a3b679SAndreas Boehler                'senderName' => 'Strunk',
318*a1a3b679SAndreas Boehler                'recipient' => 'mailto:two@example.org',
319*a1a3b679SAndreas Boehler                'recipientName' => 'Two',
320*a1a3b679SAndreas Boehler                'message' => <<<ICS
321*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
322*a1a3b679SAndreas BoehlerVERSION:2.0
323*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
324*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
325*a1a3b679SAndreas BoehlerMETHOD:REQUEST
326*a1a3b679SAndreas BoehlerBEGIN:VEVENT
327*a1a3b679SAndreas BoehlerUID:foobar
328*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
329*a1a3b679SAndreas BoehlerATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
330*a1a3b679SAndreas BoehlerATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
331*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
332*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
333*a1a3b679SAndreas BoehlerEND:VEVENT
334*a1a3b679SAndreas BoehlerBEGIN:VEVENT
335*a1a3b679SAndreas BoehlerUID:foobar
336*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
337*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
338*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
339*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
340*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
341*a1a3b679SAndreas BoehlerEND:VEVENT
342*a1a3b679SAndreas BoehlerEND:VCALENDAR
343*a1a3b679SAndreas BoehlerICS
344*a1a3b679SAndreas Boehler
345*a1a3b679SAndreas Boehler            ),
346*a1a3b679SAndreas Boehler            array(
347*a1a3b679SAndreas Boehler                'uid' => 'foobar',
348*a1a3b679SAndreas Boehler                'method' => 'REQUEST',
349*a1a3b679SAndreas Boehler                'component' => 'VEVENT',
350*a1a3b679SAndreas Boehler                'sender' => 'mailto:strunk@example.org',
351*a1a3b679SAndreas Boehler                'senderName' => 'Strunk',
352*a1a3b679SAndreas Boehler                'recipient' => 'mailto:three@example.org',
353*a1a3b679SAndreas Boehler                'recipientName' => 'Three',
354*a1a3b679SAndreas Boehler                'message' => <<<ICS
355*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
356*a1a3b679SAndreas BoehlerVERSION:2.0
357*a1a3b679SAndreas BoehlerPRODID:-//Sabre//Sabre VObject $version//EN
358*a1a3b679SAndreas BoehlerCALSCALE:GREGORIAN
359*a1a3b679SAndreas BoehlerMETHOD:REQUEST
360*a1a3b679SAndreas BoehlerBEGIN:VEVENT
361*a1a3b679SAndreas BoehlerUID:foobar
362*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
363*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
364*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
365*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
366*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
367*a1a3b679SAndreas BoehlerEND:VEVENT
368*a1a3b679SAndreas BoehlerEND:VCALENDAR
369*a1a3b679SAndreas BoehlerICS
370*a1a3b679SAndreas Boehler
371*a1a3b679SAndreas Boehler            ),
372*a1a3b679SAndreas Boehler        );
373*a1a3b679SAndreas Boehler
374*a1a3b679SAndreas Boehler        $result = $this->parse($message, $expected);
375*a1a3b679SAndreas Boehler
376*a1a3b679SAndreas Boehler    }
377*a1a3b679SAndreas Boehler
378*a1a3b679SAndreas Boehler    function testScheduleAgentClient() {
379*a1a3b679SAndreas Boehler
380*a1a3b679SAndreas Boehler        $message = <<<ICS
381*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
382*a1a3b679SAndreas BoehlerVERSION:2.0
383*a1a3b679SAndreas BoehlerBEGIN:VEVENT
384*a1a3b679SAndreas BoehlerUID:foobar
385*a1a3b679SAndreas BoehlerDTSTART:20140811T220000Z
386*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
387*a1a3b679SAndreas BoehlerATTENDEE;CN=White;SCHEDULE-AGENT=CLIENT:mailto:white@example.org
388*a1a3b679SAndreas BoehlerEND:VEVENT
389*a1a3b679SAndreas BoehlerEND:VCALENDAR
390*a1a3b679SAndreas BoehlerICS;
391*a1a3b679SAndreas Boehler
392*a1a3b679SAndreas Boehler        $version = \Sabre\VObject\Version::VERSION;
393*a1a3b679SAndreas Boehler
394*a1a3b679SAndreas Boehler        $expected = array();
395*a1a3b679SAndreas Boehler        $result = $this->parse($message, $expected);
396*a1a3b679SAndreas Boehler
397*a1a3b679SAndreas Boehler    }
398*a1a3b679SAndreas Boehler
399*a1a3b679SAndreas Boehler    /**
400*a1a3b679SAndreas Boehler     * @expectedException Sabre\VObject\ITip\ITipException
401*a1a3b679SAndreas Boehler     */
402*a1a3b679SAndreas Boehler    function testMultipleUID() {
403*a1a3b679SAndreas Boehler
404*a1a3b679SAndreas Boehler        $message = <<<ICS
405*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
406*a1a3b679SAndreas BoehlerVERSION:2.0
407*a1a3b679SAndreas BoehlerBEGIN:VEVENT
408*a1a3b679SAndreas BoehlerUID:foobar
409*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
410*a1a3b679SAndreas BoehlerATTENDEE;CN=One:mailto:one@example.org
411*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
412*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
413*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
414*a1a3b679SAndreas BoehlerEND:VEVENT
415*a1a3b679SAndreas BoehlerBEGIN:VEVENT
416*a1a3b679SAndreas BoehlerUID:foobar2
417*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
418*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
419*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
420*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
421*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
422*a1a3b679SAndreas BoehlerEND:VEVENT
423*a1a3b679SAndreas BoehlerEND:VCALENDAR
424*a1a3b679SAndreas BoehlerICS;
425*a1a3b679SAndreas Boehler
426*a1a3b679SAndreas Boehler        $version = \Sabre\VObject\Version::VERSION;
427*a1a3b679SAndreas Boehler        $result = $this->parse($message, array());
428*a1a3b679SAndreas Boehler
429*a1a3b679SAndreas Boehler    }
430*a1a3b679SAndreas Boehler
431*a1a3b679SAndreas Boehler    /**
432*a1a3b679SAndreas Boehler     * @expectedException Sabre\VObject\ITip\SameOrganizerForAllComponentsException
433*a1a3b679SAndreas Boehler     *
434*a1a3b679SAndreas Boehler     */
435*a1a3b679SAndreas Boehler    function testChangingOrganizers() {
436*a1a3b679SAndreas Boehler
437*a1a3b679SAndreas Boehler        $message = <<<ICS
438*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
439*a1a3b679SAndreas BoehlerVERSION:2.0
440*a1a3b679SAndreas BoehlerBEGIN:VEVENT
441*a1a3b679SAndreas BoehlerUID:foobar
442*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:strunk@example.org
443*a1a3b679SAndreas BoehlerATTENDEE;CN=One:mailto:one@example.org
444*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
445*a1a3b679SAndreas BoehlerDTSTART:20140716T120000Z
446*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY
447*a1a3b679SAndreas BoehlerEND:VEVENT
448*a1a3b679SAndreas BoehlerBEGIN:VEVENT
449*a1a3b679SAndreas BoehlerUID:foobar
450*a1a3b679SAndreas BoehlerRECURRENCE-ID:20140718T120000Z
451*a1a3b679SAndreas BoehlerORGANIZER;CN=Strunk:mailto:ew@example.org
452*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
453*a1a3b679SAndreas BoehlerATTENDEE;CN=Three:mailto:three@example.org
454*a1a3b679SAndreas BoehlerDTSTART:20140718T120000Z
455*a1a3b679SAndreas BoehlerEND:VEVENT
456*a1a3b679SAndreas BoehlerEND:VCALENDAR
457*a1a3b679SAndreas BoehlerICS;
458*a1a3b679SAndreas Boehler
459*a1a3b679SAndreas Boehler        $version = \Sabre\VObject\Version::VERSION;
460*a1a3b679SAndreas Boehler        $result = $this->parse($message, array());
461*a1a3b679SAndreas Boehler
462*a1a3b679SAndreas Boehler    }
463*a1a3b679SAndreas Boehler    function testNoOrganizerHasAttendee() {
464*a1a3b679SAndreas Boehler
465*a1a3b679SAndreas Boehler        $message = <<<ICS
466*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR
467*a1a3b679SAndreas BoehlerBEGIN:VEVENT
468*a1a3b679SAndreas BoehlerUID:foobar
469*a1a3b679SAndreas BoehlerDTSTART:20140811T220000Z
470*a1a3b679SAndreas BoehlerATTENDEE;CN=Two:mailto:two@example.org
471*a1a3b679SAndreas BoehlerEND:VEVENT
472*a1a3b679SAndreas BoehlerEND:VCALENDAR
473*a1a3b679SAndreas BoehlerICS;
474*a1a3b679SAndreas Boehler
475*a1a3b679SAndreas Boehler        $this->parse($message, array());
476*a1a3b679SAndreas Boehler
477*a1a3b679SAndreas Boehler    }
478*a1a3b679SAndreas Boehler
479*a1a3b679SAndreas Boehler    function parse($message, $expected = array()) {
480*a1a3b679SAndreas Boehler
481*a1a3b679SAndreas Boehler        $broker = new Broker();
482*a1a3b679SAndreas Boehler        $result = $broker->parseEvent($message, 'mailto:strunk@example.org');
483*a1a3b679SAndreas Boehler
484*a1a3b679SAndreas Boehler        $this->assertEquals(count($expected), count($result));
485*a1a3b679SAndreas Boehler
486*a1a3b679SAndreas Boehler        foreach($expected as $index=>$ex) {
487*a1a3b679SAndreas Boehler
488*a1a3b679SAndreas Boehler            $message = $result[$index];
489*a1a3b679SAndreas Boehler
490*a1a3b679SAndreas Boehler            foreach($ex as $key=>$val) {
491*a1a3b679SAndreas Boehler
492*a1a3b679SAndreas Boehler                if ($key==='message') {
493*a1a3b679SAndreas Boehler                    $this->assertEquals(
494*a1a3b679SAndreas Boehler                        str_replace("\n", "\r\n", $val),
495*a1a3b679SAndreas Boehler                        rtrim($message->message->serialize(), "\r\n")
496*a1a3b679SAndreas Boehler                    );
497*a1a3b679SAndreas Boehler                } else {
498*a1a3b679SAndreas Boehler                    $this->assertEquals($val, $message->$key);
499*a1a3b679SAndreas Boehler                }
500*a1a3b679SAndreas Boehler
501*a1a3b679SAndreas Boehler            }
502*a1a3b679SAndreas Boehler
503*a1a3b679SAndreas Boehler        }
504*a1a3b679SAndreas Boehler
505*a1a3b679SAndreas Boehler    }
506*a1a3b679SAndreas Boehler
507*a1a3b679SAndreas Boehler}
508