xref: /plugin/davcal/vendor/sabre/vobject/tests/VObject/ITip/BrokerTester.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\VObject\ITip;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse Sabre\VObject\Reader;
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler/**
8*a1a3b679SAndreas Boehler * Utilities for testing the broker
9*a1a3b679SAndreas Boehler *
10*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).
11*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/)
12*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License
13*a1a3b679SAndreas Boehler */
14*a1a3b679SAndreas Boehlerabstract class BrokerTester extends \Sabre\VObject\TestCase {
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler    function parse($oldMessage, $newMessage, $expected = array(), $currentUser = 'mailto:one@example.org') {
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler        $broker = new Broker();
19*a1a3b679SAndreas Boehler        $result = $broker->parseEvent($newMessage, $currentUser, $oldMessage);
20*a1a3b679SAndreas Boehler
21*a1a3b679SAndreas Boehler        $this->assertEquals(count($expected), count($result));
22*a1a3b679SAndreas Boehler
23*a1a3b679SAndreas Boehler        foreach($expected as $index=>$ex) {
24*a1a3b679SAndreas Boehler
25*a1a3b679SAndreas Boehler            $message = $result[$index];
26*a1a3b679SAndreas Boehler
27*a1a3b679SAndreas Boehler            foreach($ex as $key=>$val) {
28*a1a3b679SAndreas Boehler
29*a1a3b679SAndreas Boehler                if ($key==='message') {
30*a1a3b679SAndreas Boehler                    $this->assertVObjEquals(
31*a1a3b679SAndreas Boehler                        $val,
32*a1a3b679SAndreas Boehler                        $message->message->serialize()
33*a1a3b679SAndreas Boehler                    );
34*a1a3b679SAndreas Boehler                } else {
35*a1a3b679SAndreas Boehler                    $this->assertEquals($val, $message->$key);
36*a1a3b679SAndreas Boehler                }
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler            }
39*a1a3b679SAndreas Boehler
40*a1a3b679SAndreas Boehler        }
41*a1a3b679SAndreas Boehler
42*a1a3b679SAndreas Boehler    }
43*a1a3b679SAndreas Boehler
44*a1a3b679SAndreas Boehler    function process($input, $existingObject = null, $expected = false) {
45*a1a3b679SAndreas Boehler
46*a1a3b679SAndreas Boehler        $version = \Sabre\VObject\Version::VERSION;
47*a1a3b679SAndreas Boehler
48*a1a3b679SAndreas Boehler        $vcal = Reader::read($input);
49*a1a3b679SAndreas Boehler
50*a1a3b679SAndreas Boehler        foreach($vcal->getComponents() as $mainComponent) {
51*a1a3b679SAndreas Boehler            break;
52*a1a3b679SAndreas Boehler        }
53*a1a3b679SAndreas Boehler
54*a1a3b679SAndreas Boehler        $message = new Message();
55*a1a3b679SAndreas Boehler        $message->message = $vcal;
56*a1a3b679SAndreas Boehler        $message->method = isset($vcal->METHOD)?$vcal->METHOD->getValue():null;
57*a1a3b679SAndreas Boehler        $message->component = $mainComponent->name;
58*a1a3b679SAndreas Boehler        $message->uid = $mainComponent->uid->getValue();
59*a1a3b679SAndreas Boehler        $message->sequence = isset($vcal->VEVENT[0])?(string)$vcal->VEVENT[0]->SEQUENCE:null;
60*a1a3b679SAndreas Boehler
61*a1a3b679SAndreas Boehler        if ($message->method === 'REPLY') {
62*a1a3b679SAndreas Boehler
63*a1a3b679SAndreas Boehler            $message->sender = $mainComponent->ATTENDEE->getValue();
64*a1a3b679SAndreas Boehler            $message->senderName = isset($mainComponent->ATTENDEE['CN'])?$mainComponent->ATTENDEE['CN']->getValue():null;
65*a1a3b679SAndreas Boehler            $message->recipient = $mainComponent->ORGANIZER->getValue();
66*a1a3b679SAndreas Boehler            $message->recipientName = isset($mainComponent->ORGANIZER['CN'])?$mainComponent->ORGANIZER['CN']:null;
67*a1a3b679SAndreas Boehler
68*a1a3b679SAndreas Boehler        }
69*a1a3b679SAndreas Boehler
70*a1a3b679SAndreas Boehler        $broker = new Broker();
71*a1a3b679SAndreas Boehler
72*a1a3b679SAndreas Boehler        if (is_string($existingObject)) {
73*a1a3b679SAndreas Boehler            $existingObject = str_replace(
74*a1a3b679SAndreas Boehler                '%foo%',
75*a1a3b679SAndreas Boehler                "VERSION:2.0\nPRODID:-//Sabre//Sabre VObject $version//EN\nCALSCALE:GREGORIAN",
76*a1a3b679SAndreas Boehler                $existingObject
77*a1a3b679SAndreas Boehler            );
78*a1a3b679SAndreas Boehler            $existingObject = Reader::read($existingObject);
79*a1a3b679SAndreas Boehler        }
80*a1a3b679SAndreas Boehler
81*a1a3b679SAndreas Boehler        $result = $broker->processMessage($message, $existingObject);
82*a1a3b679SAndreas Boehler
83*a1a3b679SAndreas Boehler        if (is_string($expected)) {
84*a1a3b679SAndreas Boehler            $expected = str_replace(
85*a1a3b679SAndreas Boehler                '%foo%',
86*a1a3b679SAndreas Boehler                "VERSION:2.0\nPRODID:-//Sabre//Sabre VObject $version//EN\nCALSCALE:GREGORIAN",
87*a1a3b679SAndreas Boehler                $expected
88*a1a3b679SAndreas Boehler            );
89*a1a3b679SAndreas Boehler            $expected = str_replace("\n", "\r\n", $expected);
90*a1a3b679SAndreas Boehler
91*a1a3b679SAndreas Boehler        }
92*a1a3b679SAndreas Boehler        if ($result instanceof \Sabre\VObject\Component\VCalendar) {
93*a1a3b679SAndreas Boehler            $result = $result->serialize();
94*a1a3b679SAndreas Boehler            $result = rtrim($result,"\r\n");
95*a1a3b679SAndreas Boehler        }
96*a1a3b679SAndreas Boehler
97*a1a3b679SAndreas Boehler        $this->assertEquals(
98*a1a3b679SAndreas Boehler            $expected,
99*a1a3b679SAndreas Boehler            $result
100*a1a3b679SAndreas Boehler        );
101*a1a3b679SAndreas Boehler
102*a1a3b679SAndreas Boehler    }
103*a1a3b679SAndreas Boehler}
104