blob: cc3bf719ad61a400d6f7a47093dba4e8368334c7 [file] [log] [blame]
%%% File : ibrowse_lib.erl
%%% Authors : Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk>,
%%% Filipe David Manana <fdmanana@apache.org>
%%% Description : Tests for the module ibrowse_lib.erl
%%% Created : 12 April 2011 by Filipe David Manana <fdmanana@apache.org>
-module(ibrowse_lib_tests).
-include_lib("eunit/include/eunit.hrl").
-include("../include/ibrowse.hrl").
parse_urls_test_() ->
{timeout, 60, [fun parse_urls/0]}.
parse_urls() ->
?assertMatch(#url{
abspath = "http://localhost",
host = "localhost",
host_type = hostname,
port = 80,
path = "/",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://localhost")),
?assertMatch(#url{
abspath = "http://localhost:80/",
host = "localhost",
host_type = hostname,
port = 80,
path = "/",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://localhost:80/")),
?assertMatch(#url{
abspath = "http://127.0.0.1:8000/",
host = "127.0.0.1",
host_type = ipv4_address,
port = 8000,
path = "/",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://127.0.0.1:8000/")),
?assertMatch(#url{
abspath = "https://foo:bar@127.0.0.1:8000/test",
host = "127.0.0.1",
host_type = ipv4_address,
port = 8000,
path = "/test",
username = "foo",
password = "bar",
protocol = https
},
ibrowse_lib:parse_url("https://foo:bar@127.0.0.1:8000/test")),
?assertMatch(#url{
abspath = "https://[::1]",
host = "::1",
host_type = ipv6_address,
port = 443,
path = "/",
username = undefined,
password = undefined,
protocol = https
},
ibrowse_lib:parse_url("https://[::1]")),
?assertMatch(#url{
abspath = "http://[::1]:8080",
host = "::1",
host_type = ipv6_address,
port = 8080,
path = "/",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://[::1]:8080")),
?assertMatch(#url{
abspath = "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:8081/index.html",
host = "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210",
host_type = ipv6_address,
port = 8081,
path = "/index.html",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:8081/index.html")),
?assertMatch(#url{
abspath = "http://[1080:0:0:0:8:800:200C:417A]/foo/bar",
host = "1080:0:0:0:8:800:200C:417A",
host_type = ipv6_address,
port = 80,
path = "/foo/bar",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://[1080:0:0:0:8:800:200C:417A]/foo/bar")),
?assertMatch(#url{
abspath = "http://[1080:0:0:0:8:800:200C:417A]:8080/foo/bar",
host = "1080:0:0:0:8:800:200C:417A",
host_type = ipv6_address,
port = 8080,
path = "/foo/bar",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://[1080:0:0:0:8:800:200C:417A]:8080/foo/bar")),
?assertMatch(#url{
abspath = "http://[::192.9.5.5]:6000/foo?q=bar",
host = "::192.9.5.5",
host_type = ipv6_address,
port = 6000,
path = "/foo?q=bar",
username = undefined,
password = undefined,
protocol = http
},
ibrowse_lib:parse_url("http://[::192.9.5.5]:6000/foo?q=bar")),
?assertMatch({error, invalid_uri},
ibrowse_lib:parse_url("http://[:1080:0:0:0:8:800:200C:417A:]:6000/foo?q=bar")),
?assertMatch({error, invalid_uri},
ibrowse_lib:parse_url("http://[12::z]")),
?assertMatch({error, invalid_uri},
ibrowse_lib:parse_url("http://foo[1080:0:0:0:8:800:200C:417A]:6000")),
?assertMatch({error, invalid_uri},
ibrowse_lib:parse_url("http://foo:[1080:0:0:0:8:800:200C:417A]:6000")),
ok.