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