Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1820503
VCardConverterTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
9 KB
Subscribers
None
VCardConverterTest.php
View Options
<?php
namespace
Sabre\VObject
;
class
VCardConverterTest
extends
TestCase
{
function
testConvert30to40
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:3.0
PRODID:foo
FN;CHARSET=UTF-8:Steve
TEL;TYPE=PREF,HOME:+1 555 666 777
ITEM1.TEL:+1 444 555 666
ITEM1.X-ABLABEL:CustomLabel
PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
PHOTO;ENCODING=b;TYPE=GIF:Zm9v
PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
PHOTO;VALUE=URI:http://example.org/foo.png
X-ABShowAs:COMPANY
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:4.0
FN:Steve
TEL;PREF=1;TYPE=HOME:+1 555 666 777
ITEM1.TEL:+1 444 555 666
ITEM1.X-ABLABEL:CustomLabel
PHOTO;TYPE=HOME:data:image/jpeg;base64,Zm9v
PHOTO:data:image/gif;base64,Zm9v
PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
PHOTO:http://example.org/foo.png
KIND:ORG
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testConvert40to40
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:4.0
FN:Steve
TEL;PREF=1;TYPE=HOME:+1 555 666 777
PHOTO:data:image/jpeg;base64,Zm9v
PHOTO:data:image/gif;base64,Zm9v
PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
PHOTO:http://example.org/foo.png
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:4.0
FN:Steve
TEL;PREF=1;TYPE=HOME:+1 555 666 777
PHOTO:data:image/jpeg;base64,Zm9v
PHOTO:data:image/gif;base64,Zm9v
PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
PHOTO:http://example.org/foo.png
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testConvert21to40
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:2.1
N:Family;Johnson
FN:Johnson Family
TEL;HOME;VOICE:555-12345-345
ADR;HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0
LABEL;HOME;ENCODING=QUOTED-PRINTABLE:100 Street Lane=0D=0ASaubel Beach,
ON H0H0H0
REV:20110731T040251Z
UID:12345678
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:4.0
N:Family;Johnson;;;
FN:Johnson Family
TEL;TYPE=HOME,VOICE:555-12345-345
ADR;TYPE=HOME:;;100 Street Lane;Saubel Beach;ON;H0H0H0;
REV:20110731T040251Z
UID:12345678
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testConvert30to30
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:3.0
PRODID:foo
FN;CHARSET=UTF-8:Steve
TEL;TYPE=PREF,HOME:+1 555 666 777
PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
PHOTO;ENCODING=b;TYPE=GIF:Zm9v
PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
PHOTO;VALUE=URI:http://example.org/foo.png
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:3.0
PRODID:foo
FN;CHARSET=UTF-8:Steve
TEL;TYPE=PREF,HOME:+1 555 666 777
PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
PHOTO;ENCODING=b;TYPE=GIF:Zm9v
PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
PHOTO;VALUE=URI:http://example.org/foo.png
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD30
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testConvert40to30
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:4.0
PRODID:foo
FN:Steve
TEL;PREF=1;TYPE=HOME:+1 555 666 777
PHOTO:data:image/jpeg;base64,Zm9v
PHOTO:data:image/gif,foo
PHOTO;X-PARAM=FOO:data:image/png;base64,Zm9v
PHOTO:http://example.org/foo.png
KIND:ORG
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:3.0
FN:Steve
TEL;TYPE=PREF,HOME:+1 555 666 777
PHOTO;ENCODING=b;TYPE=JPEG:Zm9v
PHOTO;ENCODING=b;TYPE=GIF:Zm9v
PHOTO;ENCODING=b;TYPE=PNG;X-PARAM=FOO:Zm9v
PHOTO;VALUE=URI:http://example.org/foo.png
X-ABSHOWAS:COMPANY
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD30
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testConvertGroupCard
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:3.0
PRODID:foo
X-ADDRESSBOOKSERVER-KIND:GROUP
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:4.0
KIND:GROUP
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
$input
=
$output
;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:3.0
X-ADDRESSBOOKSERVER-KIND:GROUP
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD30
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testBDAYConversion
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:3.0
PRODID:foo
BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:4.0
BDAY:--04-16
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
$input
=
$output
;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:3.0
BDAY;X-APPLE-OMIT-YEAR=1604:1604-04-16
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD30
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
/**
* @expectedException InvalidArgumentException
*/
function
testUnknownSourceVCardVersion
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:4.2
PRODID:foo
FN;CHARSET=UTF-8:Steve
TEL;TYPE=PREF,HOME:+1 555 666 777
ITEM1.TEL:+1 444 555 666
ITEM1.X-ABLABEL:CustomLabel
PHOTO;ENCODING=b;TYPE=JPEG,HOME:Zm9v
PHOTO;ENCODING=b;TYPE=GIF:Zm9v
PHOTO;X-PARAM=FOO;ENCODING=b;TYPE=PNG:Zm9v
PHOTO;VALUE=URI:http://example.org/foo.png
X-ABShowAs:COMPANY
END:VCARD
IN;
$vcard
=
Reader
::
read
(
$input
);
$vcard
->
convert
(
Document
::
VCARD40
);
}
/**
* @expectedException InvalidArgumentException
*/
function
testUnknownTargetVCardVersion
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:3.0
PRODID:foo
END:VCARD
IN;
$vcard
=
Reader
::
read
(
$input
);
$vcard
->
convert
(
Document
::
VCARD21
);
}
function
testConvertIndividualCard
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:4.0
PRODID:foo
KIND:INDIVIDUAL
END:VCARD
IN;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:3.0
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD30
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
$input
=
$output
;
$output
=
<<<OUT
BEGIN:VCARD
VERSION:4.0
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testAnniversary
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:4.0
ITEM1.ANNIVERSARY:20081210
END:VCARD
IN;
$output
=
<<<'OUT'
BEGIN:VCARD
VERSION:3.0
ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
ITEM1.X-ABLABEL:_$!<Anniversary>!$_
ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD30
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
// Swapping input and output
list
(
$input
,
$output
)
=
array
(
$output
,
$input
);
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testMultipleAnniversaries
()
{
$input
=
<<<IN
BEGIN:VCARD
VERSION:4.0
ITEM1.ANNIVERSARY:20081210
ITEM2.ANNIVERSARY:20091210
ITEM3.ANNIVERSARY:20101210
END:VCARD
IN;
$output
=
<<<'OUT'
BEGIN:VCARD
VERSION:3.0
ITEM1.X-ABDATE;VALUE=DATE-AND-OR-TIME:20081210
ITEM1.X-ABLABEL:_$!<Anniversary>!$_
ITEM1.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20081210
ITEM2.X-ABDATE;VALUE=DATE-AND-OR-TIME:20091210
ITEM2.X-ABLABEL:_$!<Anniversary>!$_
ITEM2.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20091210
ITEM3.X-ABDATE;VALUE=DATE-AND-OR-TIME:20101210
ITEM3.X-ABLABEL:_$!<Anniversary>!$_
ITEM3.X-ANNIVERSARY;VALUE=DATE-AND-OR-TIME:20101210
END:VCARD
OUT;
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD30
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
// Swapping input and output
list
(
$input
,
$output
)
=
array
(
$output
,
$input
);
$vcard
=
Reader
::
read
(
$input
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$this
->
assertVObjEquals
(
$output
,
$vcard
);
}
function
testNoLabel
()
{
$input
=
<<<VCF
BEGIN:VCARD
VERSION:3.0
UID:foo
N:Doe;John;;;
FN:John Doe
item1.X-ABDATE;type=pref:2008-12-11
END:VCARD
VCF;
$vcard
=
Reader
::
read
(
$input
);
$this
->
assertInstanceOf
(
'Sabre
\\
VObject
\\
Component
\\
VCard'
,
$vcard
);
$vcard
=
$vcard
->
convert
(
Document
::
VCARD40
);
$vcard
=
$vcard
->
serialize
();
$converted
=
Reader
::
read
(
$vcard
);
$converted
->
validate
();
$version
=
Version
::
VERSION
;
$expected
=
<<<VCF
BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject $version//EN
UID:foo
N:Doe;John;;;
FN:John Doe
ITEM1.X-ABDATE;PREF=1:2008-12-11
END:VCARD
VCF;
$this
->
assertEquals
(
$expected
,
str_replace
(
"
\r
"
,
""
,
$vcard
));
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sun, Dec 22, 4:20 AM (5 d, 7 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
915754
Default Alt Text
VCardConverterTest.php (9 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment