3 require_once 'application/Url.php';
5 use Shaarli\Config\ConfigManager
;
8 * Class WhitelistProtocolsTest
10 * Test whitelist_protocols() function of Url.
12 class WhitelistProtocolsTest
extends PHPUnit_Framework_TestCase
15 * Test whitelist_protocols() on a note (relative URL).
17 public function testWhitelistProtocolsRelative()
19 $whitelist = ['ftp', 'magnet'];
21 $this->assertEquals($url, whitelist_protocols($url, $whitelist));
23 $this->assertEquals($url, whitelist_protocols($url, $whitelist));
27 * Test whitelist_protocols() on a note (relative URL).
29 public function testWhitelistProtocolMissing()
31 $whitelist = ['ftp', 'magnet'];
32 $url = 'test.tld/path/?query=value#hash';
33 $this->assertEquals('http://'. $url, whitelist_protocols($url, $whitelist));
37 * Test whitelist_protocols() with allowed protocols.
39 public function testWhitelistAllowedProtocol()
41 $whitelist = ['ftp', 'magnet'];
42 $url = 'http://test.tld/path/?query=value#hash';
43 $this->assertEquals($url, whitelist_protocols($url, $whitelist));
44 $url = 'https://test.tld/path/?query=value#hash';
45 $this->assertEquals($url, whitelist_protocols($url, $whitelist));
46 $url = 'ftp://test.tld/path/?query=value#hash';
47 $this->assertEquals($url, whitelist_protocols($url, $whitelist));
48 $url = 'magnet:test.tld/path/?query=value#hash';
49 $this->assertEquals($url, whitelist_protocols($url, $whitelist));
53 * Test whitelist_protocols() with allowed protocols.
55 public function testWhitelistDisallowedProtocol()
57 $whitelist = ['ftp', 'magnet'];
58 $url = 'javascript:alert("xss");';
59 $this->assertEquals('http://alert("xss");', whitelist_protocols($url, $whitelist));
60 $url = 'other://test.tld/path/?query=value#hash';
61 $this->assertEquals('http://test.tld/path/?query=value#hash', whitelist_protocols($url, $whitelist));