374 lines
9.7 KiB
Plaintext
374 lines
9.7 KiB
Plaintext
# Scheduling invalid actions
|
|
|
|
# Event has no scheduling information
|
|
> put x@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
NoSchedulingInfo
|
|
|
|
> reset
|
|
|
|
# X is not the organizer
|
|
> put x@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
NotOrganizerNorAttendee
|
|
|
|
> reset
|
|
|
|
# No attendees
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
NothingToSend
|
|
|
|
> reset
|
|
|
|
|
|
# Organizer with client scheduling agent
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER;SCHEDULE-AGENT=CLIENT:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
OtherSchedulingAgent
|
|
|
|
> reset
|
|
|
|
# Single participant with client scheduling agent
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;SCHEDULE-AGENT=CLIENT;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
NothingToSend
|
|
|
|
> reset
|
|
|
|
# Only send updates to clients with server scheduling agent
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:d@example.com
|
|
ATTENDEE;SCHEDULE-AGENT=CLIENT;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
from: a@example.com
|
|
to: d@example.com
|
|
summary: invite
|
|
summary.attendee: Participants([ItipParticipant { email: "a@example.com", name: None, is_organizer: true }, ItipParticipant { email: "b@example.com", name: Some("B"), is_organizer: false }, ItipParticipant { email: "d@example.com", name: Some("B"), is_organizer: false }])
|
|
summary.dtstart: Time(ItipTime { start: 867787200, tz_id: 32768 })
|
|
summary.summary: Text("Conference")
|
|
BEGIN:VCALENDAR
|
|
METHOD:REQUEST
|
|
PRODID:-//Stalwart Labs LLC//Stalwart Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
STATUS:CONFIRMED
|
|
SUMMARY:Conference
|
|
DTEND:19970701T2100000Z
|
|
DTSTART:19970701T200000Z
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B;PARTSTAT=NEEDS-ACTION:mailto:b@exa
|
|
mple.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B;PARTSTAT=NEEDS-ACTION:mailto:d@exa
|
|
mple.com
|
|
ORGANIZER:mailto:a@example.com
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
# Writing the same event again should not send a new request
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:d@example.com
|
|
ATTENDEE;SCHEDULE-AGENT=CLIENT;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
NothingToSend
|
|
|
|
# Adding a comment and a custom property should not send a new request
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:d@example.com
|
|
ATTENDEE;SCHEDULE-AGENT=CLIENT;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
COMMENT:This is a comment
|
|
X-EXAMPLE:This is an example
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
NothingToSend
|
|
|
|
> reset
|
|
|
|
# Multiple object types should be rejected
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
BEGIN:VTODO
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VTODO
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
MultipleObjectTypes
|
|
|
|
> reset
|
|
|
|
# Multiple organizers should be rejected
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:d@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=D:mailto:d@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
MultipleOrganizer
|
|
|
|
> reset
|
|
|
|
# Different UIDs should be rejected
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:other-uid@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
MultipleUid
|
|
|
|
> reset
|
|
|
|
# Multiple object instances should be rejected
|
|
> put a@example.com calsrv.example.com-873970198738777@example.com
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
RECURRENCE-ID:19970701T200000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:a@example.com
|
|
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=A:mailto:a@example.com
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:b@example.com
|
|
DTSTAMP:19970611T190000Z
|
|
DTSTART:19970701T200000Z
|
|
DTEND:19970701T2100000Z
|
|
RECURRENCE-ID:19970701T200000Z
|
|
SUMMARY:Conference
|
|
UID:calsrv.example.com-873970198738777@example.com
|
|
SEQUENCE:0
|
|
STATUS:CONFIRMED
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
MultipleObjectInstances
|
|
|