mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles
synced 2024-11-28 18:20:37 +00:00
a88b7c164f
The following sniffs now pass and were enabled: * MediaWiki.Files.ClassMatchesFilename.NotMatch Change-Id: I4b4f7577107b869789479671e74b1fa7329979aa
69 lines
2.2 KiB
PHP
69 lines
2.2 KiB
PHP
<?php
|
|
|
|
use Wikimedia\CSS\Objects\ComponentValueList;
|
|
use Wikimedia\CSS\Objects\Token;
|
|
|
|
/**
|
|
* @group TemplateStyles
|
|
* @covers TemplateStylesMatcherFactory
|
|
*/
|
|
class TemplateStylesMatcherFactoryTest extends PHPUnit\Framework\TestCase {
|
|
|
|
/**
|
|
* @dataProvider provideUrls
|
|
* @param string $type
|
|
* @param string $url
|
|
* @param bool $expect
|
|
*/
|
|
public function testUrls( $type, $url, $expect ) {
|
|
$factory = new TemplateStylesMatcherFactory( [
|
|
'test1' => [
|
|
'<^http://example\.com/test1/>',
|
|
],
|
|
'test2' => [
|
|
'<^http://example\.com/test2/A/>',
|
|
'<^http://example\.com/test2/B/>',
|
|
],
|
|
'anything' => [
|
|
'<.>',
|
|
],
|
|
] );
|
|
|
|
$list = new ComponentValueList( [
|
|
new Token( Token::T_STRING, $url )
|
|
] );
|
|
$this->assertSame( $expect, (bool)$factory->urlstring( $type )->match( $list ) );
|
|
|
|
$list = new ComponentValueList( [
|
|
new Token( Token::T_URL, $url )
|
|
] );
|
|
$this->assertSame( $expect, (bool)$factory->url( $type )->match( $list ) );
|
|
}
|
|
|
|
public static function provideUrls() {
|
|
return [
|
|
[ 'test1', 'http://example.com/test1/foobar', true ],
|
|
[ 'test2', 'http://example.com/test1/foobar', false ],
|
|
[ 'test2', 'http://example.com/test2/A/foobar', true ],
|
|
[ 'test2', 'http://example.com/test2/B/foobar', true ],
|
|
[ 'test2', 'http://example.com/test2/C/foobar', false ],
|
|
[ 'test3', 'http://example.com/test3/foobar', false ],
|
|
[ 'test1', 'http://example.com/test1/../../etc/password', false ],
|
|
[ 'test1', 'http://example.com/test1/..%2F..%2Fetc%2Fpassword', false ],
|
|
[ 'test1', 'http://example.com/test1/etc\\password', false ],
|
|
[ 'test1', 'http://example.com/test%31/foobar', true ],
|
|
[ 'test1', 'http://example.com/test1/x=/%2E/foobar', false ],
|
|
[ 'test1', 'http://example.com/test1/?x=/%2E/foobar', true ],
|
|
[ 'test1', 'http://example.com/test1/%3Fx=/%2E/foobar', false ],
|
|
[ 'test1', 'http://example.com/test1/#x=/%2E/foobar', true ],
|
|
[ 'test1', 'http://example.com/test1/%23x=/%2E/foobar', false ],
|
|
[ 'anything', 'totally bogus', true ],
|
|
[ 'anything', '/dotdot/../still/fails/though', false ],
|
|
[ 'anything', '../still/fails/though', false ],
|
|
[ 'anything', 'still/fails/..', false ],
|
|
[ 'anything', '..', false ],
|
|
];
|
|
}
|
|
|
|
}
|