16 ORGANIZER;CN=Strunk:mailto:strunk@example.org
17 ATTENDEE;CN=One:mailto:one@example.org
18 DTSTART:20140716T120000Z
31 ORGANIZER;CN=Strunk:mailto:strunk@example.org
32 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
33 DTSTART:20140716T120000Z
44 'component' =>
'VEVENT',
45 'sender' =>
'mailto:one@example.org',
46 'senderName' =>
'One',
47 'recipient' =>
'mailto:strunk@example.org',
48 'recipientName' =>
'Strunk',
59 DTSTART:20140716T120000Z
61 ORGANIZER;CN=Strunk:mailto:strunk@example.org
62 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
71 $this->
parse($oldMessage, $newMessage, $expected);
83 ORGANIZER;CN=Strunk:mailto:strunk@example.org
84 ATTENDEE;CN=One:mailto:one@example.org
85 DTSTART:20140724T120000Z
99 ORGANIZER;CN=Strunk:mailto:strunk@example.org
100 ATTENDEE;PARTSTAT=NEEDS-ACTION;CN=One:mailto:one@example.org
101 DTSTART:20140724T120000Z
107 ORGANIZER;CN=Strunk:mailto:strunk@example.org
108 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
109 DTSTART:20140726T120000Z
110 RECURRENCE-ID:20140726T120000Z
115 ORGANIZER;CN=Strunk:mailto:strunk@example.org
116 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
117 DTSTART:20140724T120000Z
118 RECURRENCE-ID:20140724T120000Z
123 ORGANIZER;CN=Strunk:mailto:strunk@example.org
124 ATTENDEE;PARTSTAT=TENTATIVE;CN=One:mailto:one@example.org
125 DTSTART:20140728T120000Z
126 RECURRENCE-ID:20140728T120000Z
131 ORGANIZER;CN=Strunk:mailto:strunk@example.org
132 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
133 DTSTART:20140729T120000Z
134 RECURRENCE-ID:20140729T120000Z
139 ORGANIZER;CN=Strunk:mailto:strunk@example.org
140 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
141 DTSTART:20140725T120000Z
142 RECURRENCE-ID:20140725T120000Z
153 'component' =>
'VEVENT',
154 'sender' =>
'mailto:one@example.org',
155 'senderName' =>
'One',
156 'recipient' =>
'mailto:strunk@example.org',
157 'recipientName' =>
'Strunk',
168 DTSTART:20140726T120000Z
170 RECURRENCE-ID:20140726T120000Z
171 ORGANIZER;CN=Strunk:mailto:strunk@example.org
172 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
178 DTSTART:20140724T120000Z
180 RECURRENCE-ID:20140724T120000Z
181 ORGANIZER;CN=Strunk:mailto:strunk@example.org
182 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
188 DTSTART:20140728T120000Z
190 RECURRENCE-ID:20140728T120000Z
191 ORGANIZER;CN=Strunk:mailto:strunk@example.org
192 ATTENDEE;PARTSTAT=TENTATIVE;CN=One:mailto:one@example.org
198 DTSTART:20140729T120000Z
200 RECURRENCE-ID:20140729T120000Z
201 ORGANIZER;CN=Strunk:mailto:strunk@example.org
202 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
208 DTSTART:20140725T120000Z
210 RECURRENCE-ID:20140725T120000Z
211 ORGANIZER;CN=Strunk:mailto:strunk@example.org
212 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
221 $this->
parse($oldMessage, $newMessage, $expected);
233 ORGANIZER;CN=Strunk:mailto:strunk@example.org
234 ATTENDEE;CN=One:mailto:one@example.org
235 DTSTART;VALUE=DATE:20140724
248 ORGANIZER;CN=Strunk:mailto:strunk@example.org
249 ATTENDEE;PARTSTAT=NEEDS-ACTION;CN=One:mailto:one@example.org
250 DTSTART;VALUE=DATE:20140724
255 ORGANIZER;CN=Strunk:mailto:strunk@example.org
256 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
257 DTSTART;VALUE=DATE:20140726
258 RECURRENCE-ID;VALUE=DATE:20140726
263 ORGANIZER;CN=Strunk:mailto:strunk@example.org
264 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
265 DTSTART;VALUE=DATE:20140724
266 RECURRENCE-ID;VALUE=DATE:20140724
271 ORGANIZER;CN=Strunk:mailto:strunk@example.org
272 ATTENDEE;PARTSTAT=TENTATIVE;CN=One:mailto:one@example.org
273 DTSTART;VALUE=DATE:20140728
274 RECURRENCE-ID;VALUE=DATE:20140728
279 ORGANIZER;CN=Strunk:mailto:strunk@example.org
280 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
281 DTSTART;VALUE=DATE:20140729
282 RECURRENCE-ID;VALUE=DATE:20140729
287 ORGANIZER;CN=Strunk:mailto:strunk@example.org
288 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
289 DTSTART;VALUE=DATE:20140725
290 RECURRENCE-ID;VALUE=DATE:20140725
301 'component' =>
'VEVENT',
302 'sender' =>
'mailto:one@example.org',
303 'senderName' =>
'One',
304 'recipient' =>
'mailto:strunk@example.org',
305 'recipientName' =>
'Strunk',
316 DTSTART;VALUE=DATE:20140726
317 RECURRENCE-ID;VALUE=DATE:20140726
318 ORGANIZER;CN=Strunk:mailto:strunk@example.org
319 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
325 DTSTART;VALUE=DATE:20140724
326 RECURRENCE-ID;VALUE=DATE:20140724
327 ORGANIZER;CN=Strunk:mailto:strunk@example.org
328 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
334 DTSTART;VALUE=DATE:20140728
335 RECURRENCE-ID;VALUE=DATE:20140728
336 ORGANIZER;CN=Strunk:mailto:strunk@example.org
337 ATTENDEE;PARTSTAT=TENTATIVE;CN=One:mailto:one@example.org
343 DTSTART;VALUE=DATE:20140729
344 RECURRENCE-ID;VALUE=DATE:20140729
345 ORGANIZER;CN=Strunk:mailto:strunk@example.org
346 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
352 DTSTART;VALUE=DATE:20140725
353 RECURRENCE-ID;VALUE=DATE:20140725
354 ORGANIZER;CN=Strunk:mailto:strunk@example.org
355 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
364 $this->
parse($oldMessage, $newMessage, $expected);
376 ORGANIZER;CN=Strunk:mailto:strunk@example.org
377 ATTENDEE;CN=One:mailto:one@example.org
378 DTSTART:20140716T120000Z
390 ORGANIZER;CN=Strunk:mailto:strunk@example.org
391 ATTENDEE;PARTSTAT=NEEDS-ACTION;CN=One:mailto:one@example.org
392 DTSTART:20140716T120000Z
399 $this->
parse($oldMessage, $newMessage, $expected);
411 ORGANIZER;CN=Strunk:mailto:strunk@example.org
412 ATTENDEE;CN=One:mailto:one@example.org
413 DTSTART:20140716T120000Z
425 ORGANIZER;SCHEDULE-FORCE-SEND=REPLY;CN=Strunk:mailto:strunk@example.org
426 ATTENDEE;PARTSTAT=NEEDS-ACTION;CN=One:mailto:one@example.org
427 DTSTART:20140716T120000Z
437 'component' =>
'VEVENT',
438 'sender' =>
'mailto:one@example.org',
439 'senderName' =>
'One',
440 'recipient' =>
'mailto:strunk@example.org',
441 'recipientName' =>
'Strunk',
452 DTSTART:20140716T120000Z
453 ORGANIZER;CN=Strunk:mailto:strunk@example.org
454 ATTENDEE;PARTSTAT=NEEDS-ACTION;CN=One:mailto:one@example.org
461 $this->
parse($oldMessage, $newMessage, $expected);
473 ORGANIZER;CN=Strunk:mailto:strunk@example.org
474 ATTENDEE;CN=Two:mailto:two@example.org
475 DTSTART:20140716T120000Z
487 ORGANIZER;CN=Strunk:mailto:strunk@example.org
488 ATTENDEE;PARTSTAT=ACCEPTED;CN=Two:mailto:two@example.org
489 DTSTART:20140716T120000Z
495 $this->
parse($oldMessage, $newMessage, $expected);
516 DTSTART:20140811T200000Z
518 ORGANIZER:mailto:organizer@example.org
519 ATTENDEE:mailto:one@example.org
530 DTSTART:20140811T200000Z
532 ORGANIZER:mailto:organizer@example.org
533 ATTENDEE:mailto:one@example.org
534 EXDATE:20140818T200000Z
544 'component' =>
'VEVENT',
545 'sender' =>
'mailto:one@example.org',
546 'senderName' => null,
547 'recipient' =>
'mailto:organizer@example.org',
548 'recipientName' => null,
559 DTSTART:20140818T200000Z
560 RECURRENCE-ID:20140818T200000Z
561 ORGANIZER:mailto:organizer@example.org
562 ATTENDEE;PARTSTAT=DECLINED:mailto:one@example.org
569 $this->
parse($oldMessage, $newMessage, $expected);
588 DTSTART;TZID=America/Toronto:20140811T200000
590 ORGANIZER:mailto:organizer@example.org
591 ATTENDEE:mailto:one@example.org
602 DTSTART;TZID=America/Toronto:20140811T200000
604 ORGANIZER:mailto:organizer@example.org
605 ATTENDEE:mailto:one@example.org
606 EXDATE;TZID=America/Toronto:20140818T200000
616 'component' =>
'VEVENT',
617 'sender' =>
'mailto:one@example.org',
618 'senderName' => null,
619 'recipient' =>
'mailto:organizer@example.org',
620 'recipientName' => null,
631 DTSTART;TZID=America/Toronto:20140818T200000
632 RECURRENCE-ID;TZID=America/Toronto:20140818T200000
633 ORGANIZER:mailto:organizer@example.org
634 ATTENDEE;PARTSTAT=DECLINED:mailto:one@example.org
641 $this->
parse($oldMessage, $newMessage, $expected);
655 SUMMARY:Weekly meeting
658 DTSTART;VALUE=DATE:20140811
660 ORGANIZER:mailto:organizer@example.org
661 ATTENDEE:mailto:one@example.org
670 SUMMARY:Weekly meeting
673 DTSTART;VALUE=DATE:20140811
675 ORGANIZER:mailto:organizer@example.org
676 ATTENDEE:mailto:one@example.org
677 EXDATE;VALUE=DATE:20140818
687 'component' =>
'VEVENT',
688 'sender' =>
'mailto:one@example.org',
689 'senderName' => null,
690 'recipient' =>
'mailto:organizer@example.org',
691 'recipientName' => null,
702 DTSTART;VALUE=DATE:20140818
703 SUMMARY:Weekly meeting
704 RECURRENCE-ID;VALUE=DATE:20140818
705 ORGANIZER:mailto:organizer@example.org
706 ATTENDEE;PARTSTAT=DECLINED:mailto:one@example.org
713 $this->
parse($oldMessage, $newMessage, $expected);
725 ORGANIZER;CN=Strunk:mailto:strunk@example.org
726 ATTENDEE;CN=One:mailto:one@example.org
727 DTSTART:20140716T120000Z
739 ORGANIZER;CN=Strunk:mailto:strunk@example.org
740 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
741 DTSTART:20140716T120000Z
752 'component' =>
'VEVENT',
753 'sender' =>
'mailto:one@example.org',
754 'senderName' =>
'One',
755 'recipient' =>
'mailto:strunk@example.org',
756 'recipientName' =>
'Strunk',
767 DTSTART:20140716T120000Z
768 ORGANIZER;CN=Strunk:mailto:strunk@example.org
769 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
778 $this->
parse($oldMessage, $newMessage, $expected);
791 ORGANIZER;CN=Strunk:mailto:strunk@example.org
792 ATTENDEE;CN=One:mailto:one@example.org
793 DTSTART:20140716T120000Z
806 ORGANIZER;CN=Strunk:mailto:strunk@example.org
807 ATTENDEE;PARTSTAT=DECLINED;CN=One:mailto:one@example.org
808 DTSTART:20140716T120000Z
817 $this->
parse($oldMessage, $newMessage, $expected);
839 DTSTART:20140811T200000Z
841 ORGANIZER:mailto:organizer@example.org
842 ATTENDEE:mailto:one@example.org
845 RECURRENCE-ID:20140818T200000Z
848 DTSTART:20140818T200000Z
850 ORGANIZER:mailto:organizer@example.org
851 ATTENDEE;PARTSTAT=DECLINED:mailto:one@example.org
862 DTSTART:20140811T200000Z
864 ORGANIZER:mailto:organizer@example.org
865 ATTENDEE:mailto:one@example.org
866 EXDATE:20140818T200000Z
873 $this->
parse($oldMessage, $newMessage, $expected);
885 ORGANIZER;CN=Strunk:mailto:strunk@example.org
886 ATTENDEE;CN=One:mailto:one@example.org
887 DTSTART:20140716T120000Z
899 ORGANIZER;SCHEDULE-AGENT=CLIENT;CN=Strunk:mailto:strunk@example.org
900 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
901 DTSTART:20140716T120000Z
909 $this->
parse($oldMessage, $newMessage, $expected);
921 ORGANIZER;CN=Strunk:mailto:strunk@example.org
922 ATTENDEE;CN=One:mailto:one@example.org
923 DTSTART;VALUE=DATE:20140716
935 ORGANIZER;CN=Strunk:mailto:strunk@example.org
936 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
937 DTSTART;VALUE=DATE:20140716
948 'component' =>
'VEVENT',
949 'sender' =>
'mailto:one@example.org',
950 'senderName' =>
'One',
951 'recipient' =>
'mailto:strunk@example.org',
952 'recipientName' =>
'Strunk',
963 DTSTART;VALUE=DATE:20140716
964 ORGANIZER;CN=Strunk:mailto:strunk@example.org
965 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
974 $this->
parse($oldMessage, $newMessage, $expected);
993 ORGANIZER;CN=Strunk:mailto:strunk@example.org
994 ATTENDEE;CN=One:mailto:one@example.org
995 RECURRENCE-ID:20140724T120000Z
996 DTSTART:20140724T120000Z
1003 $newMessage = <<<ICS
1009 ORGANIZER;CN=Strunk:mailto:strunk@example.org
1010 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
1011 RECURRENCE-ID:20140724T120000Z
1012 DTSTART:20140724T120000Z
1013 SUMMARY:Daily sprint
1023 'method' =>
'REPLY',
1024 'component' =>
'VEVENT',
1025 'sender' =>
'mailto:one@example.org',
1026 'senderName' =>
'One',
1027 'recipient' =>
'mailto:strunk@example.org',
1028 'recipientName' =>
'Strunk',
1038 DTSTART:20140724T120000Z
1039 SUMMARY:Daily sprint
1040 RECURRENCE-ID:20140724T120000Z
1041 ORGANIZER;CN=Strunk:mailto:strunk@example.org
1042 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
1051 $this->
parse($oldMessage, $newMessage, $expected);
1063 $oldMessage = <<<ICS
1070 ORGANIZER;CN=Strunk:mailto:strunk@example.org
1071 DTSTART:20140716T120000Z
1076 RECURRENCE-ID:20140717T120000Z
1079 ORGANIZER;CN=Strunk:mailto:strunk@example.org
1080 DTSTART:20140717T120000Z
1087 $newMessage = <<<ICS
1094 ORGANIZER;CN=Strunk:mailto:strunk@example.org
1095 DTSTART:20140716T120000Z
1100 RECURRENCE-ID:20140717T120000Z
1103 ORGANIZER;CN=Strunk:mailto:strunk@example.org
1104 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
1105 DTSTART:20140717T120000Z
1114 'method' =>
'REPLY',
1115 'component' =>
'VEVENT',
1116 'sender' =>
'mailto:one@example.org',
1117 'senderName' =>
'One',
1118 'recipient' =>
'mailto:strunk@example.org',
1119 'recipientName' =>
'Strunk',
1129 DTSTART:20140717T120000Z
1131 RECURRENCE-ID:20140717T120000Z
1132 ORGANIZER;CN=Strunk:mailto:strunk@example.org
1133 ATTENDEE;PARTSTAT=ACCEPTED;CN=One:mailto:one@example.org
1143 $this->
parse($oldMessage, $newMessage, $expected);
testReplyNoMasterEvent()
This function tests an attendee updating their status to an event where they don't have the master ev...
const VERSION
Full version number.
testCreateReplyByExceptionAllDay()
testCreateReplyByException
testDontCreateReplyWhenEventWasDeclined()
In this test, a new exception is created by an attendee as well.
testPartyCrasher()
A party crasher is an attendee that accepted an event, but was not in any original invite...
testCreateReplyByException()
In this test, an event exists in an attendees calendar.
parse($oldMessage, $newMessage, $expected=[], $currentUser='mailto:one @example.org')
testDeclinedCancelledEvent()
testScheduleAgentOnOrganizer()
testCreateReplyByExceptionTz()
This test is identical to the last, but now we're working with timezones.
Utilities for testing the broker.