Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1821974
CliTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
14 KB
Subscribers
None
CliTest.php
View Options
<?php
namespace
Sabre\VObject
;
/**
* Tests the cli.
*
* Warning: these tests are very rudimentary.
*/
class
CliTest
extends
\PHPUnit_Framework_TestCase
{
public
function
setUp
()
{
$this
->
cli
=
new
CliMock
();
$this
->
cli
->
stderr
=
fopen
(
'php://memory'
,
'r+'
);
$this
->
cli
->
stdout
=
fopen
(
'php://memory'
,
'r+'
);
}
public
function
testInvalidArg
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'--hi'
))
);
rewind
(
$this
->
cli
->
stderr
);
$this
->
assertTrue
(
strlen
(
stream_get_contents
(
$this
->
cli
->
stderr
))
>
100
);
}
public
function
testQuiet
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'-q'
))
);
$this
->
assertTrue
(
$this
->
cli
->
quiet
);
rewind
(
$this
->
cli
->
stderr
);
$this
->
assertEquals
(
0
,
strlen
(
stream_get_contents
(
$this
->
cli
->
stderr
)));
}
public
function
testHelp
()
{
$this
->
assertEquals
(
0
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'-h'
))
);
rewind
(
$this
->
cli
->
stderr
);
$this
->
assertTrue
(
strlen
(
stream_get_contents
(
$this
->
cli
->
stderr
))
>
100
);
}
public
function
testFormat
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'--format=jcard'
))
);
rewind
(
$this
->
cli
->
stderr
);
$this
->
assertTrue
(
strlen
(
stream_get_contents
(
$this
->
cli
->
stderr
))
>
100
);
$this
->
assertEquals
(
'jcard'
,
$this
->
cli
->
format
);
}
public
function
testFormatInvalid
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'--format=foo'
))
);
rewind
(
$this
->
cli
->
stderr
);
$this
->
assertTrue
(
strlen
(
stream_get_contents
(
$this
->
cli
->
stderr
))
>
100
);
$this
->
assertNull
(
$this
->
cli
->
format
);
}
public
function
testInputFormatInvalid
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'--inputformat=foo'
))
);
rewind
(
$this
->
cli
->
stderr
);
$this
->
assertTrue
(
strlen
(
stream_get_contents
(
$this
->
cli
->
stderr
))
>
100
);
$this
->
assertNull
(
$this
->
cli
->
format
);
}
public
function
testNoInputFile
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'color'
))
);
rewind
(
$this
->
cli
->
stderr
);
$this
->
assertTrue
(
strlen
(
stream_get_contents
(
$this
->
cli
->
stderr
))
>
100
);
}
public
function
testTooManyArgs
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'color'
,
'a'
,
'b'
,
'c'
))
);
}
public
function
testUnknownCommand
()
{
$this
->
assertEquals
(
1
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'foo'
,
'-'
))
);
}
public
function
testConvertJson
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<ICS
BEGIN:VCARD
VERSION:3.0
FN:Cowboy Henk
END:VCARD
ICS
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
$this
->
assertEquals
(
0
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'--format=json'
,
'-'
))
);
rewind
(
$this
->
cli
->
stdout
);
$version
=
Version
::
VERSION
;
$this
->
assertEquals
(
'["vcard",[["version",{},"text","4.0"],["prodid",{},"text","-
\/\/
Sabre
\/\/
Sabre VObject '
.
$version
.
'
\/\/
EN"],["fn",{},"text","Cowboy Henk"]]]'
,
stream_get_contents
(
$this
->
cli
->
stdout
)
);
}
public
function
testConvertJCardPretty
()
{
if
(
version_compare
(
PHP_VERSION
,
'5.4.0'
)
<
0
)
{
$this
->
markTestSkipped
(
'This test required PHP 5.4.0'
);
}
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<ICS
BEGIN:VCARD
VERSION:3.0
FN:Cowboy Henk
END:VCARD
ICS
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
$this
->
assertEquals
(
0
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'--format=jcard'
,
'--pretty'
,
'-'
))
);
rewind
(
$this
->
cli
->
stdout
);
$version
=
Version
::
VERSION
;
// PHP 5.5.12 changed the output
$expected
=
<<<JCARD
[
"vcard",
[
[
"versi
JCARD;
$this
->
assertStringStartsWith
(
$expected
,
stream_get_contents
(
$this
->
cli
->
stdout
)
);
}
public
function
testConvertJCalFail
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<ICS
BEGIN:VCARD
VERSION:3.0
FN:Cowboy Henk
END:VCARD
ICS
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
$this
->
assertEquals
(
2
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'--format=jcal'
,
'--inputformat=mimedir'
,
'-'
))
);
}
public
function
testConvertMimeDir
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<JCARD
[
"vcard",
[
[
"version",
{
},
"text",
"4.0"
],
[
"prodid",
{
},
"text",
"-\/\/Sabre\/\/Sabre VObject 3.1.0\/\/EN"
],
[
"fn",
{
},
"text",
"Cowboy Henk"
]
]
]
JCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
$this
->
assertEquals
(
0
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'--format=mimedir'
,
'--inputformat=json'
,
'--pretty'
,
'-'
))
);
rewind
(
$this
->
cli
->
stdout
);
$expected
=
<<<VCF
BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject 3.1.0//EN
FN:Cowboy Henk
END:VCARD
VCF;
$this
->
assertEquals
(
strtr
(
$expected
,
array
(
"
\n
"
=>
"
\r\n
"
)),
stream_get_contents
(
$this
->
cli
->
stdout
)
);
}
public
function
testConvertDefaultFormats
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
$outputFile
=
SABRE_TEMPDIR
.
'bar.json'
;
$this
->
assertEquals
(
2
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'foo.json'
,
$outputFile
))
);
$this
->
assertEquals
(
'json'
,
$this
->
cli
->
inputFormat
);
$this
->
assertEquals
(
'json'
,
$this
->
cli
->
format
);
}
public
function
testConvertDefaultFormats2
()
{
$outputFile
=
SABRE_TEMPDIR
.
'bar.ics'
;
$this
->
assertEquals
(
2
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'foo.ics'
,
$outputFile
))
);
$this
->
assertEquals
(
'mimedir'
,
$this
->
cli
->
inputFormat
);
$this
->
assertEquals
(
'mimedir'
,
$this
->
cli
->
format
);
}
public
function
testVCard3040
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCARD
VERSION:3.0
PRODID:-//Sabre//Sabre VObject 3.1.0//EN
FN:Cowboy Henk
END:VCARD
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
$this
->
assertEquals
(
0
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'--format=vcard40'
,
'--pretty'
,
'-'
))
);
rewind
(
$this
->
cli
->
stdout
);
$version
=
Version
::
VERSION
;
$expected
=
<<<VCF
BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject $version//EN
FN:Cowboy Henk
END:VCARD
VCF;
$this
->
assertEquals
(
strtr
(
$expected
,
array
(
"
\n
"
=>
"
\r\n
"
)),
stream_get_contents
(
$this
->
cli
->
stdout
)
);
}
public
function
testVCard4030
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject 3.1.0//EN
FN:Cowboy Henk
END:VCARD
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
$this
->
assertEquals
(
0
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'--format=vcard30'
,
'--pretty'
,
'-'
))
);
$version
=
Version
::
VERSION
;
rewind
(
$this
->
cli
->
stdout
);
$expected
=
<<<VCF
BEGIN:VCARD
VERSION:3.0
PRODID:-//Sabre//Sabre VObject $version//EN
FN:Cowboy Henk
END:VCARD
VCF;
$this
->
assertEquals
(
strtr
(
$expected
,
array
(
"
\n
"
=>
"
\r\n
"
)),
stream_get_contents
(
$this
->
cli
->
stdout
)
);
}
public
function
testVCard4021
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject 3.1.0//EN
FN:Cowboy Henk
END:VCARD
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
// vCard 2.1 is not supported yet, so this returns a failure.
$this
->
assertEquals
(
2
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'convert'
,
'--format=vcard21'
,
'--pretty'
,
'-'
))
);
}
function
testValidate
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject 3.1.0//EN
UID:foo
FN:Cowboy Henk
END:VCARD
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
$result
=
$this
->
cli
->
main
(
array
(
'vobject'
,
'validate'
,
'-'
));
$this
->
assertEquals
(
0
,
$result
);
}
function
testValidateFail
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCALENDAR
VERSION:2.0
END:VCARD
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
// vCard 2.1 is not supported yet, so this returns a failure.
$this
->
assertEquals
(
2
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'validate'
,
'-'
))
);
}
function
testValidateFail2
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCALENDAR
VERSION:5.0
END:VCALENDAR
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
// vCard 2.1 is not supported yet, so this returns a failure.
$this
->
assertEquals
(
2
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'validate'
,
'-'
))
);
}
function
testRepair
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCARD
VERSION:5.0
END:VCARD
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
// vCard 2.1 is not supported yet, so this returns a failure.
$this
->
assertEquals
(
2
,
$this
->
cli
->
main
(
array
(
'vobject'
,
'repair'
,
'-'
))
);
rewind
(
$this
->
cli
->
stdout
);
$this
->
assertRegExp
(
"/^BEGIN:VCARD
\r\n
VERSION:2.1
\r\n
UID:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
\r\n
END:VCARD
\r\n
$/"
,
stream_get_contents
(
$this
->
cli
->
stdout
));
}
function
testRepairNothing
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject 3.1.0//EN
BEGIN:VEVENT
UID:foo
DTSTAMP:20140122T233226Z
DTSTART:20140101T120000Z
END:VEVENT
END:VCALENDAR
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
// vCard 2.1 is not supported yet, so this returns a failure.
$result
=
$this
->
cli
->
main
(
array
(
'vobject'
,
'repair'
,
'-'
));
rewind
(
$this
->
cli
->
stderr
);
$error
=
stream_get_contents
(
$this
->
cli
->
stderr
);
$this
->
assertEquals
(
0
,
$result
,
"This should have been error free. stderr output:
\n
"
.
$error
);
}
/**
* Note: this is a very shallow test, doesn't dig into the actual output,
* but just makes sure there's no errors thrown.
*
* The colorizer is not a critical component, it's mostly a debugging tool.
*/
function
testColorCalendar
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
$version
=
Version
::
VERSION
;
/**
* This object is not valid, but it's designed to hit every part of the
* colorizer source.
*/
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject {$version}//EN
BEGIN:VTIMEZONE
END:VTIMEZONE
BEGIN:VEVENT
ATTENDEE;RSVP=TRUE:mailto:foo@example.org
REQUEST-STATUS:5;foo
ATTACH:blabla
END:VEVENT
END:VCALENDAR
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
// vCard 2.1 is not supported yet, so this returns a failure.
$result
=
$this
->
cli
->
main
(
array
(
'vobject'
,
'color'
,
'-'
));
rewind
(
$this
->
cli
->
stderr
);
$error
=
stream_get_contents
(
$this
->
cli
->
stderr
);
$this
->
assertEquals
(
0
,
$result
,
"This should have been error free. stderr output:
\n
"
.
$error
);
}
/**
* Note: this is a very shallow test, doesn't dig into the actual output,
* but just makes sure there's no errors thrown.
*
* The colorizer is not a critical component, it's mostly a debugging tool.
*/
function
testColorVCard
()
{
$inputStream
=
fopen
(
'php://memory'
,
'r+'
);
$version
=
Version
::
VERSION
;
/**
* This object is not valid, but it's designed to hit every part of the
* colorizer source.
*/
fwrite
(
$inputStream
,
<<<VCARD
BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject {$version}//EN
ADR:1;2;3;4a,4b;5;6
group.TEL:123454768
END:VCARD
VCARD
);
rewind
(
$inputStream
);
$this
->
cli
->
stdin
=
$inputStream
;
// vCard 2.1 is not supported yet, so this returns a failure.
$result
=
$this
->
cli
->
main
(
array
(
'vobject'
,
'color'
,
'-'
));
rewind
(
$this
->
cli
->
stderr
);
$error
=
stream_get_contents
(
$this
->
cli
->
stderr
);
$this
->
assertEquals
(
0
,
$result
,
"This should have been error free. stderr output:
\n
"
.
$error
);
}
}
class
CliMock
extends
Cli
{
public
$log
=
array
();
public
$quiet
=
false
;
public
$format
;
public
$pretty
;
public
$stdin
;
public
$stdout
;
public
$stderr
;
public
$inputFormat
;
public
$outputFormat
;
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Dec 24, 12:25 PM (18 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
915698
Default Alt Text
CliTest.php (14 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment