WhitelistProtocolsTest.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. require_once 'application/Url.php';
  3. use Shaarli\Config\ConfigManager;
  4. /**
  5. * Class WhitelistProtocolsTest
  6. *
  7. * Test whitelist_protocols() function of Url.
  8. */
  9. class WhitelistProtocolsTest extends PHPUnit_Framework_TestCase
  10. {
  11. /**
  12. * Test whitelist_protocols() on a note (relative URL).
  13. */
  14. public function testWhitelistProtocolsRelative()
  15. {
  16. $whitelist = ['ftp', 'magnet'];
  17. $url = '?12443564';
  18. $this->assertEquals($url, whitelist_protocols($url, $whitelist));
  19. $url = '/path.jpg';
  20. $this->assertEquals($url, whitelist_protocols($url, $whitelist));
  21. }
  22. /**
  23. * Test whitelist_protocols() on a note (relative URL).
  24. */
  25. public function testWhitelistProtocolMissing()
  26. {
  27. $whitelist = ['ftp', 'magnet'];
  28. $url = 'test.tld/path/?query=value#hash';
  29. $this->assertEquals('http://'. $url, whitelist_protocols($url, $whitelist));
  30. }
  31. /**
  32. * Test whitelist_protocols() with allowed protocols.
  33. */
  34. public function testWhitelistAllowedProtocol()
  35. {
  36. $whitelist = ['ftp', 'magnet'];
  37. $url = 'http://test.tld/path/?query=value#hash';
  38. $this->assertEquals($url, whitelist_protocols($url, $whitelist));
  39. $url = 'https://test.tld/path/?query=value#hash';
  40. $this->assertEquals($url, whitelist_protocols($url, $whitelist));
  41. $url = 'ftp://test.tld/path/?query=value#hash';
  42. $this->assertEquals($url, whitelist_protocols($url, $whitelist));
  43. $url = 'magnet:test.tld/path/?query=value#hash';
  44. $this->assertEquals($url, whitelist_protocols($url, $whitelist));
  45. }
  46. /**
  47. * Test whitelist_protocols() with allowed protocols.
  48. */
  49. public function testWhitelistDisallowedProtocol()
  50. {
  51. $whitelist = ['ftp', 'magnet'];
  52. $url = 'javascript:alert("xss");';
  53. $this->assertEquals('http://alert("xss");', whitelist_protocols($url, $whitelist));
  54. $url = 'other://test.tld/path/?query=value#hash';
  55. $this->assertEquals('http://test.tld/path/?query=value#hash', whitelist_protocols($url, $whitelist));
  56. }
  57. }