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