@@ -876,4 +876,184 @@ public function testInviteStatusCancelled(): void
876876
877877 $ this ->
parse (
$ oldMessage,
$ newMessage,
$ expected,
'mailto:[email protected] ' );
878878 }
879+
880+ /*
881+ * When EXDATE is added by Broker, it needs to be in the correct
882+ * timezone
883+ */
884+
885+ public function testExdateTimezone (): void
886+ {
887+ $ oldMessage = <<<ICS
888+ BEGIN:VCALENDAR
889+ VERSION:2.0
890+ BEGIN:VEVENT
891+ UID:foobar
892+ SEQUENCE:1
893+ SUMMARY:foo
894+ RRULE:FREQ=WEEKLY
895+ ORGANIZER;CN=Strunk:mailto:[email protected] 896+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 897+ ATTENDEE;CN=One:mailto:[email protected] 898+ DTSTART;TZID=Europe/London:20140716T120000
899+ DTEND;TZID=Europe/London:20140716T130000
900+ END:VEVENT
901+ END:VCALENDAR
902+ ICS ;
903+
904+ $ newMessage = <<<ICS
905+ BEGIN:VCALENDAR
906+ VERSION:2.0
907+ BEGIN:VEVENT
908+ UID:foobar
909+ SEQUENCE:1
910+ SUMMARY:foo
911+ RRULE:FREQ=WEEKLY
912+ ORGANIZER;CN=Strunk:mailto:[email protected] 913+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 914+ ATTENDEE;CN=One:mailto:[email protected] 915+ DTSTART;TZID=Europe/London:20140716T120000
916+ DTEND;TZID=Europe/London:20140716T130000
917+ END:VEVENT
918+ BEGIN:VEVENT
919+ UID:foobar
920+ SEQUENCE:1
921+ SUMMARY:foo
922+ RECURRENCE-ID;TZID=Europe/London:20140723T120000
923+ ORGANIZER;CN=Strunk:mailto:[email protected] 924+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 925+ DTSTART;TZID=Europe/London:20140723T120000
926+ DTEND;TZID=Europe/London:20140723T130000
927+ END:VEVENT
928+ END:VCALENDAR
929+ ICS ;
930+
931+ $ version = Version::VERSION ;
932+
933+ $ expected = [
934+ [
935+ 'uid ' => 'foobar ' ,
936+ 'method ' => 'REQUEST ' ,
937+ 'component ' => 'VEVENT ' ,
938+ 'sender ' =>
'mailto:[email protected] ' ,
939+ 'senderName ' => 'Strunk ' ,
940+ 'recipient ' =>
'mailto:[email protected] ' ,
941+ 'recipientName ' => 'One ' ,
942+ 'significantChange ' => true ,
943+ 'message ' => <<<ICS
944+ BEGIN:VCALENDAR
945+ VERSION:2.0
946+ PRODID:-//Sabre//Sabre VObject 4.5.6//EN
947+ CALSCALE:GREGORIAN
948+ METHOD:REQUEST
949+ BEGIN:VEVENT
950+ UID:foobar
951+ SEQUENCE:1
952+ SUMMARY:foo
953+ RRULE:FREQ=WEEKLY
954+ ORGANIZER;CN=Strunk:mailto:[email protected] 955+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 956+ ATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:[email protected] 957+ DTSTART;TZID=Europe/London:20140716T120000
958+ DTEND;TZID=Europe/London:20140716T130000
959+ EXDATE;TZID=Europe/London:20140723T120000
960+ DTSTAMP:**ANY**
961+ END:VEVENT
962+ END:VCALENDAR
963+ ICS ,
964+ ],
965+ ];
966+
967+ $ this ->
parse (
$ oldMessage,
$ newMessage,
$ expected,
'mailto:[email protected] ' );
968+ }
969+
970+ /*
971+ * When EXDATE is added by Broker, it needs to be in the correct
972+ * timezone, also in case UTC is used
973+ */
974+
975+ public function testExdateTimezoneUTC (): void
976+ {
977+ $ oldMessage = <<<ICS
978+ BEGIN:VCALENDAR
979+ VERSION:2.0
980+ BEGIN:VEVENT
981+ UID:foobar
982+ SEQUENCE:1
983+ SUMMARY:foo
984+ RRULE:FREQ=WEEKLY
985+ ORGANIZER;CN=Strunk:mailto:[email protected] 986+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 987+ ATTENDEE;CN=One:mailto:[email protected] 988+ DTSTART:20140716T120000Z
989+ DTEND:20140716T130000Z
990+ END:VEVENT
991+ END:VCALENDAR
992+ ICS ;
993+
994+ $ newMessage = <<<ICS
995+ BEGIN:VCALENDAR
996+ VERSION:2.0
997+ BEGIN:VEVENT
998+ UID:foobar
999+ SEQUENCE:1
1000+ SUMMARY:foo
1001+ RRULE:FREQ=WEEKLY
1002+ ORGANIZER;CN=Strunk:mailto:[email protected] 1003+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 1004+ ATTENDEE;CN=One:mailto:[email protected] 1005+ DTSTART:20140716T120000Z
1006+ DTEND:20140716T130000Z
1007+ END:VEVENT
1008+ BEGIN:VEVENT
1009+ UID:foobar
1010+ SEQUENCE:1
1011+ SUMMARY:foo
1012+ RECURRENCE-ID:20140723T120000Z
1013+ ORGANIZER;CN=Strunk:mailto:[email protected] 1014+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 1015+ DTSTART:20140723T120000Z
1016+ DTEND:20140723T130000Z
1017+ END:VEVENT
1018+ END:VCALENDAR
1019+ ICS ;
1020+
1021+ $ version = Version::VERSION ;
1022+
1023+ $ expected = [
1024+ [
1025+ 'uid ' => 'foobar ' ,
1026+ 'method ' => 'REQUEST ' ,
1027+ 'component ' => 'VEVENT ' ,
1028+ 'sender ' =>
'mailto:[email protected] ' ,
1029+ 'senderName ' => 'Strunk ' ,
1030+ 'recipient ' =>
'mailto:[email protected] ' ,
1031+ 'recipientName ' => 'One ' ,
1032+ 'significantChange ' => true ,
1033+ 'message ' => <<<ICS
1034+ BEGIN:VCALENDAR
1035+ VERSION:2.0
1036+ PRODID:-//Sabre//Sabre VObject 4.5.6//EN
1037+ CALSCALE:GREGORIAN
1038+ METHOD:REQUEST
1039+ BEGIN:VEVENT
1040+ UID:foobar
1041+ SEQUENCE:1
1042+ SUMMARY:foo
1043+ RRULE:FREQ=WEEKLY
1044+ ORGANIZER;CN=Strunk:mailto:[email protected] 1045+ ATTENDEE;CN=Strunk;PARTSTAT=ACCEPTED:mailto:[email protected] 1046+ ATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:[email protected] 1047+ DTSTART:20140716T120000Z
1048+ DTEND:20140716T130000Z
1049+ EXDATE:20140723T120000Z
1050+ DTSTAMP:**ANY**
1051+ END:VEVENT
1052+ END:VCALENDAR
1053+ ICS ,
1054+ ],
1055+ ];
1056+
1057+ $ this ->
parse (
$ oldMessage,
$ newMessage,
$ expected,
'mailto:[email protected] ' );
1058+ }
8791059}
0 commit comments