%%% File : ibrowse_lib.erl %%% Authors : Chandrashekhar Mullaparthi , %%% Filipe David Manana %%% Description : Tests for the module ibrowse_lib.erl %%% Created : 12 April 2011 by Filipe David Manana -module(ibrowse_lib_tests). -include_lib("eunit/include/eunit.hrl"). -include_lib("ibrowse/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_ipv6_address, ":1080:0:0:0:8:800:200C:417A:"}}, ibrowse_lib:parse_url("http://[:1080:0:0:0:8:800:200C:417A:]:6000/foo?q=bar")), ?assertMatch({error, {invalid_ipv6_address, "12::z"}}, ibrowse_lib:parse_url("http://[12::z]")), ?assertMatch({error, {invalid_username_or_host, _}}, ibrowse_lib:parse_url("http://foo[1080:0:0:0:8:800:200C:417A]:6000")), ?assertMatch({error, missing_password}, ibrowse_lib:parse_url("http://foo:[1080:0:0:0:8:800:200C:417A]:6000")), ok.