ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
VCardConverterTest.php
Go to the documentation of this file.
1<?php
2
3namespace Sabre\VObject;
4
5use PHPUnit\Framework\TestCase;
6
7class VCardConverterTest extends TestCase {
8
9 use \Sabre\VObject\PHPUnitAssertions;
10
11 function testConvert30to40() {
12
13 $input = <<<IN
14BEGIN:VCARD
15VERSION:3.0
16PRODID:foo
17FN;CHARSET=UTF-8:Steve
18TEL;TYPE=PREF,HOME:+1 555 666 777
19ITEM1.TEL:+1 444 555 666
20ITEM1.X-ABLABEL:CustomLabel
21PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
22PHOTO;ENCODING=b;TYPE=GIF:Zm9v
23PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
24PHOTO;VALUE=URI:http://example.org/foo.png
25X-ABShowAs:COMPANY
26END:VCARD
27IN;
28
29 $output = <<<OUT
30BEGIN:VCARD
31VERSION:4.0
32FN:Steve
33TEL;PREF=1;TYPE=HOME:+1 555 666 777
34ITEM1.TEL:+1 444 555 666
35ITEM1.X-ABLABEL:CustomLabel
36PHOTO;TYPE=HOME:data:image/jpeg;base64,Zm9v
37PHOTO:data:image/gif;base64,Zm9v
38PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
39PHOTO:http://example.org/foo.png
40KIND:ORG
41END:VCARD
42OUT;
43
44 $vcard = Reader::read($input);
45 $vcard = $vcard->convert(Document::VCARD40);
46
47 $this->assertVObjectEqualsVObject(
48 $output,
49 $vcard
50 );
51
52 }
53
54 function testConvert40to40() {
55
56 $input = <<<IN
57BEGIN:VCARD
58VERSION:4.0
59FN:Steve
60TEL;PREF=1;TYPE=HOME:+1 555 666 777
61PHOTO:data:image/jpeg;base64,Zm9v
62PHOTO:data:image/gif;base64,Zm9v
63PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
64PHOTO:http://example.org/foo.png
65END:VCARD
66
67IN;
68
69 $output = <<<OUT
70BEGIN:VCARD
71VERSION:4.0
72FN:Steve
73TEL;PREF=1;TYPE=HOME:+1 555 666 777
74PHOTO:data:image/jpeg;base64,Zm9v
75PHOTO:data:image/gif;base64,Zm9v
76PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
77PHOTO:http://example.org/foo.png
78END:VCARD
79
80OUT;
81
82 $vcard = Reader::read($input);
83 $vcard = $vcard->convert(Document::VCARD40);
84
85 $this->assertVObjectEqualsVObject(
86 $output,
87 $vcard
88 );
89
90 }
91
92 function testConvert21to40() {
93
94 $input = <<<IN
95BEGIN:VCARD
96VERSION:2.1
97N:Family;Johnson
98FN:Johnson Family
99TEL;HOME;VOICE:555-12345-345
100ADR;HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0
101LABEL;HOME;ENCODING=QUOTED-PRINTABLE:100 Street Lane=0D=0ASaubel Beach,
102 ON H0H0H0
103REV:20110731T040251Z
104UID:12345678
105END:VCARD
106IN;
107
108 $output = <<<OUT
109BEGIN:VCARD
110VERSION:4.0
111N:Family;Johnson;;;
112FN:Johnson Family
113TEL;TYPE=HOME,VOICE:555-12345-345
114ADR;TYPE=HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0;
115REV:20110731T040251Z
116UID:12345678
117END:VCARD
118
119OUT;
120
121 $vcard = Reader::read($input);
122 $vcard = $vcard->convert(Document::VCARD40);
123
124 $this->assertVObjectEqualsVObject(
125 $output,
126 $vcard
127 );
128
129 }
130
131 function testConvert30to30() {
132
133 $input = <<<IN
134BEGIN:VCARD
135VERSION:3.0
136PRODID:foo
137FN;CHARSET=UTF-8:Steve
138TEL;TYPE=PREF,HOME:+1 555 666 777
139PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
140PHOTO;ENCODING=b;TYPE=GIF:Zm9v
141PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
142PHOTO;VALUE=URI:http://example.org/foo.png
143END:VCARD
144
145IN;
146
147 $output = <<<OUT
148BEGIN:VCARD
149VERSION:3.0
150PRODID:foo
151FN;CHARSET=UTF-8:Steve
152TEL;TYPE=PREF,HOME:+1 555 666 777
153PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
154PHOTO;ENCODING=b;TYPE=GIF:Zm9v
155PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
156PHOTO;VALUE=URI:http://example.org/foo.png
157END:VCARD
158
159OUT;
160
161 $vcard = Reader::read($input);
162 $vcard = $vcard->convert(Document::VCARD30);
163
164 $this->assertVObjectEqualsVObject(
165 $output,
166 $vcard
167 );
168
169 }
170
171 function testConvert40to30() {
172
173 $input = <<<IN
174BEGIN:VCARD
175VERSION:4.0
176PRODID:foo
177FN:Steve
178TEL;PREF=1;TYPE=HOME:+1 555 666 777
179PHOTO:data:image/jpeg;base64,Zm9v
180PHOTO:data:image/gif,foo
181PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
182PHOTO:http://example.org/foo.png
183KIND:ORG
184END:VCARD
185
186IN;
187
188 $output = <<<OUT
189BEGIN:VCARD
190VERSION:3.0
191FN:Steve
192TEL;TYPE=PREF,HOME:+1 555 666 777
193PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
194PHOTO;ENCODING=b;TYPE=GIF:Zm9v
195PHOTO;ENCODING=b;TYPE=PNG;X-PARAM=FOO:Zm9v
196PHOTO;VALUE=URI:http://example.org/foo.png
197X-ABSHOWAS:COMPANY
198END:VCARD
199
200OUT;
201
202 $vcard = Reader::read($input);
203 $vcard = $vcard->convert(Document::VCARD30);
204
205 $this->assertVObjectEqualsVObject(
206 $output,
207 $vcard
208 );
209
210 }
211
213
214 $input = <<<IN
215BEGIN:VCARD
216VERSION:3.0
217PRODID:foo
218X-ADDRESSBOOKSERVER-KIND:GROUP
219END:VCARD
220
221IN;
222
223 $output = <<<OUT
224BEGIN:VCARD
225VERSION:4.0
226KIND:GROUP
227END:VCARD
228
229OUT;
230
231 $vcard = Reader::read($input);
232 $vcard = $vcard->convert(Document::VCARD40);
233
234 $this->assertVObjectEqualsVObject(
235 $output,
236 $vcard
237 );
238
239 $input = $output;
240 $output = <<<OUT
241BEGIN:VCARD
242VERSION:3.0
243X-ADDRESSBOOKSERVER-KIND:GROUP
244END:VCARD
245
246OUT;
247
248 $vcard = Reader::read($input);
249 $vcard = $vcard->convert(Document::VCARD30);
250
251 $this->assertVObjectEqualsVObject(
252 $output,
253 $vcard
254 );
255
256 }
257
259
260 $input = <<<IN
261BEGIN:VCARD
262VERSION:3.0
263PRODID:foo
264BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
265END:VCARD
266
267IN;
268
269 $output = <<<OUT
270BEGIN:VCARD
271VERSION:4.0
272BDAY:--04-16
273END:VCARD
274
275OUT;
276
277 $vcard = Reader::read($input);
278 $vcard = $vcard->convert(Document::VCARD40);
279
280 $this->assertVObjectEqualsVObject(
281 $output,
282 $vcard
283 );
284
285 $input = $output;
286 $output = <<<OUT
287BEGIN:VCARD
288VERSION:3.0
289BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
290END:VCARD
291
292OUT;
293
294 $vcard = Reader::read($input);
295 $vcard = $vcard->convert(Document::VCARD30);
296
297 $this->assertVObjectEqualsVObject(
298 $output,
299 $vcard
300 );
301
302 }
303
308
309 $input = <<<IN
310BEGIN:VCARD
311VERSION:4.2
312PRODID:foo
313FN;CHARSET=UTF-8:Steve
314TEL;TYPE=PREF,HOME:+1 555 666 777
315ITEM1.TEL:+1 444 555 666
316ITEM1.X-ABLABEL:CustomLabel
317PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
318PHOTO;ENCODING=b;TYPE=GIF:Zm9v
319PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
320PHOTO;VALUE=URI:http://example.org/foo.png
321X-ABShowAs:COMPANY
322END:VCARD
323
324IN;
325
326 $vcard = Reader::read($input);
327 $vcard->convert(Document::VCARD40);
328
329 }
330
335
336 $input = <<<IN
337BEGIN:VCARD
338VERSION:3.0
339PRODID:foo
340END:VCARD
341
342IN;
343
344 $vcard = Reader::read($input);
345 $vcard->convert(Document::VCARD21);
346
347 }
348
350
351 $input = <<<IN
352BEGIN:VCARD
353VERSION:4.0
354PRODID:foo
355KIND:INDIVIDUAL
356END:VCARD
357
358IN;
359
360 $output = <<<OUT
361BEGIN:VCARD
362VERSION:3.0
363END:VCARD
364
365OUT;
366
367 $vcard = Reader::read($input);
368 $vcard = $vcard->convert(Document::VCARD30);
369
370 $this->assertVObjectEqualsVObject(
371 $output,
372 $vcard
373 );
374
375 $input = $output;
376 $output = <<<OUT
377BEGIN:VCARD
378VERSION:4.0
379END:VCARD
380
381OUT;
382
383 $vcard = Reader::read($input);
384 $vcard = $vcard->convert(Document::VCARD40);
385
386 $this->assertVObjectEqualsVObject(
387 $output,
388 $vcard
389 );
390
391 }
392
393 function testAnniversary() {
394
395 $input = <<<IN
396BEGIN:VCARD
397VERSION:4.0
398ITEM1.ANNIVERSARY:20081210
399END:VCARD
400
401IN;
402
403 $output = <<<'OUT'
404BEGIN:VCARD
405VERSION:3.0
406ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
407ITEM1.X-ABLABEL:_$!<Anniversary>!$_
408ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
409END:VCARD
410
411OUT;
412
413 $vcard = Reader::read($input);
414 $vcard = $vcard->convert(Document::VCARD30);
415
416 $this->assertVObjectEqualsVObject(
417 $output,
418 $vcard
419 );
420
421 // Swapping input and output
422 list(
423 $input,
424 $output
425 ) = [
426 $output,
427 $input
428 ];
429
430 $vcard = Reader::read($input);
431 $vcard = $vcard->convert(Document::VCARD40);
432
433 $this->assertVObjectEqualsVObject(
434 $output,
435 $vcard
436 );
437
438 }
439
441
442 $input = <<<IN
443BEGIN:VCARD
444VERSION:4.0
445ITEM1.ANNIVERSARY:20081210
446ITEM2.ANNIVERSARY:20091210
447ITEM3.ANNIVERSARY:20101210
448END:VCARD
449
450IN;
451
452 $output = <<<'OUT'
453BEGIN:VCARD
454VERSION:3.0
455ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
456ITEM1.X-ABLABEL:_$!<Anniversary>!$_
457ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
458ITEM2.X-ABDATE;VALUE=DATE-AND-OR-TIME:20091210
459ITEM2.X-ABLABEL:_$!<Anniversary>!$_
460ITEM2.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20091210
461ITEM3.X-ABDATE;VALUE=DATE-AND-OR-TIME:20101210
462ITEM3.X-ABLABEL:_$!<Anniversary>!$_
463ITEM3.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20101210
464END:VCARD
465
466OUT;
467
468 $vcard = Reader::read($input);
469 $vcard = $vcard->convert(Document::VCARD30);
470
471 $this->assertVObjectEqualsVObject(
472 $output,
473 $vcard
474 );
475
476 // Swapping input and output
477 list(
478 $input,
479 $output
480 ) = [
481 $output,
482 $input
483 ];
484
485 $vcard = Reader::read($input);
486 $vcard = $vcard->convert(Document::VCARD40);
487
488 $this->assertVObjectEqualsVObject(
489 $output,
490 $vcard
491 );
492
493 }
494
495 function testNoLabel() {
496
497 $input = <<<VCF
498BEGIN:VCARD
499VERSION:3.0
500UID:foo
501N:Doe;John;;;
502FN:John Doe
503item1.X-ABDATE;type=pref:2008-12-11
504END:VCARD
505
506VCF;
507
508 $vcard = Reader::read($input);
509
510 $this->assertInstanceOf('Sabre\\VObject\\Component\\VCard', $vcard);
511 $vcard = $vcard->convert(Document::VCARD40);
512 $vcard = $vcard->serialize();
513
514 $converted = Reader::read($vcard);
515 $converted->validate();
516
518
519 $expected = <<<VCF
520BEGIN:VCARD
521VERSION:4.0
522PRODID:-//Sabre//Sabre VObject $version//EN
523UID:foo
524N:Doe;John;;;
525FN:John Doe
526ITEM1.X-ABDATE;PREF=1:2008-12-11
527END:VCARD
528
529VCF;
530
531 $this->assertEquals($expected, str_replace("\r", "", $vcard));
532
533 }
534
535}
$version
Definition: build.php:27
An exception for terminatinating execution or to throw for unit testing.
const VCARD30
vCard 3.0.
Definition: Document.php:44
const VCARD21
vCard 2.1.
Definition: Document.php:39
const VCARD40
vCard 4.0.
Definition: Document.php:49
static read($data, $options=0, $charset='UTF-8')
Parses a vCard or iCalendar object, and returns the top component.
Definition: Reader.php:42
testUnknownTargetVCardVersion()
@expectedException InvalidArgumentException
testUnknownSourceVCardVersion()
@expectedException InvalidArgumentException
const VERSION
Full version number.
Definition: Version.php:17
static http()
Fetches the global http state from ILIAS.
foreach($paths as $path) if($argc< 3) $input
$this data['403_header']