| %%% 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. |