1<?php
2/*
3 * Unit tests for Horde_ActiveSync_Utils::
4 *
5 * @author Michael J. Rubinsky <mrubinsk@horde.org>
6 * @category Horde
7 * @package ActiveSync
8 */
9class Horde_ActiveSync_UtilsTest extends Horde_Test_Case
10{
11    public function testBase64Uri()
12    {
13        /* Settings Request for versions >= 12.1 */
14        $url = 'oBEJBBBOaW5lMkVDN0VDMEJCNTREBAGJpmIHQW5kcm9pZAcBAA==';
15        $results = Horde_ActiveSync_Utils::decodeBase64($url);
16        $fixture = array(
17            'ProtVer' => '16.0',
18            'Cmd' => 'Settings',
19            'Locale' => 1033,
20            'DeviceId' => '4e696e65324543374543304242353444',
21            'PolicyKey' => 1655081217,
22            'DeviceType' => 'Android',
23            'SaveInSent' => false,
24            'AcceptMultiPart' => false
25        );
26        $this->assertEquals($fixture, $results);
27
28        /* Smart Forward */
29        $url = 'eQIJBBCuTs0Z9ZK6Vldwb/dM8JusBHVeHIQDUFBDBwEBAwYxMTkyODEBBUlOQk9Y';
30        $results = Horde_ActiveSync_Utils::decodeBase64($url);
31        $results['PolicyKey'] = sprintf('%u', $results['PolicyKey']);
32
33        // This is binary data, test it separately.
34        $fixture = array(
35            'ProtVer' => '12.1',
36            'Cmd' => 'SmartForward',
37            'Locale' => 1033,
38            'DeviceId' => 'ae4ecd19f592ba5657706ff74cf09bac',
39            'PolicyKey' => '2216451701',
40            'DeviceType' => 'PPC',
41            'ItemId' => '119281',
42            'CollectionId' => 'INBOX',
43            'AcceptMultiPart' => false,
44            'SaveInSent' => true
45        );
46        $this->assertEquals($fixture, $results);
47    }
48
49    public function testBodyTypePref()
50    {
51        $this->markTestIncomplete('Needs refactoring.');
52        $fixture = array(
53            'bodyprefs' => array(Horde_ActiveSync::BODYPREF_TYPE_HTML => true, Horde_ActiveSync::BODYPREF_TYPE_MIME => true)
54        );
55
56        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_HTML, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture));
57        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_MIME, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture, false));
58
59        $fixture = array(
60            'bodyprefs' => array(Horde_ActiveSync::BODYPREF_TYPE_HTML => true)
61        );
62        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_HTML, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture));
63        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_HTML, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture, false));
64
65        $fixture = array(
66            'bodyprefs' => array(Horde_ActiveSync::BODYPREF_TYPE_HTML => true)
67        );
68        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_HTML, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture));
69        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_HTML, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture, false));
70
71        $fixture = array(
72            'bodyprefs' => array(Horde_ActiveSync::BODYPREF_TYPE_MIME => true)
73        );
74        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_MIME, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture));
75        $this->assertEquals(Horde_ActiveSync::BODYPREF_TYPE_MIME, Horde_ActiveSync_Utils_Mime::getBodyTypePref($fixture, false));
76    }
77}