# t/https-url.t # # Test LJ::CleanHTML::https_url. # # Authors: # Afuna # Jen Griffin # # Copyright (c) 2015-2017 by Dreamwidth Studios, LLC. # # This program is free software; you may redistribute it and/or modify it under # the same terms as Perl itself. For a copy of the license, please reference # 'perldoc perlartistic' or 'perldoc perlgpl'. # use strict; use warnings; use Test::More; BEGIN { $LJ::_T_CONFIG = 1; require "$ENV{LJHOME}/cgi-bin/ljlib.pl"; } use LJ::CleanHTML; # make sure we have a working proxy subroutine for testing local $LJ::PROXY_URL = "https://proxy.myhost.net"; unless ( $LJ::PROXY_SALT_FILE && -e $LJ::PROXY_SALT_FILE ) { no warnings 'redefine'; *DW::Proxy::get_url_signature = sub { return 'testfoo' }; } my @urls = ( # internal links [ "https://example.$LJ::DOMAIN/file/foo", "https://example.$LJ::DOMAIN/file/foo" ], [ "http://example.$LJ::DOMAIN/file/foo", "https://example.$LJ::DOMAIN/file/foo" ], # external links [ "https://example.com/a.png", "https://example.com/a.png" ], [ "http://example.com/a.png", DW::Proxy::get_proxy_url("http://example.com/a.png") ], # protocol relative links [ "//example.com/a.png", "//example.com/a.png" ], # links that can be upgraded via KNOWN_HTTPS_SITES [ "http://xkcd.com/file/foo", "https://xkcd.com/file/foo" ], [ "http://username.blogspot.com/a.png", "https://username.blogspot.com/a.png" ], # link that includes a space - will be transformed into %20 by the browser [ "http://example.com/a%20b.png", DW::Proxy::get_proxy_url("http://example.com/a b.png") ], ); local %LJ::KNOWN_HTTPS_SITES = qw( xkcd.com 1 blogspot.com 1 ); plan tests => scalar @urls; for (@urls) { my $url = $_->[0]; my $https_url = LJ::CleanHTML::https_url($url); is( $https_url, $_->[1], "https url for $url" ); }