1<?php 2 3namespace Sabre\CalDAV\Schedule; 4 5use Sabre\HTTP\Request; 6use Sabre\VObject; 7 8class DeliverNewEventTest extends \Sabre\DAVServerTest { 9 10 public $setupCalDAV = true; 11 public $setupCalDAVScheduling = true; 12 public $setupACL = true; 13 public $autoLogin = 'user1'; 14 15 function setUp() { 16 17 parent::setUp(); 18 $this->caldavBackend->createCalendar( 19 'principals/user1', 20 'default', 21 [ 22 23 ] 24 ); 25 $this->caldavBackend->createCalendar( 26 'principals/user2', 27 'default', 28 [ 29 30 ] 31 ); 32 33 } 34 35 function testDelivery() { 36 37 $request = new Request('PUT', '/calendars/user1/default/foo.ics'); 38 $request->setBody(<<<ICS 39BEGIN:VCALENDAR 40VERSION:2.0 41PRODID:-//Apple Inc.//Mac OS X 10.9.1//EN 42CALSCALE:GREGORIAN 43BEGIN:VEVENT 44CREATED:20140109T204404Z 45UID:AADC6438-18CF-4B52-8DD2-EF9AD75ADE83 46DTEND;TZID=America/Toronto:20140107T110000 47TRANSP:OPAQUE 48ATTENDEE;CN="Administrator";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:user1.sabredav@sabredav.org 49ATTENDEE;CN="Roxy Kesh";CUTYPE=INDIVIDUAL;EMAIL="user2.sabredav@sabrdav.org"; 50 PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:user2.sabredav@sabredav.org 51SUMMARY:Just testing! 52DTSTART;TZID=America/Toronto:20140107T100000 53DTSTAMP:20140109T204422Z 54ORGANIZER;CN="Administrator":mailto:user1.sabredav@sabredav.org 55SEQUENCE:4 56END:VEVENT 57END:VCALENDAR 58ICS 59 ); 60 61 $messages = []; 62 $this->server->on('schedule', function($message) use (&$messages) { 63 $messages[] = $message; 64 }); 65 66 $response = $this->request($request); 67 68 $this->assertEquals(201, $response->getStatus(), 'Incorrect status code received. Response body:' . $response->getBodyAsString()); 69 70 $result = $this->request(new Request('GET', '/calendars/user1/default/foo.ics'))->getBody(); 71 $resultVObj = VObject\Reader::read($result); 72 73 $this->assertEquals( 74 '1.2', 75 $resultVObj->VEVENT->ATTENDEE[1]['SCHEDULE-STATUS']->getValue() 76 ); 77 78 $this->assertEquals(1, count($messages)); 79 $message = $messages[0]; 80 81 $this->assertInstanceOf('\Sabre\VObject\ITip\Message', $message); 82 $this->assertEquals('mailto:user2.sabredav@sabredav.org', $message->recipient); 83 $this->assertEquals('Roxy Kesh', $message->recipientName); 84 $this->assertEquals('mailto:user1.sabredav@sabredav.org', $message->sender); 85 $this->assertEquals('Administrator', $message->senderName); 86 $this->assertEquals('REQUEST', $message->method); 87 88 $this->assertEquals('REQUEST', $message->message->METHOD->getValue()); 89 90 } 91 92} 93