Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1821343
UtilTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
5 KB
Subscribers
None
UtilTest.php
View Options
<?php
namespace
Sabre\HTTP
;
class
UtilTest
extends
\PHPUnit_Framework_TestCase
{
function
testParseHTTPDate
()
{
$times
=
[
'Wed, 13 Oct 2010 10:26:00 GMT'
,
'Wednesday, 13-Oct-10 10:26:00 GMT'
,
'Wed Oct 13 10:26:00 2010'
,
];
$expected
=
1286965560
;
foreach
(
$times
as
$time
)
{
$result
=
Util
::
parseHTTPDate
(
$time
);
$this
->
assertEquals
(
$expected
,
$result
->
format
(
'U'
));
}
$result
=
Util
::
parseHTTPDate
(
'Wed Oct 6 10:26:00 2010'
);
$this
->
assertEquals
(
1286360760
,
$result
->
format
(
'U'
));
}
function
testParseHTTPDateFail
()
{
$times
=
[
//random string
'NOW'
,
// not-GMT timezone
'Wednesday, 13-Oct-10 10:26:00 UTC'
,
// No space before the 6
'Wed Oct 6 10:26:00 2010'
,
// Invalid day
'Wed Oct 0 10:26:00 2010'
,
'Wed Oct 32 10:26:00 2010'
,
'Wed, 0 Oct 2010 10:26:00 GMT'
,
'Wed, 32 Oct 2010 10:26:00 GMT'
,
'Wednesday, 32-Oct-10 10:26:00 GMT'
,
// Invalid hour
'Wed, 13 Oct 2010 24:26:00 GMT'
,
'Wednesday, 13-Oct-10 24:26:00 GMT'
,
'Wed Oct 13 24:26:00 2010'
,
];
foreach
(
$times
as
$time
)
{
$this
->
assertFalse
(
Util
::
parseHTTPDate
(
$time
),
'We used the string: '
.
$time
);
}
}
function
testTimezones
()
{
$default
=
date_default_timezone_get
();
date_default_timezone_set
(
'Europe/Amsterdam'
);
$this
->
testParseHTTPDate
();
date_default_timezone_set
(
$default
);
}
function
testToHTTPDate
()
{
$dt
=
new
\DateTime
(
'2011-12-10 12:00:00 +0200'
);
$this
->
assertEquals
(
'Sat, 10 Dec 2011 10:00:00 GMT'
,
Util
::
toHTTPDate
(
$dt
)
);
}
/**
* @dataProvider negotiateData
*/
function
testNegotiate
(
$acceptHeader
,
$available
,
$expected
)
{
$this
->
assertEquals
(
$expected
,
Util
::
negotiate
(
$acceptHeader
,
$available
)
);
}
function
negotiateData
()
{
return
[
[
// simple
'application/xml'
,
[
'application/xml'
],
'application/xml'
,
],
[
// no header
null
,
[
'application/xml'
],
'application/xml'
,
],
[
// 2 options
'application/json'
,
[
'application/xml'
,
'application/json'
],
'application/json'
,
],
[
// 2 choices
'application/json, application/xml'
,
[
'application/xml'
],
'application/xml'
,
],
[
// quality
'application/xml;q=0.2, application/json'
,
[
'application/xml'
,
'application/json'
],
'application/json'
,
],
[
// wildcard
'image/jpeg, image/png, */*'
,
[
'application/xml'
,
'application/json'
],
'application/xml'
,
],
[
// wildcard + quality
'image/jpeg, image/png; q=0.5, */*'
,
[
'application/xml'
,
'application/json'
,
'image/png'
],
'application/xml'
,
],
[
// no match
'image/jpeg'
,
[
'application/xml'
],
null
,
],
[
// This is used in sabre/dav
'text/vcard; version=4.0'
,
[
// Most often used mime-type. Version 3
'text/x-vcard'
,
// The correct standard mime-type. Defaults to version 3 as
// well.
'text/vcard'
,
// vCard 4
'text/vcard; version=4.0'
,
// vCard 3
'text/vcard; version=3.0'
,
// jCard
'application/vcard+json'
,
],
'text/vcard; version=4.0'
,
],
[
// rfc7231 example 1
'audio/*; q=0.2, audio/basic'
,
[
'audio/pcm'
,
'audio/basic'
,
],
'audio/basic'
,
],
[
// Lower quality after
'audio/pcm; q=0.2, audio/basic; q=0.1'
,
[
'audio/pcm'
,
'audio/basic'
,
],
'audio/pcm'
,
],
[
// Random parameter, should be ignored
'audio/pcm; hello; q=0.2, audio/basic; q=0.1'
,
[
'audio/pcm'
,
'audio/basic'
,
],
'audio/pcm'
,
],
[
// No whitepace after type, should pick the one that is the most specific.
'text/vcard;version=3.0, text/vcard'
,
[
'text/vcard'
,
'text/vcard; version=3.0'
],
'text/vcard; version=3.0'
,
],
[
// Same as last one, but order is different
'text/vcard, text/vcard;version=3.0'
,
[
'text/vcard; version=3.0'
,
'text/vcard'
,
],
'text/vcard; version=3.0'
,
],
[
// Charset should be ignored here.
'text/vcard; charset=utf-8; version=3.0, text/vcard'
,
[
'text/vcard'
,
'text/vcard; version=3.0'
],
'text/vcard; version=3.0'
,
],
[
// Undefined offset issue.
'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2'
,
[
'application/xml'
,
'application/json'
,
'image/png'
],
'application/xml'
,
],
];
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Mon, Dec 23, 6:25 PM (2 h, 45 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
915711
Default Alt Text
UtilTest.php (5 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment