diff options
Diffstat (limited to 'tests/phpunit/tests/formatting/EscUrl.php')
-rw-r--r-- | tests/phpunit/tests/formatting/EscUrl.php | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/phpunit/tests/formatting/EscUrl.php b/tests/phpunit/tests/formatting/EscUrl.php new file mode 100644 index 0000000000..478d385fc7 --- /dev/null +++ b/tests/phpunit/tests/formatting/EscUrl.php @@ -0,0 +1,83 @@ +<?php + +/** + * @group formatting + */ +class Tests_Formatting_EscUrl extends WP_UnitTestCase { + function test_spaces() { + $this->assertEquals('http://example.com/MrWordPress', esc_url('http://example.com/Mr WordPress')); + $this->assertEquals('http://example.com/Mr%20WordPress', esc_url('http://example.com/Mr%20WordPress')); + } + + function test_bad_characters() { + $this->assertEquals('http://example.com/watchthelinefeedgo', esc_url('http://example.com/watchthelinefeed%0Ago')); + $this->assertEquals('http://example.com/watchthelinefeedgo', esc_url('http://example.com/watchthelinefeed%0ago')); + $this->assertEquals('http://example.com/watchthecarriagereturngo', esc_url('http://example.com/watchthecarriagereturn%0Dgo')); + $this->assertEquals('http://example.com/watchthecarriagereturngo', esc_url('http://example.com/watchthecarriagereturn%0dgo')); + //Nesting Checks + $this->assertEquals('http://example.com/watchthecarriagereturngo', esc_url('http://example.com/watchthecarriagereturn%0%0ddgo')); + $this->assertEquals('http://example.com/watchthecarriagereturngo', esc_url('http://example.com/watchthecarriagereturn%0%0DDgo')); + $this->assertEquals('http://example.com/', esc_url('http://example.com/%0%0%0DAD')); + $this->assertEquals('http://example.com/', esc_url('http://example.com/%0%0%0ADA')); + $this->assertEquals('http://example.com/', esc_url('http://example.com/%0%0%0DAd')); + $this->assertEquals('http://example.com/', esc_url('http://example.com/%0%0%0ADa')); + } + + function test_relative() { + $this->assertEquals('/example.php', esc_url('/example.php')); + $this->assertEquals('example.php', esc_url('example.php')); + $this->assertEquals('#fragment', esc_url('#fragment')); + $this->assertEquals('?foo=bar', esc_url('?foo=bar')); + } + + function test_protocol() { + $this->assertEquals('http://example.com', esc_url('http://example.com')); + $this->assertEquals('', esc_url('nasty://example.com/')); + } + + /** + * @ticket 23187 + */ + function test_protocol_case() { + $this->assertEquals('http://example.com', esc_url('HTTP://example.com')); + $this->assertEquals('http://example.com', esc_url('Http://example.com')); + } + + function test_display_extras() { + $this->assertEquals('http://example.com/'quoted'', esc_url('http://example.com/\'quoted\'')); + $this->assertEquals('http://example.com/\'quoted\'', esc_url('http://example.com/\'quoted\'',null,'notdisplay')); + } + + function test_non_ascii() { + $this->assertEquals( 'http://example.org/баба', esc_url( 'http://example.org/баба' ) ); + $this->assertEquals( 'http://баба.org/баба', esc_url( 'http://баба.org/баба' ) ); + $this->assertEquals( 'http://müller.com/', esc_url( 'http://müller.com/' ) ); + } + + function test_feed() { + $this->assertEquals( '', esc_url( 'feed:javascript:alert(1)' ) ); + $this->assertEquals( '', esc_url( 'feed:javascript:feed:alert(1)' ) ); + $this->assertEquals( '', esc_url( 'feed:feed:javascript:alert(1)' ) ); + $this->assertEquals( 'feed:feed:alert(1)', esc_url( 'feed:feed:alert(1)' ) ); + $this->assertEquals( 'feed:http://wordpress.org/feed/', esc_url( 'feed:http://wordpress.org/feed/' ) ); + } + + /** + * @ticket 16859 + */ + function test_square_brackets() { + $this->assertEquals( 'http://example.com/?foo%5Bbar%5D=baz', esc_url( 'http://example.com/?foo[bar]=baz' ) ); + $this->assertEquals( 'http://example.com/?baz=bar&foo%5Bbar%5D=baz', esc_url( 'http://example.com/?baz=bar&foo[bar]=baz' ) ); + //IPv6 addresses in urls - RFC2732 + $this->assertEquals( 'http://[::FFFF::127.0.0.1]', esc_url( 'http://[::FFFF::127.0.0.1]' ) ); + $this->assertEquals( 'http://[::127.0.0.1]', esc_url( 'http://[::127.0.0.1]' ) ); + $this->assertEquals( 'http://[::DEAD:BEEF:DEAD:BEEF:DEAD:BEEF:DEAD:BEEF]', esc_url( 'http://[::DEAD:BEEF:DEAD:BEEF:DEAD:BEEF:DEAD:BEEF]' ) ); + } + + /** + * @ticket 21974 + */ + function test_protocol_relative_with_colon() { + $this->assertEquals( '//example.com/foo?foo=abc:def', esc_url( '//example.com/foo?foo=abc:def' ) ); + } +} |