Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1820642
BrokerNewEventTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
11 KB
Subscribers
None
BrokerNewEventTest.php
View Options
<?php
namespace
Sabre\VObject\ITip
;
class
BrokerNewEventTest
extends
\PHPUnit_Framework_TestCase
{
function
testNoAttendee
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART:20140811T220000Z
END:VEVENT
END:VCALENDAR
ICS;
$result
=
$this
->
parse
(
$message
);
}
function
testVTODO
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VTODO
UID:foobar
END:VTODO
END:VCALENDAR
ICS;
$result
=
$this
->
parse
(
$message
);
}
function
testSimpleInvite
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
DTSTART:20140811T220000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=White:mailto:white@example.org
END:VEVENT
END:VCALENDAR
ICS;
$version
=
\Sabre\VObject\Version
::
VERSION
;
$expectedMessage
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject $version//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:foobar
DTSTART:20140811T220000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=White;PARTSTAT=NEEDS-ACTION:mailto:white@example.org
END:VEVENT
END:VCALENDAR
ICS;
$expected
=
array
(
array
(
'uid'
=>
'foobar'
,
'method'
=>
'REQUEST'
,
'component'
=>
'VEVENT'
,
'sender'
=>
'mailto:strunk@example.org'
,
'senderName'
=>
'Strunk'
,
'recipient'
=>
'mailto:white@example.org'
,
'recipientName'
=>
'White'
,
'message'
=>
$expectedMessage
,
),
);
$result
=
$this
->
parse
(
$message
,
$expected
);
}
/**
* @expectedException \Sabre\VObject\ITip\ITipException
*/
function
testBrokenEventUIDMisMatch
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=White:mailto:white@example.org
END:VEVENT
BEGIN:VEVENT
UID:foobar2
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=White:mailto:white@example.org
END:VEVENT
END:VCALENDAR
ICS;
$expected
=
array
();
$this
->
parse
(
$message
,
array
());
}
/**
* @expectedException \Sabre\VObject\ITip\ITipException
*/
function
testBrokenEventOrganizerMisMatch
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=White:mailto:white@example.org
END:VEVENT
BEGIN:VEVENT
UID:foobar
ORGANIZER:mailto:foo@example.org
ATTENDEE;CN=White:mailto:white@example.org
END:VEVENT
END:VCALENDAR
ICS;
$expected
=
array
();
$this
->
parse
(
$message
,
array
());
}
function
testRecurrenceInvite
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One:mailto:one@example.org
ATTENDEE;CN=Two:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
EXDATE:20140717T120000Z
END:VEVENT
BEGIN:VEVENT
UID:foobar
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS;
$version
=
\Sabre\VObject\Version
::
VERSION
;
$expected
=
array
(
array
(
'uid'
=>
'foobar'
,
'method'
=>
'REQUEST'
,
'component'
=>
'VEVENT'
,
'sender'
=>
'mailto:strunk@example.org'
,
'senderName'
=>
'Strunk'
,
'recipient'
=>
'mailto:one@example.org'
,
'recipientName'
=>
'One'
,
'message'
=>
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject $version//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
ATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
EXDATE:20140717T120000Z,20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS
),
array
(
'uid'
=>
'foobar'
,
'method'
=>
'REQUEST'
,
'component'
=>
'VEVENT'
,
'sender'
=>
'mailto:strunk@example.org'
,
'senderName'
=>
'Strunk'
,
'recipient'
=>
'mailto:two@example.org'
,
'recipientName'
=>
'Two'
,
'message'
=>
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject $version//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
ATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
EXDATE:20140717T120000Z
END:VEVENT
BEGIN:VEVENT
UID:foobar
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS
),
array
(
'uid'
=>
'foobar'
,
'method'
=>
'REQUEST'
,
'component'
=>
'VEVENT'
,
'sender'
=>
'mailto:strunk@example.org'
,
'senderName'
=>
'Strunk'
,
'recipient'
=>
'mailto:three@example.org'
,
'recipientName'
=>
'Three'
,
'message'
=>
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject $version//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:foobar
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS
),
);
$result
=
$this
->
parse
(
$message
,
$expected
);
}
function
testRecurrenceInvite2
()
{
// This method tests a nearly identical path, but in this case the
// master event does not have an EXDATE.
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One:mailto:one@example.org
ATTENDEE;CN=Two:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
END:VEVENT
BEGIN:VEVENT
UID:foobar
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS;
$version
=
\Sabre\VObject\Version
::
VERSION
;
$expected
=
array
(
array
(
'uid'
=>
'foobar'
,
'method'
=>
'REQUEST'
,
'component'
=>
'VEVENT'
,
'sender'
=>
'mailto:strunk@example.org'
,
'senderName'
=>
'Strunk'
,
'recipient'
=>
'mailto:one@example.org'
,
'recipientName'
=>
'One'
,
'message'
=>
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject $version//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
ATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
EXDATE:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS
),
array
(
'uid'
=>
'foobar'
,
'method'
=>
'REQUEST'
,
'component'
=>
'VEVENT'
,
'sender'
=>
'mailto:strunk@example.org'
,
'senderName'
=>
'Strunk'
,
'recipient'
=>
'mailto:two@example.org'
,
'recipientName'
=>
'Two'
,
'message'
=>
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject $version//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One;PARTSTAT=NEEDS-ACTION:mailto:one@example.org
ATTENDEE;CN=Two;PARTSTAT=NEEDS-ACTION:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
END:VEVENT
BEGIN:VEVENT
UID:foobar
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS
),
array
(
'uid'
=>
'foobar'
,
'method'
=>
'REQUEST'
,
'component'
=>
'VEVENT'
,
'sender'
=>
'mailto:strunk@example.org'
,
'senderName'
=>
'Strunk'
,
'recipient'
=>
'mailto:three@example.org'
,
'recipientName'
=>
'Three'
,
'message'
=>
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject $version//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:foobar
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS
),
);
$result
=
$this
->
parse
(
$message
,
$expected
);
}
function
testScheduleAgentClient
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
DTSTART:20140811T220000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=White;SCHEDULE-AGENT=CLIENT:mailto:white@example.org
END:VEVENT
END:VCALENDAR
ICS;
$version
=
\Sabre\VObject\Version
::
VERSION
;
$expected
=
array
();
$result
=
$this
->
parse
(
$message
,
$expected
);
}
/**
* @expectedException Sabre\VObject\ITip\ITipException
*/
function
testMultipleUID
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One:mailto:one@example.org
ATTENDEE;CN=Two:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
END:VEVENT
BEGIN:VEVENT
UID:foobar2
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS;
$version
=
\Sabre\VObject\Version
::
VERSION
;
$result
=
$this
->
parse
(
$message
,
array
());
}
/**
* @expectedException Sabre\VObject\ITip\SameOrganizerForAllComponentsException
*
*/
function
testChangingOrganizers
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:foobar
ORGANIZER;CN=Strunk:mailto:strunk@example.org
ATTENDEE;CN=One:mailto:one@example.org
ATTENDEE;CN=Two:mailto:two@example.org
DTSTART:20140716T120000Z
RRULE:FREQ=DAILY
END:VEVENT
BEGIN:VEVENT
UID:foobar
RECURRENCE-ID:20140718T120000Z
ORGANIZER;CN=Strunk:mailto:ew@example.org
ATTENDEE;CN=Two:mailto:two@example.org
ATTENDEE;CN=Three:mailto:three@example.org
DTSTART:20140718T120000Z
END:VEVENT
END:VCALENDAR
ICS;
$version
=
\Sabre\VObject\Version
::
VERSION
;
$result
=
$this
->
parse
(
$message
,
array
());
}
function
testNoOrganizerHasAttendee
()
{
$message
=
<<<ICS
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:foobar
DTSTART:20140811T220000Z
ATTENDEE;CN=Two:mailto:two@example.org
END:VEVENT
END:VCALENDAR
ICS;
$this
->
parse
(
$message
,
array
());
}
function
parse
(
$message
,
$expected
=
array
())
{
$broker
=
new
Broker
();
$result
=
$broker
->
parseEvent
(
$message
,
'mailto:strunk@example.org'
);
$this
->
assertEquals
(
count
(
$expected
),
count
(
$result
));
foreach
(
$expected
as
$index
=>
$ex
)
{
$message
=
$result
[
$index
];
foreach
(
$ex
as
$key
=>
$val
)
{
if
(
$key
===
'message'
)
{
$this
->
assertEquals
(
str_replace
(
"
\n
"
,
"
\r\n
"
,
$val
),
rtrim
(
$message
->
message
->
serialize
(),
"
\r\n
"
)
);
}
else
{
$this
->
assertEquals
(
$val
,
$message
->
$key
);
}
}
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sun, Dec 22, 7:44 AM (3 d, 23 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
916649
Default Alt Text
BrokerNewEventTest.php (11 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment