| | |
| | | |
| | | function _srcpath($fn) |
| | | { |
| | | return realpath(dirname(__FILE__) . '/../src/' . $fn); |
| | | return realpath(__DIR__ . '/../src/' . $fn); |
| | | } |
| | | |
| | | function test_parse_one() |
| | |
| | | $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')); |
| | |
| | | // 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() |