parent::setUp();
- $this->setMwGlobals( 'wgUrlProtocols', array(
+ $this->setMwGlobals( 'wgUrlProtocols', [
'http://',
'https://',
'ftp://',
'git://',
'mms://',
'//',
- ) );
+ ] );
}
*/
public static function provideValidPatterns() {
- return array(
+ return [
// Protocol, Search pattern, URL which matches the pattern
- array( 'http://', '*.test.com', 'http://www.test.com' ),
- array( 'http://', 'test.com:8080/dir/file', 'http://name:pass@test.com:8080/dir/file' ),
- array( 'https://', '*.com', 'https://s.s.test..com:88/dir/file?a=1&b=2' ),
- array( 'https://', '*.com', 'https://name:pass@secure.com/index.html' ),
- array( 'http://', 'name:pass@test.com', 'http://test.com' ),
- array( 'http://', 'test.com', 'http://name:pass@test.com' ),
- array( 'http://', '*.test.com', 'http://a.b.c.test.com/dir/dir/file?a=6'),
- array( null, 'http://*.test.com', 'http://www.test.com' ),
- array( 'mailto:', 'name@mail.test123.com', 'mailto:name@mail.test123.com' ),
- array( '',
+ [ 'http://', '*.test.com', 'http://www.test.com' ],
+ [ 'http://', 'test.com:8080/dir/file', 'http://name:pass@test.com:8080/dir/file' ],
+ [ 'https://', '*.com', 'https://s.s.test..com:88/dir/file?a=1&b=2' ],
+ [ 'https://', '*.com', 'https://name:pass@secure.com/index.html' ],
+ [ 'http://', 'name:pass@test.com', 'http://test.com' ],
+ [ 'http://', 'test.com', 'http://name:pass@test.com' ],
+ [ 'http://', '*.test.com', 'http://a.b.c.test.com/dir/dir/file?a=6' ],
+ [ null, 'http://*.test.com', 'http://www.test.com' ],
+ [ 'mailto:', 'name@mail.test123.com', 'mailto:name@mail.test123.com' ],
+ [ '',
'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg'
- ),
- array( '', 'http://name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
- 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
- array( '', 'http://name:wrongpass@*.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]',
- 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
- array( 'http://', 'name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
- 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
- array( '', 'http://name:pass@www.test.com:12345',
- 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
- array( 'ftp://', 'user:pass@ftp.test.com:1233/home/user/file;type=efw',
- 'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
- array( null, 'ftp://otheruser:otherpass@ftp.test.com:1233/home/user/file;type=',
- 'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
- array( null, 'ftp://@ftp.test.com:1233/home/user/file;type=',
- 'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
- array( null, 'ftp://ftp.test.com/',
- 'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ),
- array( null, 'ftp://ftp.test.com/',
- 'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ),
- array( null, 'ftp://*.test.com:222/',
- 'ftp://user:pass@ftp.test.com:222/home' ),
- array( 'irc://', '*.myserver:6667/', 'irc://test.myserver:6667/' ),
- array( 'irc://', 'name:pass@*.myserver/', 'irc://test.myserver:6667/' ),
- array( 'irc://', 'name:pass@*.myserver/', 'irc://other:@test.myserver:6667/' ),
- array( '', 'irc://test/name,string,abc?msg=t', 'irc://test/name,string,abc?msg=test' ),
- array( '', 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z',
- 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ),
- array( '', 'https://gerrit.wikimedia.org',
- 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ),
- array( 'mailto:', '*.test.com', 'mailto:name@pop3.test.com' ),
- array( 'mailto:', 'test.com', 'mailto:name@test.com' ),
- array( 'news:', 'test.1234afc@news.test.com', 'news:test.1234afc@news.test.com' ),
- array( 'news:', '*.test.com', 'news:test.1234afc@news.test.com' ),
- array( '', 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com',
- 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ),
- array( '', 'news:*.aol.com',
- 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ),
- array( '', 'git://github.com/prwef/abc-def.git', 'git://github.com/prwef/abc-def.git' ),
- array( 'git://', 'github.com/', 'git://github.com/prwef/abc-def.git' ),
- array( 'git://', '*.github.com/', 'git://a.b.c.d.e.f.github.com/prwef/abc-def.git' ),
- array( '', 'gopher://*.test.com/', 'gopher://gopher.test.com/0/v2/vstat'),
- array( 'telnet://', '*.test.com', 'telnet://shell.test.com/~home/'),
-
- //
- // The following only work in PHP >= 5.3.7, due to a bug in parse_url which eats
- // the path from the url (https://bugs.php.net/bug.php?id=54180)
- //
- // array( '', 'http://test.com', 'http://test.com/index?arg=1' ),
- // array( 'http://', '*.test.com', 'http://www.test.com/index?arg=1' ),
- // array( '' ,
- // 'http://xx23124:__ffdfdef__@www.test.com:12345/dir' ,
- // 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg'
- // ),
- //
-
- //
+ ],
+ [ '', 'http://name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+ 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ],
+ [ '', 'http://name:wrongpass@*.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]',
+ 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ],
+ [ 'http://', 'name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+ 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ],
+ [ '', 'http://name:pass@www.test.com:12345',
+ 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ],
+ [ 'ftp://', 'user:pass@ftp.test.com:1233/home/user/file;type=efw',
+ 'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ],
+ [ null, 'ftp://otheruser:otherpass@ftp.test.com:1233/home/user/file;type=',
+ 'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ],
+ [ null, 'ftp://@ftp.test.com:1233/home/user/file;type=',
+ 'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ],
+ [ null, 'ftp://ftp.test.com/',
+ 'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ],
+ [ null, 'ftp://ftp.test.com/',
+ 'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ],
+ [ null, 'ftp://*.test.com:222/',
+ 'ftp://user:pass@ftp.test.com:222/home' ],
+ [ 'irc://', '*.myserver:6667/', 'irc://test.myserver:6667/' ],
+ [ 'irc://', 'name:pass@*.myserver/', 'irc://test.myserver:6667/' ],
+ [ 'irc://', 'name:pass@*.myserver/', 'irc://other:@test.myserver:6667/' ],
+ [ '', 'irc://test/name,string,abc?msg=t', 'irc://test/name,string,abc?msg=test' ],
+ [ '', 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z',
+ 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ],
+ [ '', 'https://gerrit.wikimedia.org',
+ 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ],
+ [ 'mailto:', '*.test.com', 'mailto:name@pop3.test.com' ],
+ [ 'mailto:', 'test.com', 'mailto:name@test.com' ],
+ [ 'news:', 'test.1234afc@news.test.com', 'news:test.1234afc@news.test.com' ],
+ [ 'news:', '*.test.com', 'news:test.1234afc@news.test.com' ],
+ [ '', 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com',
+ 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ],
+ [ '', 'news:*.aol.com',
+ 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ],
+ [ '', 'git://github.com/prwef/abc-def.git', 'git://github.com/prwef/abc-def.git' ],
+ [ 'git://', 'github.com/', 'git://github.com/prwef/abc-def.git' ],
+ [ 'git://', '*.github.com/', 'git://a.b.c.d.e.f.github.com/prwef/abc-def.git' ],
+ [ '', 'gopher://*.test.com/', 'gopher://gopher.test.com/0/v2/vstat' ],
+ [ 'telnet://', '*.test.com', 'telnet://shell.test.com/~home/' ],
+ [ '', 'http://test.com', 'http://test.com/index?arg=1' ],
+ [ 'http://', '*.test.com', 'http://www.test.com/index?arg=1' ],
+ [ '' ,
+ 'http://xx23124:__ffdfdef__@www.test.com:12345/dir' ,
+ 'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg'
+ ],
+
// Tests for false positives
- //
- array( 'http://', 'test.com', 'http://www.test.com', false ),
- array( 'http://', 'www1.test.com', 'http://www.test.com', false ),
- array( 'http://', '*.test.com', 'http://www.test.t.com', false ),
- array( '', 'http://test.com:8080', 'http://www.test.com:8080', false ),
- array( '', 'https://test.com', 'http://test.com', false ),
- array( '', 'http://test.com', 'https://test.com', false ),
- array( 'http://', 'http://test.com', 'http://test.com', false ),
- array( null, 'http://www.test.com', 'http://www.test.com:80', false ),
- array( null, 'http://www.test.com:80', 'http://www.test.com', false ),
- array( null, 'http://*.test.com:80', 'http://www.test.com', false ),
- array( '', 'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z',
- 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z', false ),
- array( '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
- 'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z', false ),
- array( 'mailto:', '@test.com', '@abc.test.com', false ),
- array( 'mailto:', 'mail@test.com', 'mail2@test.com', false ),
- array( '', 'mailto:mail@test.com', 'mail2@test.com', false ),
- array( '', 'mailto:@test.com', '@abc.test.com', false ),
- array( 'ftp://', '*.co', 'ftp://www.co.uk', false ),
- array( 'ftp://', '*.co', 'ftp://www.co.m', false ),
- array( 'ftp://', '*.co/dir/', 'ftp://www.co/dir2/', false ),
- array( 'ftp://', 'www.co/dir/', 'ftp://www.co/dir2/', false ),
- array( 'ftp://', 'test.com/dir/', 'ftp://test.com/', false ),
- array( '', 'http://test.com:8080/dir/', 'http://test.com:808/dir/', false ),
- array( '', 'http://test.com/dir/index.html', 'http://test.com/dir/index.php', false ),
-
- //
+ [ 'http://', 'test.com', 'http://www.test.com', false ],
+ [ 'http://', 'www1.test.com', 'http://www.test.com', false ],
+ [ 'http://', '*.test.com', 'http://www.test.t.com', false ],
+ [ '', 'http://test.com:8080', 'http://www.test.com:8080', false ],
+ [ '', 'https://test.com', 'http://test.com', false ],
+ [ '', 'http://test.com', 'https://test.com', false ],
+ [ 'http://', 'http://test.com', 'http://test.com', false ],
+ [ null, 'http://www.test.com', 'http://www.test.com:80', false ],
+ [ null, 'http://www.test.com:80', 'http://www.test.com', false ],
+ [ null, 'http://*.test.com:80', 'http://www.test.com', false ],
+ [ '', 'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z',
+ 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z', false ],
+ [ '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
+ 'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z', false ],
+ [ 'mailto:', '@test.com', '@abc.test.com', false ],
+ [ 'mailto:', 'mail@test.com', 'mail2@test.com', false ],
+ [ '', 'mailto:mail@test.com', 'mail2@test.com', false ],
+ [ '', 'mailto:@test.com', '@abc.test.com', false ],
+ [ 'ftp://', '*.co', 'ftp://www.co.uk', false ],
+ [ 'ftp://', '*.co', 'ftp://www.co.m', false ],
+ [ 'ftp://', '*.co/dir/', 'ftp://www.co/dir2/', false ],
+ [ 'ftp://', 'www.co/dir/', 'ftp://www.co/dir2/', false ],
+ [ 'ftp://', 'test.com/dir/', 'ftp://test.com/', false ],
+ [ '', 'http://test.com:8080/dir/', 'http://test.com:808/dir/', false ],
+ [ '', 'http://test.com/dir/index.html', 'http://test.com/dir/index.php', false ],
+
// These are false positives too and ideally shouldn't match, but that
// would require using regexes and RLIKE instead of LIKE
- //
- // array( null, 'http://*.test.com', 'http://www.test.com:80', false ),
- // array( '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
- // 'https://gerrit.wikimedia.org/XXX/r/#/q/status:open,n,z', false ),
- );
+ // [ null, 'http://*.test.com', 'http://www.test.com:80', false ],
+ // [ '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
+ // 'https://gerrit.wikimedia.org/XXX/r/#/q/status:open,n,z', false ],
+ ];
}
*/
public static function provideInvalidPatterns() {
- return array(
- array( '' ),
- array( '*' ),
- array( 'http://*' ),
- array( 'http://*/' ),
- array( 'http://*/dir/file' ),
- array( 'test.*.com' ),
- array( 'http://test.*.com' ),
- array( 'test.*.com' ),
- array( 'http://*.test.*' ),
- array( 'http://*test.com' ),
- array( 'https://*' ),
- array( '*://test.com'),
- array( 'mailto:name:pass@t*est.com' ),
- array( 'http://*:888/'),
- array( '*http://'),
- array( 'test.com/*/index' ),
- array( 'test.com/dir/index?arg=*' ),
- );
+ return [
+ [ '' ],
+ [ '*' ],
+ [ 'http://*' ],
+ [ 'http://*/' ],
+ [ 'http://*/dir/file' ],
+ [ 'test.*.com' ],
+ [ 'http://test.*.com' ],
+ [ 'test.*.com' ],
+ [ 'http://*.test.*' ],
+ [ 'http://*test.com' ],
+ [ 'https://*' ],
+ [ '*://test.com' ],
+ [ 'mailto:name:pass@t*est.com' ],
+ [ 'http://*:888/' ],
+ [ '*http://' ],
+ [ 'test.com/*/index' ],
+ [ 'test.com/dir/index?arg=*' ],
+ ];
}