Aleksander Machniak
2014-10-18 ced34cb15e095836767971aa4d27b141fb1d7ec9
tests/Framework/VCard.php
@@ -10,7 +10,7 @@
    function _srcpath($fn)
    {
        return realpath(dirname(__FILE__) . '/../src/' . $fn);
        return realpath(__DIR__ . '/../src/' . $fn);
    }
    function test_parse_one()
@@ -65,6 +65,39 @@
        $this->assertEquals("prefix", $vcard['prefix'], "Decode backslash character");
    }
    /**
     * Backslash parsing test (#1489085)
     */
    function test_parse_five()
    {
        $vcard = "BEGIN:VCARD\nVERSION:3.0\nN:last\\\\\\a;fir\\nst\nURL:http\\://domain.tld\nEND:VCARD";
        $vcard = new rcube_vcard($vcard, null);
        $vcard = $vcard->get_assoc();
        $this->assertEquals("last\\a", $vcard['surname'], "Decode dummy backslash character");
        $this->assertEquals("fir\nst", $vcard['firstname'], "Decode backslash character");
        $this->assertEquals("http://domain.tld", $vcard['website:other'][0], "Decode dummy backslash character");
    }
    /**
     * Some Apple vCard quirks (#1489993)
     */
    function test_parse_six()
    {
        $vcard = new rcube_vcard("BEGIN:VCARD\n"
            . "VERSION:3.0\n"
            . "N:;;;;\n"
            . "FN:Apple Computer AG\n"
            . "ITEM1.ADR;type=WORK;type=pref:;;Birgistrasse 4a;Wallisellen-Zürich;;8304;Switzerland\n"
            . "PHOTO;ENCODING=B:aHR0cDovL3Rlc3QuY29t\n"
            . "END:VCARD"
        );
        $result = $vcard->get_assoc();
        $this->assertCount(1, $result['address:work'], "ITEM1.-prefixed entry");
    }
    function test_import()
    {
        $input = file_get_contents($this->_srcpath('apple.vcf'));
@@ -93,6 +126,22 @@
        // ENCODING=b case (#1488683)
        $this->assertEquals("/9j/4AAQSkZJRgABAQA", substr(base64_encode($vcard['photo']), 0, 19), "Photo decoding");
        $this->assertEquals("Müller", $vcard['surname'], "Unicode characters");
        $input = str_replace('ENCODING=b:', 'ENCODING=base64;jpeg:', $input);
        $vcards = rcube_vcard::import($input);
        $vcard = $vcards[0]->get_assoc();
        // ENCODING=base64 case (#1489977)
        $this->assertEquals("/9j/4AAQSkZJRgABAQA", substr(base64_encode($vcard['photo']), 0, 19), "Photo decoding");
        $input = str_replace('PHOTO;ENCODING=base64;jpeg:', 'PHOTO:data:image/jpeg;base64,', $input);
        $vcards = rcube_vcard::import($input);
        $vcard = $vcards[0]->get_assoc();
        // vcard4.0 "PHOTO:data:image/jpeg;base64," case (#1489977)
        $this->assertEquals("/9j/4AAQSkZJRgABAQA", substr(base64_encode($vcard['photo']), 0, 19), "Photo decoding");
    }
    function test_encodings()