xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/DeliverNewEventTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
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