671 lines
28 KiB
HTML
671 lines
28 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createSyncSuite("URLUtilities");
|
|
|
|
suite.addTestCase({
|
|
name: "parseURL",
|
|
test() {
|
|
function testInvalid(url) {
|
|
InspectorTest.log("");
|
|
InspectorTest.log("Test Invalid: " + url);
|
|
|
|
let urlComponents = parseURL(url);
|
|
InspectorTest.expectNull(urlComponents.scheme, "Should not be a complete URL");
|
|
if (urlComponents.scheme)
|
|
InspectorTest.json(urlComponents);
|
|
|
|
try {
|
|
new URL(url);
|
|
InspectorTest.fail("URL constructor thinks this is valid");
|
|
} catch (e) {
|
|
InspectorTest.pass("URL constructor thinks this is invalid");
|
|
}
|
|
}
|
|
|
|
function testValid(url, expected) {
|
|
InspectorTest.log("");
|
|
InspectorTest.log("Test Valid: " + url);
|
|
|
|
let {scheme: expectedScheme, userinfo: expectedUserInfo, host: expectedHost, port: expectedPort, origin: expectedOrigin, path: expectedPath, queryString: expectedQueryString, fragment: expectedFragment, lastPathComponent: expectedLastPathComponent} = expected;
|
|
let {scheme: actualScheme, userinfo: actualUserInfo, host: actualHost, port: actualPort, origin: actualOrigin, path: actualPath, queryString: actualQueryString, fragment: actualFragment, lastPathComponent: actualLastPathComponent} = parseURL(url);
|
|
|
|
InspectorTest.expectEqual(actualScheme, expectedScheme, `scheme should be: '${expectedScheme}'`);
|
|
InspectorTest.expectEqual(actualUserInfo, expectedUserInfo, `userinfo should be: '${expectedUserInfo}'`);
|
|
InspectorTest.expectEqual(actualHost, expectedHost, `host should be: '${expectedHost}'`);
|
|
InspectorTest.expectEqual(actualPort, expectedPort, `port should be: '${expectedPort}'`);
|
|
InspectorTest.expectEqual(actualOrigin, expectedOrigin, `origin should be: '${expectedOrigin}'`);
|
|
InspectorTest.expectEqual(actualPath, expectedPath, `path should be: '${expectedPath}'`);
|
|
InspectorTest.expectEqual(actualQueryString, expectedQueryString, `queryString should be: '${expectedQueryString}'`);
|
|
InspectorTest.expectEqual(actualFragment, expectedFragment, `fragment should be: '${expectedFragment}'`);
|
|
InspectorTest.expectEqual(actualLastPathComponent, expectedLastPathComponent, `lastPathComponent should be: '${expectedLastPathComponent}'`);
|
|
}
|
|
|
|
testInvalid("a");
|
|
testInvalid("__WebInspectorInternal__");
|
|
testInvalid("__WebTest__");
|
|
testInvalid("/http://example.com");
|
|
|
|
testValid("http://example.com", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://example.com/", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://example.com:80/", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://example.com:42/", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: 42,
|
|
origin: "http://example.com:42",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://example.com/path/to/page.html", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/path/to/page.html",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: "page.html",
|
|
});
|
|
|
|
testValid("http://example.com/path/to/page.html?", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/path/to/page.html",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: "page.html",
|
|
});
|
|
|
|
testValid("http://example.com/path/to/page.html?a=1", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/path/to/page.html",
|
|
queryString: "a=1",
|
|
fragment: null,
|
|
lastPathComponent: "page.html",
|
|
});
|
|
|
|
testValid("http://example.com/path/to/page.html?a=1&b=2", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/path/to/page.html",
|
|
queryString: "a=1&b=2",
|
|
fragment: null,
|
|
lastPathComponent: "page.html",
|
|
});
|
|
|
|
testValid("http://example.com/path/to/page.html?a=1&b=2#test", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/path/to/page.html",
|
|
queryString: "a=1&b=2",
|
|
fragment: "test",
|
|
lastPathComponent: "page.html",
|
|
});
|
|
|
|
testValid("http://example.com:123/path/to/page.html?a=1&b=2#test", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: 123,
|
|
origin: "http://example.com:123",
|
|
path: "/path/to/page.html",
|
|
queryString: "a=1&b=2",
|
|
fragment: "test",
|
|
lastPathComponent: "page.html",
|
|
});
|
|
|
|
testValid("http://example.com/path/to/page.html#test", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/path/to/page.html",
|
|
queryString: null,
|
|
fragment: "test",
|
|
lastPathComponent: "page.html",
|
|
});
|
|
|
|
testValid("http://example.com#alpha/beta", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: "alpha/beta",
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("app-specific://example.com", {
|
|
scheme: "app-specific",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "app-specific://example.com",
|
|
path: null,
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://example", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example",
|
|
port: null,
|
|
origin: "http://example",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://my.example.com", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "my.example.com",
|
|
port: null,
|
|
origin: "http://my.example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
// Data URLs just spit back the scheme.
|
|
testValid("data:text/plain,test", {
|
|
scheme: "data",
|
|
userinfo: null,
|
|
host: null,
|
|
port: null,
|
|
origin: null,
|
|
path: null,
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testInvalid("http://");
|
|
testInvalid("http://example.com:65537");
|
|
|
|
testValid("http:example.com/", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http:/example.com/", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://user:pass@example.com/", {
|
|
scheme: "http",
|
|
userinfo: "user:pass",
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testValid("http://:pass@example.com/", {
|
|
scheme: "http",
|
|
userinfo: ":pass",
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: null,
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
testInvalid("http://user@pass:example.com/");
|
|
|
|
testValid("http://example.com?key=alpha/beta", {
|
|
scheme: "http",
|
|
userinfo: null,
|
|
host: "example.com",
|
|
port: null,
|
|
origin: "http://example.com",
|
|
path: "/",
|
|
queryString: "key=alpha/beta",
|
|
fragment: null,
|
|
lastPathComponent: null,
|
|
});
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "parseDataURL",
|
|
test() {
|
|
function testInvalid(url) {
|
|
InspectorTest.log("");
|
|
InspectorTest.log("Test Invalid: " + url);
|
|
InspectorTest.expectThat(parseDataURL(url) === null, "Should not be a data URL");
|
|
}
|
|
|
|
function testValid(url, expected) {
|
|
InspectorTest.log("");
|
|
InspectorTest.log("Test Valid: " + url);
|
|
|
|
let {mimeType: expectedMimeType, charset: expectedCharset, base64: expectedBase64, data: expectedData, content: expectedContent} = expected;
|
|
let {mimeType: actualMimeType, charset: actualCharset, base64: actualBase64, data: actualData, scheme: actualScheme} = parseDataURL(url);
|
|
let actualContent = actualData;
|
|
if (actualBase64)
|
|
actualContent = atob(actualContent);
|
|
|
|
InspectorTest.expectEqual(actualScheme, "data", "scheme should always be 'data'");
|
|
InspectorTest.expectEqual(actualMimeType, expectedMimeType, `mimeType should be: '${expectedMimeType}'`);
|
|
InspectorTest.expectEqual(actualCharset, expectedCharset, `charset should be: '${expectedCharset}'`);
|
|
InspectorTest.expectEqual(actualBase64, expectedBase64, `base64 should be: '${expectedBase64}'`);
|
|
InspectorTest.expectEqual(actualData, expectedData, `data should be: '${expectedData}'`);
|
|
if (expectedContent !== null)
|
|
InspectorTest.expectThat(actualContent === expectedContent, `Resolved content should be: '${expectedContent}'`);
|
|
}
|
|
|
|
testInvalid("https://webkit.org");
|
|
testInvalid("data:");
|
|
testInvalid("data:text/plain;test");
|
|
testInvalid("data:text/plain;base64;test");
|
|
|
|
testValid("data:,", {
|
|
mimeType: "text/plain",
|
|
charset: "US-ASCII",
|
|
base64: false,
|
|
data: "",
|
|
content: "",
|
|
});
|
|
|
|
testValid("data:,test", {
|
|
mimeType: "text/plain",
|
|
charset: "US-ASCII",
|
|
base64: false,
|
|
data: "test",
|
|
content: "test",
|
|
});
|
|
|
|
testValid("data:text/plain,test", {
|
|
mimeType: "text/plain",
|
|
charset: "US-ASCII",
|
|
base64: false,
|
|
data: "test",
|
|
content: "test",
|
|
});
|
|
|
|
testValid("data:text/plain;charset=TEST,test", {
|
|
mimeType: "text/plain",
|
|
charset: "TEST",
|
|
base64: false,
|
|
data: "test",
|
|
content: "test",
|
|
});
|
|
|
|
testValid("data:application/json,{\"name\":\"test\",\"list\":[1,2,3]}", {
|
|
mimeType: "application/json",
|
|
charset: "US-ASCII",
|
|
base64: false,
|
|
data: '{"name":"test","list":[1,2,3]}',
|
|
content: '{"name":"test","list":[1,2,3]}',
|
|
});
|
|
|
|
InspectorTest.assert(encodeURIComponent('{"name":"test","list":[1,2,3]}') === "%7B%22name%22%3A%22test%22%2C%22list%22%3A%5B1%2C2%2C3%5D%7D");
|
|
testValid("data:application/json,%7B%22name%22%3A%22test%22%2C%22list%22%3A%5B1%2C2%2C3%5D%7D", {
|
|
mimeType: "application/json",
|
|
charset: "US-ASCII",
|
|
base64: false,
|
|
data: '{"name":"test","list":[1,2,3]}',
|
|
content: '{"name":"test","list":[1,2,3]}',
|
|
});
|
|
|
|
testValid("data:application/json;base64,eyJuYW1lIjoidGVzdCIsImxpc3QiOlsxLDIsM119", {
|
|
mimeType: "application/json",
|
|
charset: "US-ASCII",
|
|
base64: true,
|
|
data: "eyJuYW1lIjoidGVzdCIsImxpc3QiOlsxLDIsM119",
|
|
content: '{"name":"test","list":[1,2,3]}',
|
|
});
|
|
|
|
testValid("data:application/json;charset=utf-8;base64,eyJuYW1lIjoidGVzdCIsImxpc3QiOlsxLDIsM119", {
|
|
mimeType: "application/json",
|
|
charset: "utf-8",
|
|
base64: true,
|
|
data: "eyJuYW1lIjoidGVzdCIsImxpc3QiOlsxLDIsM119",
|
|
content: '{"name":"test","list":[1,2,3]}',
|
|
});
|
|
|
|
testValid("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==", {
|
|
mimeType: "image/png",
|
|
charset: "US-ASCII",
|
|
base64: true,
|
|
data: "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",
|
|
content: null, // Skip content check.
|
|
});
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "parseQueryString",
|
|
test() {
|
|
function test(queryString, expected) {
|
|
InspectorTest.expectShallowEqual(parseQueryString(queryString), expected, `The query '${queryString}' was parsed successfully.`);
|
|
}
|
|
|
|
test("a", {a: ""});
|
|
test("a&b", {a: "", b: ""});
|
|
|
|
test("a=", {a: ""});
|
|
test("a=&b=", {a: "", b: ""});
|
|
|
|
test("a=1", {a: "1"});
|
|
test("a=1&b=2", {a: "1", b: "2"});
|
|
|
|
test("a==1", {a: "=1"});
|
|
test("a==1&b==2", {a: "=1", b: "=2"});
|
|
|
|
test("a=1=", {a: "1="});
|
|
test("a=1=&b=2=", {a: "1=", b: "2="});
|
|
|
|
test("a==1=", {a: "=1="});
|
|
test("a==1=&b==2=", {a: "=1=", b: "=2="});
|
|
|
|
test("a&b=1&c==2=&d&e=3&f==4=", {a: "", b: "1", c: "=2=", d: "", e: "3", f: "=4="});
|
|
|
|
test("a=foo%20bar&b=123%3A456", {a: "foo bar", b: "123:456"});
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.displayNameForURL",
|
|
test() {
|
|
function test(tests) {
|
|
for (let {url, expected} of tests) {
|
|
expected = expected || url;
|
|
InspectorTest.expectEqual(WI.displayNameForURL(url), expected, `Display name of '${url}' should be '${expected}'.`);
|
|
}
|
|
|
|
InspectorTest.newline();
|
|
|
|
InspectorTest.log("Allowing directory as name...");
|
|
for (let {url, expected, directory} of tests) {
|
|
expected = directory || expected || url;
|
|
InspectorTest.expectEqual(WI.displayNameForURL(url, null, {allowDirectoryAsName: true}), expected, `Display name of '${url}' should be '${expected}'.`);
|
|
}
|
|
}
|
|
|
|
test([
|
|
{url: "http://example", expected: "example", directory: "/"},
|
|
{url: "http://example.com", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com:80/", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com:42/", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/path", expected: "path"},
|
|
{url: "http://example.com/path/", expected: "path", directory: "/"},
|
|
{url: "http://example.com/path/to", expected: "to"},
|
|
{url: "http://example.com/path/to/", expected: "to", directory: "/"},
|
|
{url: "http://example.com/path/to/page.html", expected: "page.html"},
|
|
{url: "http://example.com/path/to/page.html#test", expected: "page.html"},
|
|
{url: "http://example.com/path/to/page.html?", expected: "page.html"},
|
|
{url: "http://example.com/path/to/page.html?a=1", expected: "page.html"},
|
|
{url: "http://example.com/path/to/page.html?a=1&b=foo%2Fbar", expected: "page.html"},
|
|
{url: "http://example.com/path/to/page.html?a=1&b=foo%2Fbar#test", expected: "page.html"},
|
|
{url: "http://example.com:123/path/to/page.html?a=1&b=foo%2Fbar#test", expected: "page.html"},
|
|
|
|
{url: "http://example.com#foo%20bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/#foo%20bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/foo%20bar", expected: "foo bar"},
|
|
{url: "http://example.com?key=foo%20bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/?key=foo%20bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com?key=foo bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/?key=foo bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/foo%20bar", expected: "foo bar"},
|
|
{url: "http://example.com/foo bar", expected: "foo bar"},
|
|
|
|
{url: "http://example.com#foo/bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/#foo/bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com#foo%2Fbar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/#foo%2Fbar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com?key=foo%2Fbar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/?key=foo%2Fbar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com?key=foo/bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/?key=foo/bar", expected: "example.com", directory: "/"},
|
|
{url: "http://example.com/foo%2Fbar", expected: "foo/bar"},
|
|
|
|
{url: "http://user:pass@example.com/", expected: "example.com", directory: "/"},
|
|
{url: "http://:pass@example.com/", expected: "example.com", directory: "/"},
|
|
|
|
{url: "http://my.example.com", expected: "my.example.com", directory: "/"},
|
|
{url: "http://my.example.com/", expected: "my.example.com", directory: "/"},
|
|
|
|
{url: "file:///foo", expected: "foo"},
|
|
{url: "file:///foo/", expected: "foo", directory: "/"},
|
|
{url: "file:///foo/bar", expected: "bar"},
|
|
|
|
{url: "data:text/plain,test", expected: "data:text/plain,test"},
|
|
|
|
{url: "about:blank", expected: "about:blank"},
|
|
{url: "about:srcdoc", expected: "about:srcdoc"},
|
|
|
|
{url: "app-specific://example.com", expected: "example.com"},
|
|
{url: "app-specific://example.com/", expected: "example.com", directory: "/"},
|
|
{url: "app-specific://example.com/path", expected: "path"},
|
|
|
|
// Invalid
|
|
{url: "a"},
|
|
{url: "http://"},
|
|
{url: "http://example.com:65537"},
|
|
{url: "http://user@pass:example.com/"},
|
|
]);
|
|
},
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.urlWithoutFragment",
|
|
test() {
|
|
function test(url, expected) {
|
|
InspectorTest.expectEqual(WI.urlWithoutFragment(url), expected, `Removing fragment of '${url}' should be '${expected}'.`);
|
|
}
|
|
|
|
function testBoth(url, expected) {
|
|
const urlWithFrag = url + "#frag";
|
|
InspectorTest.expectEqual(WI.urlWithoutFragment(url), expected, `Removing fragment of '${url}' should be '${expected}'.`);
|
|
InspectorTest.expectEqual(WI.urlWithoutFragment(urlWithFrag), expected, `Removing fragment of '${urlWithFrag}' should be '${expected}'.`);
|
|
}
|
|
|
|
testBoth("http://example.com", "http://example.com/");
|
|
testBoth("https://example.com", "https://example.com/");
|
|
testBoth("ftp://example.com", "ftp://example.com/");
|
|
|
|
testBoth("http://example.com/", "http://example.com/");
|
|
testBoth("http://example.com/path", "http://example.com/path");
|
|
testBoth("http://example.com/path/a/b/", "http://example.com/path/a/b/");
|
|
testBoth("http://example.com/path/a/b/?", "http://example.com/path/a/b/?");
|
|
testBoth("http://example.com/path/a/b/?s=1", "http://example.com/path/a/b/?s=1");
|
|
testBoth("http://example.com/path/a/b/?s=1&t=2", "http://example.com/path/a/b/?s=1&t=2");
|
|
testBoth("http://example.com?", "http://example.com/?");
|
|
testBoth("http://example.com?s=1", "http://example.com/?s=1");
|
|
testBoth("http://example.com?s=1&t=2", "http://example.com/?s=1&t=2");
|
|
|
|
test("http://example.com#", "http://example.com/");
|
|
test("http://example.com/#", "http://example.com/");
|
|
test("http://example.com/path#", "http://example.com/path");
|
|
test("http://example.com/path/#", "http://example.com/path/");
|
|
test("http://example.com/path?#", "http://example.com/path?");
|
|
test("http://example.com/path/?#", "http://example.com/path/?");
|
|
|
|
test(new URL("#hash", "about:blank"), "about:blank");
|
|
test("invalid", "invalid");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.h2Authority",
|
|
test() {
|
|
function test(url, expected) {
|
|
let components = parseURL(url);
|
|
InspectorTest.expectEqual(WI.h2Authority(components), expected, `HTTP/2 :authority of '${url}' should be '${expected}'.`);
|
|
}
|
|
|
|
test("http://example.com", "example.com");
|
|
test("https://example.com", "example.com");
|
|
test("ftp://example.com", "example.com");
|
|
|
|
test("http://example.com/foo", "example.com");
|
|
test("https://example.com/foo", "example.com");
|
|
test("ftp://example.com/foo", "example.com");
|
|
|
|
test("http://example.com:123", "example.com:123");
|
|
test("https://example.com:123", "example.com:123");
|
|
test("ftp://example.com:123", "example.com:123");
|
|
|
|
test("ftp://user:pass@example.com/foo", "user:pass@example.com");
|
|
test("http://user:pass@example.com/foo", "example.com");
|
|
test("https://user:pass@example.com/foo", "example.com");
|
|
|
|
test("ftp://user:pass@example.com:123/foo", "user:pass@example.com:123");
|
|
test("http://user:pass@example.com:123/foo", "example.com:123");
|
|
test("https://user:pass@example.com:123/foo", "example.com:123");
|
|
|
|
test("ftp://:pass@example.com/foo", ":pass@example.com");
|
|
test("http://:pass@example.com/foo", "example.com");
|
|
test("https://:pass@example.com/foo", "example.com");
|
|
|
|
test("ftp://:pass@example.com:123/foo", ":pass@example.com:123");
|
|
test("http://:pass@example.com:123/foo", "example.com:123");
|
|
test("https://:pass@example.com:123/foo", "example.com:123");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.h2Path",
|
|
test() {
|
|
function test(url, expected) {
|
|
let components = parseURL(url);
|
|
InspectorTest.expectEqual(WI.h2Path(components), expected, `HTTP/2 :path of '${url}' should be '${expected}'.`);
|
|
}
|
|
|
|
test("http://example.com", "/");
|
|
test("https://example.com", "/");
|
|
test("ftp://example.com", "/");
|
|
|
|
test("http://example.com/foo", "/foo");
|
|
test("https://example.com/foo", "/foo");
|
|
test("ftp://example.com/foo", "/foo");
|
|
test("http://example.com/foo#hash", "/foo");
|
|
test("https://example.com/foo#hash", "/foo");
|
|
test("ftp://example.com/foo#hash", "/foo");
|
|
|
|
test("http://example.com/foo/bar.js", "/foo/bar.js");
|
|
test("https://example.com/foo/bar.js", "/foo/bar.js");
|
|
test("ftp://example.com/foo/bar.js", "/foo/bar.js");
|
|
test("http://example.com/foo/bar.js#hash", "/foo/bar.js");
|
|
test("https://example.com/foo/bar.js#hash", "/foo/bar.js");
|
|
test("ftp://example.com/foo/bar.js#hash", "/foo/bar.js");
|
|
|
|
test("http://example.com/?t=1", "/?t=1");
|
|
test("https://example.com/?t=1", "/?t=1");
|
|
test("ftp://example.com/?t=1", "/?t=1");
|
|
|
|
test("http://example.com/foo/bar.js?t=1", "/foo/bar.js?t=1");
|
|
test("https://example.com/foo/bar.js?t=1", "/foo/bar.js?t=1");
|
|
test("ftp://example.com/foo/bar.js?t=1", "/foo/bar.js?t=1");
|
|
test("http://example.com/foo/bar.js?t=1#hash", "/foo/bar.js?t=1");
|
|
test("https://example.com/foo/bar.js?t=1#hash", "/foo/bar.js?t=1");
|
|
test("ftp://example.com/foo/bar.js?t=1#hash", "/foo/bar.js?t=1");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onLoad="runTest()">
|
|
</body>
|
|
</html>
|