annotate vendor/sabre/vobject/tests/VObject/Parser/QuotedPrintableTest.php @ 7:430dbd5346f7

vendor sabre as distributed
author Charlie Root
date Sat, 13 Jan 2018 09:06:10 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
1 <?php
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
2
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
3 namespace Sabre\VObject\Parser;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
4
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
5 use
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
6 Sabre\VObject\Reader;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
7
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
8 class QuotedPrintableTest extends \PHPUnit_Framework_TestCase {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
9
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
10 function testReadQuotedPrintableSimple() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
11
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
12 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aach=65n\r\nEND:VCARD";
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
13
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
14 $result = Reader::read($data);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
15
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
16 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
17 $this->assertEquals('VCARD', $result->name);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
18 $this->assertEquals(1, count($result->children()));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
19 $this->assertEquals("Aachen", $this->getPropertyValue($result->label));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
20
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
21 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
22
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
23 function testReadQuotedPrintableNewlineSoft() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
24
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
25 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aa=\r\n ch=\r\n en\r\nEND:VCARD";
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
26 $result = Reader::read($data);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
27
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
28 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
29 $this->assertEquals('VCARD', $result->name);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
30 $this->assertEquals(1, count($result->children()));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
31 $this->assertEquals("Aachen", $this->getPropertyValue($result->label));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
32
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
33 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
34
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
35 function testReadQuotedPrintableNewlineHard() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
36
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
37 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aachen=0D=0A=\r\n Germany\r\nEND:VCARD";
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
38 $result = Reader::read($data);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
39
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
40 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
41 $this->assertEquals('VCARD', $result->name);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
42 $this->assertEquals(1, count($result->children()));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
43 $this->assertEquals("Aachen\r\nGermany", $this->getPropertyValue($result->label));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
44
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
45
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
46 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
47
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
48 function testReadQuotedPrintableCompatibilityMS() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
49
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
50 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aachen=0D=0A=\r\nDeutschland:okay\r\nEND:VCARD";
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
51 $result = Reader::read($data, Reader::OPTION_FORGIVING);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
52
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
53 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
54 $this->assertEquals('VCARD', $result->name);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
55 $this->assertEquals(1, count($result->children()));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
56 $this->assertEquals("Aachen\r\nDeutschland:okay", $this->getPropertyValue($result->label));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
57
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
58 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
59
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
60 function testReadQuotesPrintableCompoundValues() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
61
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
62 $data = <<<VCF
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
63 BEGIN:VCARD
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
64 VERSION:2.1
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
65 N:Doe;John;;;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
66 FN:John Doe
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
67 ADR;WORK;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;M=C3=BCnster =
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
68 Str. 1;M=C3=BCnster;;48143;Deutschland
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
69 END:VCARD
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
70 VCF;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
71
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
72 $result = Reader::read($data, Reader::OPTION_FORGIVING);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
73 $this->assertEquals(array(
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
74 '','','Münster Str. 1','Münster','','48143','Deutschland'
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
75 ), $result->ADR->getParts());
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
76
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
77
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
78 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
79
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
80 private function getPropertyValue(\Sabre\VObject\Property $property) {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
81
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
82 return (string)$property;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
83
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
84 /*
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
85 $param = $property['encoding'];
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
86 if ($param !== null) {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
87 $encoding = strtoupper((string)$param);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
88 if ($encoding === 'QUOTED-PRINTABLE') {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
89 $value = quoted_printable_decode($value);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
90 } else {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
91 throw new Exception();
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
92 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
93 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
94
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
95 $param = $property['charset'];
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
96 if ($param !== null) {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
97 $charset = strtoupper((string)$param);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
98 if ($charset !== 'UTF-8') {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
99 $value = mb_convert_encoding($value, 'UTF-8', $charset);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
100 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
101 } else {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
102 $value = StringUtil::convertToUTF8($value);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
103 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
104
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
105 return $value;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
106 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
107 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
108 }