1<?php
2/**
3 * Unit tests Horde_ActiveSync_Message_Appointment objects.
4 *
5 * @author Michael J. Rubinsky <mrubinsk@horde.org>
6 * @category Horde
7 * @package ActiveSync
8 */
9class Horde_ActiveSync_InviteTest extends Horde_Test_Case
10{
11    protected $_oldtz;
12
13    public function setUp()
14    {
15        $this->_oldtz = date_default_timezone_get();
16        date_default_timezone_set('America/New_York');
17    }
18
19    public function tearDown()
20    {
21        date_default_timezone_set($this->_oldtz);
22    }
23
24    /**
25     * Test creating a Horde_ActiveSync_Message_MeetingRequest from a MIME Email
26     */
27    public function testInvite()
28    {
29        $this->markTestIncomplete('Has issues on 32bit systems');
30        $fixture = file_get_contents(__DIR__ . '/fixtures/invitation_one.eml');
31        $mime = Horde_Mime_Part::parseMessage($fixture);
32        $msg = new Horde_ActiveSync_Message_MeetingRequest();
33        foreach ($mime->contentTypeMap() as $id => $type) {
34            if ($type == 'text/calendar') {
35                $vcal = new Horde_Icalendar();
36                $vcal->parseVcalendar($mime->getPart($id)->getContents());
37                $msg->fromvEvent($vcal);
38                break;
39            }
40        }
41
42        $stream = fopen('php://memory', 'wb+');
43        $encoder = new Horde_ActiveSync_Wbxml_Encoder($stream);
44        $msg->encodeStream($encoder);
45        rewind($stream);
46        $results = stream_get_contents($stream);
47        fclose($stream);
48
49        $stream = fopen(__DIR__ . '/fixtures/meeting_request_one.wbxml', 'r+');
50        $expected = '';
51        // Using file_get_contents or even fread mangles the binary data for some
52        // reason.
53        while ($line = fgets($stream)) {
54            $expected .= $line;
55        }
56        fclose($stream);
57        $this->assertEquals($expected, $results);
58    }
59
60}