Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5978988
UrlUtilsTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
UrlUtilsTest.php
View Options
<?php
use
MediaWiki\Utils\UrlUtils
;
/**
* @coversDefaultClass \MediaWiki\Utils\UrlUtils
* @covers ::__construct
*/
class
UrlUtilsTest
extends
MediaWikiUnitTestCase
{
public
function
testConstructError
():
void
{
$this
->
expectException
(
InvalidArgumentException
::
class
);
$this
->
expectExceptionMessage
(
'Unrecognized option "unrecognized"'
);
new
UrlUtils
(
[
'unrecognized'
=>
true
]
);
}
/**
* @covers ::expand
* @dataProvider UrlUtilsProviders::provideExpandException
* @param array $options
* @param string|int|null $defaultProto
* @param string $expectedClass Expected class of exception
* @param string $expectedMsg Expected exception message
*/
public
function
testExpandException
(
array
$options
,
$defaultProto
,
string
$expectedClass
,
string
$expectedMsg
):
void
{
$this
->
expectException
(
$expectedClass
);
$this
->
expectExceptionMessage
(
$expectedMsg
);
$urlUtils
=
new
UrlUtils
(
$options
);
$urlUtils
->
expand
(
'/'
,
$defaultProto
);
}
/**
* @covers ::expand
* @dataProvider UrlUtilsProviders::provideExpand
* @param string $input
* @param array $options
* @param string|int|null $defaultProto
* @param ?string $expected
*/
public
function
testExpand
(
string
$input
,
array
$options
,
$defaultProto
,
?
string
$expected
):
void
{
$urlUtils
=
new
UrlUtils
(
$options
);
$this
->
assertSame
(
$expected
,
$urlUtils
->
expand
(
$input
,
$defaultProto
)
);
}
/**
* @covers ::getServer
* @dataProvider UrlUtilsProviders::provideGetServer
* @param array $options
* @param string|int|null $defaultProto
* @param string $expected
*/
public
function
testGetServer
(
array
$options
,
$defaultProto
,
string
$expected
):
void
{
$urlUtils
=
new
UrlUtils
(
$options
);
$this
->
assertSame
(
$expected
,
$urlUtils
->
getServer
(
$defaultProto
)
);
}
/**
* @covers ::assemble
* @dataProvider UrlUtilsProviders::provideAssemble
* @param array $bits
* @param string $expected
*/
public
function
testAssemble
(
array
$bits
,
string
$expected
):
void
{
$this
->
assertSame
(
$expected
,
UrlUtils
::
assemble
(
$bits
)
);
}
/**
* @covers ::removeDotSegments
* @dataProvider UrlUtilsProviders::provideRemoveDotSegments
* @param string $input
* @param string $expected
*/
public
function
testRemoveDotSegments
(
string
$input
,
string
$expected
):
void
{
$this
->
assertSame
(
$expected
,
UrlUtils
::
removeDotSegments
(
$input
)
);
}
/**
* @covers ::validProtocols
* @covers ::validAbsoluteProtocols
* @covers ::validProtocolsInternal
* @dataProvider UrlUtilsProviders::provideValidProtocols
* @param string $method 'validProtocols' or 'validAbsoluteProtocols'
* @param array|string $validProtocols Value of option passed to UrlUtils
* @param string $expected
*/
public
function
testValidProtocols
(
string
$method
,
$validProtocols
,
string
$expected
):
void
{
if
(
!
is_array
(
$validProtocols
)
)
{
$this
->
expectDeprecationAndContinue
(
'/Use of
\$
wgUrlProtocols that is not an array was deprecated in MediaWiki 1
\.
39/'
);
}
$urlUtils
=
new
UrlUtils
(
[
UrlUtils
::
VALID_PROTOCOLS
=>
$validProtocols
]
);
$this
->
assertSame
(
$expected
,
$urlUtils
->
$method
()
);
}
/**
* @covers ::parse
* @dataProvider UrlUtilsProviders::provideParse
* @param string $url
* @param ?array $expected
*/
public
function
testParse
(
string
$url
,
?
array
$expected
):
void
{
$urlUtils
=
new
UrlUtils
(
[
UrlUtils
::
VALID_PROTOCOLS
=>
[
'//'
,
'http://'
,
'https://'
,
'file://'
,
'mailto:'
,
'news:'
,
]
]
);
$actual
=
$urlUtils
->
parse
(
$url
);
if
(
$expected
)
{
ksort
(
$expected
);
}
if
(
$actual
)
{
ksort
(
$actual
);
}
$this
->
assertSame
(
$expected
,
$actual
);
}
/**
* @covers ::expandIRI
*/
public
function
testExpandIRI
():
void
{
$this
->
assertSame
(
"https://te.wikibooks.org/wiki/ఉబుంటు_వాడుకరి_మార్గదర్శని"
,
(
new
UrlUtils
)->
expandIRI
(
"https://te.wikibooks.org/wiki/"
.
"%E0%B0%89%E0%B0%AC%E0%B1%81%E0%B0%82%E0%B0%9F%E0%B1%81_"
.
"%E0%B0%B5%E0%B0%BE%E0%B0%A1%E0%B1%81%E0%B0%95%E0%B0%B0%E0%B0%BF_"
.
"%E0%B0%AE%E0%B0%BE%E0%B0%B0%E0%B1%8D%E0%B0%97%E0%B0%A6%E0%B0%B0"
.
"%E0%B1%8D%E0%B0%B6%E0%B0%A8%E0%B0%BF"
)
);
}
/**
* @covers ::matchesDomainList
* @dataProvider UrlUtilsProviders::provideMatchesDomainList
* @param string $url
* @param array $domains
* @param bool $expected
*/
public
function
testMatchesDomainList
(
string
$url
,
array
$domains
,
bool
$expected
):
void
{
$this
->
assertSame
(
$expected
,
(
new
UrlUtils
)->
matchesDomainList
(
$url
,
$domains
)
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 20:41 (4 d, 5 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
3d/bb/ba46a754d15f29c37da848478677
Default Alt Text
UrlUtilsTest.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment