Mercurial > hg > rc1
view vendor/sabre/vobject/tests/VObject/ITip/BrokerNewEventTest.php @ 7:430dbd5346f7
vendor sabre as distributed
author | Charlie Root |
---|---|
date | Sat, 13 Jan 2018 09:06:10 -0500 |
parents | |
children |
line wrap: on
line source
<?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); } } } } }