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