зеркало из https://github.com/Azure/ms-rest-js.git
1169 строки
42 KiB
TypeScript
1169 строки
42 KiB
TypeScript
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
|
|
import { assert } from "chai";
|
|
import { URLTokenizer, URLToken, URLBuilder, URLQuery } from "../lib/url";
|
|
|
|
describe("URLQuery", () => {
|
|
it(`constructor()`, () => {
|
|
const urlQuery = new URLQuery();
|
|
assert.strictEqual(urlQuery.any(), false);
|
|
assert.strictEqual(urlQuery.toString(), "");
|
|
});
|
|
|
|
describe("set(string,string)", () => {
|
|
it(`with undefined parameter name`, () => {
|
|
const urlQuery = new URLQuery();
|
|
urlQuery.set(undefined as any, "tasty");
|
|
assert.strictEqual(urlQuery.get(undefined as any), undefined);
|
|
assert.strictEqual(urlQuery.any(), false);
|
|
assert.strictEqual(urlQuery.toString(), "");
|
|
});
|
|
|
|
it(`with empty parameter name`, () => {
|
|
const urlQuery = new URLQuery();
|
|
urlQuery.set("", "tasty");
|
|
assert.strictEqual(urlQuery.get(""), undefined);
|
|
assert.strictEqual(urlQuery.any(), false);
|
|
assert.strictEqual(urlQuery.toString(), "");
|
|
});
|
|
|
|
it(`with undefined parameter value`, () => {
|
|
const urlQuery = new URLQuery();
|
|
urlQuery.set("apples", undefined);
|
|
assert.strictEqual(urlQuery.get("apples"), undefined);
|
|
assert.strictEqual(urlQuery.any(), false);
|
|
assert.strictEqual(urlQuery.toString(), "");
|
|
});
|
|
|
|
it(`with empty parameter value`, () => {
|
|
const urlQuery = new URLQuery();
|
|
urlQuery.set("apples", "");
|
|
assert.strictEqual(urlQuery.get("apples"), "");
|
|
assert.strictEqual(urlQuery.any(), true);
|
|
assert.strictEqual(urlQuery.toString(), "apples=");
|
|
});
|
|
|
|
it(`with non-empty parameter value`, () => {
|
|
const urlQuery = new URLQuery();
|
|
urlQuery.set("apples", "grapes");
|
|
assert.strictEqual(urlQuery.get("apples"), "grapes");
|
|
assert.strictEqual(urlQuery.any(), true);
|
|
assert.strictEqual(urlQuery.toString(), "apples=grapes");
|
|
});
|
|
|
|
it(`with existing parameter value and undefined parameter value`, () => {
|
|
const urlQuery = new URLQuery();
|
|
urlQuery.set("apples", "grapes");
|
|
urlQuery.set("apples", undefined);
|
|
assert.strictEqual(urlQuery.get("apples"), undefined);
|
|
assert.strictEqual(urlQuery.any(), false);
|
|
assert.strictEqual(urlQuery.toString(), "");
|
|
});
|
|
|
|
it(`with existing parameter value and empty parameter value`, () => {
|
|
const urlQuery = new URLQuery();
|
|
urlQuery.set("apples", "grapes");
|
|
urlQuery.set("apples", "");
|
|
assert.strictEqual(urlQuery.get("apples"), "");
|
|
assert.strictEqual(urlQuery.any(), true);
|
|
assert.strictEqual(urlQuery.toString(), "apples=");
|
|
});
|
|
});
|
|
|
|
describe("parse(string)", () => {
|
|
it(`with undefined`, () => {
|
|
assert.strictEqual(URLQuery.parse(undefined as any).toString(), "");
|
|
});
|
|
|
|
it(`with ""`, () => {
|
|
assert.strictEqual(URLQuery.parse("").toString(), "");
|
|
});
|
|
|
|
it(`with "A"`, () => {
|
|
assert.strictEqual(URLQuery.parse("A").toString(), "");
|
|
});
|
|
|
|
it(`with "A="`, () => {
|
|
assert.strictEqual(URLQuery.parse("A=").toString(), "A=");
|
|
});
|
|
|
|
it(`with "A=B"`, () => {
|
|
assert.strictEqual(URLQuery.parse("A=B").toString(), "A=B");
|
|
});
|
|
|
|
it(`with "A=&"`, () => {
|
|
assert.strictEqual(URLQuery.parse("A=").toString(), "A=");
|
|
});
|
|
|
|
it(`with "A=="`, () => {
|
|
assert.strictEqual(URLQuery.parse("A==").toString(), "");
|
|
});
|
|
|
|
it(`with "A=&B=C"`, () => {
|
|
assert.strictEqual(URLQuery.parse("A=&B=C").toString(), "A=&B=C");
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("URLBuilder", () => {
|
|
describe("setScheme()", () => {
|
|
it(`to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("");
|
|
assert.strictEqual(urlBuilder.getScheme(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to "http"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
assert.strictEqual(urlBuilder.getScheme(), "http");
|
|
assert.strictEqual(urlBuilder.toString(), "http://");
|
|
});
|
|
|
|
it(`to "http://"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http://");
|
|
assert.strictEqual(urlBuilder.getScheme(), "http");
|
|
assert.strictEqual(urlBuilder.getHost(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "http://");
|
|
});
|
|
|
|
it(`to "http://www.example.com"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http://www.example.com");
|
|
assert.strictEqual(urlBuilder.getScheme(), "http");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.toString(), "http://www.example.com");
|
|
});
|
|
|
|
it(`to "http://www.exa mple.com"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http://www.exa mple.com");
|
|
assert.strictEqual(urlBuilder.getScheme(), "http");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.exa mple.com");
|
|
assert.strictEqual(urlBuilder.toString(), "http://www.exa mple.com");
|
|
});
|
|
|
|
it(`from "http" to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setScheme("");
|
|
assert.strictEqual(urlBuilder.getScheme(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`from "http" to "https"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setScheme("https");
|
|
assert.strictEqual(urlBuilder.getScheme(), "https");
|
|
assert.strictEqual(urlBuilder.toString(), "https://");
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "A=B"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("A", "B");
|
|
assert.strictEqual("http://www.example.com?A=B", urlBuilder.toString());
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "App les=B"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("App les", "B");
|
|
assert.strictEqual("http://www.example.com?App les=B", urlBuilder.toString());
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "App+les=B"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("App+les", "B");
|
|
assert.strictEqual("http://www.example.com?App+les=B", urlBuilder.toString());
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "App%20les=B"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("App%20les", "B");
|
|
assert.strictEqual("http://www.example.com?App%20les=B", urlBuilder.toString());
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "Apples=Go od"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("Apples", "Go od");
|
|
assert.strictEqual("http://www.example.com?Apples=Go od", urlBuilder.toString());
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "Apples=Go+od"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("Apples", "Go+od");
|
|
assert.strictEqual("http://www.example.com?Apples=Go+od", urlBuilder.toString());
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "Apples=Go%20od"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("Apples", "Go%20od");
|
|
assert.strictEqual("http://www.example.com?Apples=Go%20od", urlBuilder.toString());
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "A=B&C=D"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("A", "B");
|
|
urlBuilder.setQueryParameter("C", "D");
|
|
assert.strictEqual(urlBuilder.toString(), "http://www.example.com?A=B&C=D");
|
|
});
|
|
|
|
it(`to "http" and setHost() to "www.example.com" and setQueryParameter() to "A=B&C=D" and setPath() to "index.html"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("http");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setQueryParameter("A", "B");
|
|
urlBuilder.setQueryParameter("C", "D");
|
|
urlBuilder.setPath("index.html");
|
|
assert.strictEqual(urlBuilder.toString(), "http://www.example.com/index.html?A=B&C=D");
|
|
});
|
|
|
|
it(`to "https" and setHost() to "www.example.com" and setPath() to "http://www.othersite.com"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("https");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setPath("http://www.othersite.com");
|
|
assert.strictEqual(urlBuilder.getScheme(), "http");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.othersite.com");
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "http://www.othersite.com");
|
|
});
|
|
|
|
it(`to "https" and setHost() to "www.example.com" and setPath() to "mypath?thing=stuff"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("https");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setPath("mypath?thing=stuff");
|
|
urlBuilder.setQueryParameter("otherthing", "otherstuff");
|
|
assert.strictEqual(urlBuilder.getScheme(), "https");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.getPath(), "mypath");
|
|
assert.strictEqual(urlBuilder.toString(), "https://www.example.com/mypath?thing=stuff&otherthing=otherstuff");
|
|
});
|
|
|
|
it(`to "https" and setHost() to "www.example.com" and setPath() to "http://www.othersite.com/mypath?thing=stuff" and setQueryParameter() to "otherthing=otherstuff"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setScheme("https");
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setPath("http://www.othersite.com/mypath?thing=stuff");
|
|
urlBuilder.setQueryParameter("otherthing", "otherstuff");
|
|
assert.strictEqual(urlBuilder.getScheme(), "http");
|
|
assert.strictEqual(urlBuilder.getPath(), "/mypath");
|
|
assert.strictEqual(urlBuilder.toString(), "http://www.othersite.com/mypath?thing=stuff&otherthing=otherstuff");
|
|
});
|
|
});
|
|
|
|
describe("setHost()", () => {
|
|
it(`to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("");
|
|
assert.strictEqual(urlBuilder.getHost(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to "://www.example.com"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("://www.example.com");
|
|
assert.strictEqual(urlBuilder.getScheme(), undefined);
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com");
|
|
});
|
|
|
|
it(`to "https://www.example.com"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("https://www.example.com");
|
|
assert.strictEqual(urlBuilder.getScheme(), "https");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.toString(), "https://www.example.com");
|
|
});
|
|
|
|
it(`to "www.example.com:"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com:");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.getPort(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com");
|
|
});
|
|
|
|
it(`to "www.example.com:1234"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com:1234");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.getPort(), "1234");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com:1234");
|
|
});
|
|
|
|
it(`to "www.example.com/"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com/");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/");
|
|
});
|
|
|
|
it(`to "www.example.com/index.html"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com/index.html");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.getPath(), "/index.html");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/index.html");
|
|
});
|
|
|
|
it(`to "www.example.com?"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com?");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com");
|
|
});
|
|
|
|
it(`to "www.example.com?a=b"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com?a=b");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.example.com");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com?a=b");
|
|
});
|
|
|
|
it(`to "www.examp le.com"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.examp le.com");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.examp le.com");
|
|
assert.strictEqual(urlBuilder.toString(), "www.examp le.com");
|
|
});
|
|
|
|
it(`from "www.example.com" to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setHost("");
|
|
assert.strictEqual(urlBuilder.getHost(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`from "www.example.com" to "www.bing.com"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setHost("www.bing.com");
|
|
assert.strictEqual(urlBuilder.getHost(), "www.bing.com");
|
|
assert.strictEqual(urlBuilder.toString(), "www.bing.com");
|
|
});
|
|
|
|
it(`to "www.example.com" and setPath() to "my/path"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setPath("my/path");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/my/path");
|
|
});
|
|
|
|
it(`to "www.example.com" and setPath() to "/my/path"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com");
|
|
urlBuilder.setPath("/my/path");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/my/path");
|
|
});
|
|
|
|
it(`to "www.example.com/" and setPath() to "my/path"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com/");
|
|
urlBuilder.setPath("my/path");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/my/path");
|
|
});
|
|
|
|
it(`to "www.example.com/" and setPath() to "/my/path"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com/");
|
|
urlBuilder.setPath("/my/path");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/my/path");
|
|
});
|
|
|
|
it(`to "www.example.com" and setPath() to "my path"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com/");
|
|
urlBuilder.setPath("my path");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/my path");
|
|
});
|
|
|
|
it(`to "www.example.com" and setPath() to "my+path"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com/");
|
|
urlBuilder.setPath("my+path");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/my+path");
|
|
});
|
|
|
|
it(`to "www.example.com" and setPath() to "my%20path"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("www.example.com/");
|
|
urlBuilder.setPath("my%20path");
|
|
assert.strictEqual(urlBuilder.toString(), "www.example.com/my%20path");
|
|
});
|
|
});
|
|
|
|
describe("setPort()", () => {
|
|
it(`to undefined`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort(undefined);
|
|
assert.strictEqual(urlBuilder.getPort(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort("");
|
|
assert.strictEqual(urlBuilder.getPort(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to 50`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort(50);
|
|
assert.strictEqual(urlBuilder.getPort(), "50");
|
|
assert.strictEqual(urlBuilder.toString(), ":50");
|
|
});
|
|
|
|
it(`to "50"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort("50");
|
|
assert.strictEqual(urlBuilder.getPort(), "50");
|
|
assert.strictEqual(urlBuilder.toString(), ":50");
|
|
});
|
|
|
|
it(`to "50/"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort("50/");
|
|
assert.strictEqual(urlBuilder.getPort(), "50");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), ":50/");
|
|
});
|
|
|
|
it(`to "50/index.html"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort("50/index.html");
|
|
assert.strictEqual(urlBuilder.getPort(), "50");
|
|
assert.strictEqual(urlBuilder.getPath(), "/index.html");
|
|
assert.strictEqual(urlBuilder.toString(), ":50/index.html");
|
|
});
|
|
|
|
it(`to "50?"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort("50?");
|
|
assert.strictEqual(urlBuilder.getPort(), "50");
|
|
assert.strictEqual(urlBuilder.toString(), ":50");
|
|
});
|
|
|
|
it(`to "50?a=b&c=d"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort("50?a=b&c=d");
|
|
assert.strictEqual(urlBuilder.getPort(), "50");
|
|
assert.strictEqual(urlBuilder.toString(), ":50?a=b&c=d");
|
|
});
|
|
|
|
it(`from 8080 to undefined`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort(8080);
|
|
urlBuilder.setPort(undefined);
|
|
assert.strictEqual(urlBuilder.getPort(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`from 8080 to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort(8080);
|
|
urlBuilder.setPort("");
|
|
assert.strictEqual(urlBuilder.getPort(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`from 8080 to 123`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort(8080);
|
|
urlBuilder.setPort(123);
|
|
assert.strictEqual(urlBuilder.getPort(), "123");
|
|
assert.strictEqual(urlBuilder.toString(), ":123");
|
|
});
|
|
|
|
it(`from 8080 to "123"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPort(8080);
|
|
urlBuilder.setPort("123");
|
|
assert.strictEqual(urlBuilder.getPort(), "123");
|
|
assert.strictEqual(urlBuilder.toString(), ":123");
|
|
});
|
|
});
|
|
|
|
describe("setPath()", () => {
|
|
it(`to undefined`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath(undefined);
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("");
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to "/"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("/");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "/");
|
|
});
|
|
|
|
it(`to "test/path.html"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("test/path.html");
|
|
assert.strictEqual(urlBuilder.getPath(), "test/path.html");
|
|
assert.strictEqual(urlBuilder.toString(), "/test/path.html");
|
|
});
|
|
|
|
it(`from "/" to undefined`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("/");
|
|
urlBuilder.setPath(undefined);
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`from "/" to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("/");
|
|
urlBuilder.setPath("");
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`from "/" to "/"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("/");
|
|
urlBuilder.setPath("/");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "/");
|
|
});
|
|
|
|
it(`from "/" to "test/path.html"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("/");
|
|
urlBuilder.setPath("test/path.html");
|
|
assert.strictEqual(urlBuilder.getPath(), "test/path.html");
|
|
assert.strictEqual(urlBuilder.toString(), "/test/path.html");
|
|
});
|
|
|
|
it(`from "/test" to "/more/path.html"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setHost("https://www.example.com/test");
|
|
assert.strictEqual(urlBuilder.getPath(), "/test");
|
|
urlBuilder.setPath("/more/path.html");
|
|
assert.strictEqual(urlBuilder.getPath(), "/more/path.html");
|
|
assert.strictEqual(urlBuilder.toString(), "https://www.example.com/more/path.html");
|
|
});
|
|
});
|
|
|
|
describe("appendPath()", () => {
|
|
it(`with undefined and undefined`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.appendPath(undefined);
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with undefined and ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.appendPath("");
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with undefined and "/"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.appendPath("/");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "/");
|
|
});
|
|
|
|
it(`with undefined and "cats"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.appendPath("cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/cats");
|
|
});
|
|
|
|
it(`with undefined and "/cats"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.appendPath("/cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/cats");
|
|
});
|
|
|
|
it(`with "" and undefined`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("");
|
|
urlBuilder.appendPath(undefined);
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with "" and ""`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("");
|
|
urlBuilder.appendPath("");
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with "" and "/"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("");
|
|
urlBuilder.appendPath("/");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "/");
|
|
});
|
|
|
|
it(`with "" and "cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("");
|
|
urlBuilder.appendPath("cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/cats");
|
|
});
|
|
|
|
it(`with "" and "/cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("");
|
|
urlBuilder.appendPath("/cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/cats");
|
|
});
|
|
|
|
it(`with "/" and undefined`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/");
|
|
urlBuilder.appendPath(undefined);
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "/");
|
|
});
|
|
|
|
it(`with "/" and ""`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/");
|
|
urlBuilder.appendPath("");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "/");
|
|
});
|
|
|
|
it(`with "/" and "/"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/");
|
|
urlBuilder.appendPath("/");
|
|
assert.strictEqual(urlBuilder.getPath(), "/");
|
|
assert.strictEqual(urlBuilder.toString(), "/");
|
|
});
|
|
|
|
it(`with "/" and "cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/");
|
|
urlBuilder.appendPath("cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/cats");
|
|
});
|
|
|
|
it(`with "/" and "/cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/");
|
|
urlBuilder.appendPath("/cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/cats");
|
|
});
|
|
|
|
it(`with "/dogs" and undefined`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs");
|
|
urlBuilder.appendPath(undefined);
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs");
|
|
});
|
|
|
|
it(`with "/dogs" and ""`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs");
|
|
urlBuilder.appendPath("");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs");
|
|
});
|
|
|
|
it(`with "/dogs" and "/"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs");
|
|
urlBuilder.appendPath("/");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/");
|
|
});
|
|
|
|
it(`with "/dogs" and "cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs");
|
|
urlBuilder.appendPath("cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/cats");
|
|
});
|
|
|
|
it(`with "/dogs" and "/cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs");
|
|
urlBuilder.appendPath("/cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/cats");
|
|
});
|
|
|
|
it(`with "/dogs/" and undefined`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs/");
|
|
urlBuilder.appendPath(undefined);
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/");
|
|
});
|
|
|
|
it(`with "/dogs/" and ""`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs/");
|
|
urlBuilder.appendPath("");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/");
|
|
});
|
|
|
|
it(`with "/dogs/" and "/"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs/");
|
|
urlBuilder.appendPath("/");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/");
|
|
});
|
|
|
|
it(`with "/dogs/" and "cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs/");
|
|
urlBuilder.appendPath("cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/cats");
|
|
});
|
|
|
|
it(`with "/dogs/" and "/cats"`, () => {
|
|
const urlBuilder: URLBuilder = URLBuilder.parse("/dogs/");
|
|
urlBuilder.appendPath("/cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "/dogs/cats");
|
|
assert.strictEqual(urlBuilder.toString(), "/dogs/cats");
|
|
});
|
|
});
|
|
|
|
describe("setQuery()", () => {
|
|
it(`to undefined`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQuery(undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQuery("");
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`to "?"`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQuery("?");
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
});
|
|
|
|
describe("setQueryParameter()", () => {
|
|
it(`with "a" and undefined`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQueryParameter("a", undefined);
|
|
assert.strictEqual(urlBuilder.getQueryParameterValue("a"), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with "a" and ""`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQueryParameter("a", "");
|
|
assert.strictEqual(urlBuilder.getQueryParameterValue("a"), "");
|
|
assert.strictEqual(urlBuilder.toString(), "?a=");
|
|
});
|
|
});
|
|
|
|
describe("parse()", () => {
|
|
it(`with ""`, () => {
|
|
assert.strictEqual(URLBuilder.parse("").toString(), "");
|
|
});
|
|
|
|
it(`with "www.bing.com"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com").toString(), "www.bing.com");
|
|
});
|
|
|
|
it(`with "www.bing.com:8080"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com:8080").toString(), "www.bing.com:8080");
|
|
});
|
|
|
|
it(`with "ftp://www.bing.com:8080"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("ftp://www.bing.com:8080").toString(), "ftp://www.bing.com:8080");
|
|
});
|
|
|
|
it(`with "www.bing.com/my/path"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com/my/path").toString(), "www.bing.com/my/path");
|
|
});
|
|
|
|
it(`with "ftp://www.bing.com/my/path"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("ftp://www.bing.com/my/path").toString(), "ftp://www.bing.com/my/path");
|
|
});
|
|
|
|
it(`with "www.bing.com:1234/my/path"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com:1234/my/path").toString(), "www.bing.com:1234/my/path");
|
|
});
|
|
|
|
it(`with "ftp://www.bing.com:1234/my/path"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("ftp://www.bing.com:1234/my/path").toString(), "ftp://www.bing.com:1234/my/path");
|
|
});
|
|
|
|
it(`with "www.bing.com?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com?a=1").toString(), "www.bing.com?a=1");
|
|
});
|
|
|
|
it(`with "https://www.bing.com?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com?a=1").toString(), "https://www.bing.com?a=1");
|
|
});
|
|
|
|
it(`with "www.bing.com:123?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com:123?a=1").toString(), "www.bing.com:123?a=1");
|
|
});
|
|
|
|
it(`with "https://www.bing.com:987?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com:987?a=1").toString(), "https://www.bing.com:987?a=1");
|
|
});
|
|
|
|
it(`with "www.bing.com/folder/index.html?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com/folder/index.html?a=1").toString(), "www.bing.com/folder/index.html?a=1");
|
|
});
|
|
|
|
it(`with "https://www.bing.com/image.gif?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com/image.gif?a=1").toString(), "https://www.bing.com/image.gif?a=1");
|
|
});
|
|
|
|
it(`with "www.bing.com:123/index.html?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com:123/index.html?a=1").toString(), "www.bing.com:123/index.html?a=1");
|
|
});
|
|
|
|
it(`with "https://www.bing.com:987/my/path/again?a=1"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com:987/my/path/again?a=1").toString(), "https://www.bing.com:987/my/path/again?a=1");
|
|
});
|
|
|
|
it(`with "www.bing.com?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com?a=1&b=2").toString(), "www.bing.com?a=1&b=2");
|
|
});
|
|
|
|
it(`with "https://www.bing.com?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com?a=1&b=2").toString(), "https://www.bing.com?a=1&b=2");
|
|
});
|
|
|
|
it(`with "www.bing.com:123?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com:123?a=1&b=2").toString(), "www.bing.com:123?a=1&b=2");
|
|
});
|
|
|
|
it(`with "https://www.bing.com:987?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com:987?a=1&b=2").toString(), "https://www.bing.com:987?a=1&b=2");
|
|
});
|
|
|
|
it(`with "www.bing.com/folder/index.html?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com/folder/index.html?a=1&b=2").toString(), "www.bing.com/folder/index.html?a=1&b=2");
|
|
});
|
|
|
|
it(`with "https://www.bing.com/image.gif?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com/image.gif?a=1&b=2").toString(), "https://www.bing.com/image.gif?a=1&b=2");
|
|
});
|
|
|
|
it(`with "www.bing.com:123/index.html?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("www.bing.com:123/index.html?a=1&b=2").toString(), "www.bing.com:123/index.html?a=1&b=2");
|
|
});
|
|
|
|
it(`with "https://www.bing.com:987/my/path/again?a=1&b=2"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com:987/my/path/again?a=1&b=2").toString(), "https://www.bing.com:987/my/path/again?a=1&b=2");
|
|
});
|
|
|
|
it(`with "https://www.bing.com/my:/path"`, () => {
|
|
assert.strictEqual(URLBuilder.parse("https://www.bing.com/my:/path").toString(), "https://www.bing.com/my:/path");
|
|
});
|
|
});
|
|
|
|
describe("replaceAll()", () => {
|
|
it(`with undefined path, "{arg}" searchValue, and "cats" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath(undefined);
|
|
urlBuilder.replaceAll("{arg}", "cats");
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with "" path, "{arg}" searchValue, and "cats" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("");
|
|
urlBuilder.replaceAll("{arg}", "cats");
|
|
assert.strictEqual(urlBuilder.getPath(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with "my/really/cool/path" path, "" searchValue, and "cats" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("my/really/cool/path");
|
|
urlBuilder.replaceAll("", "cats");
|
|
assert.strictEqual(urlBuilder.getPath(), "my/really/cool/path");
|
|
assert.strictEqual(urlBuilder.toString(), "/my/really/cool/path");
|
|
});
|
|
|
|
it(`with "my/really/cool/path" path, "y" searchValue, and "z" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("my/really/cool/path");
|
|
urlBuilder.replaceAll("y", "z");
|
|
assert.strictEqual(urlBuilder.getPath(), "mz/reallz/cool/path");
|
|
assert.strictEqual(urlBuilder.toString(), "/mz/reallz/cool/path");
|
|
});
|
|
|
|
it(`with "my/really/cool/path" path, "y" searchValue, and "" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setPath("my/really/cool/path");
|
|
urlBuilder.replaceAll("y", "");
|
|
assert.strictEqual(urlBuilder.getPath(), "m/reall/cool/path");
|
|
assert.strictEqual(urlBuilder.toString(), "/m/reall/cool/path");
|
|
});
|
|
|
|
it(`with undefined query, "A" searchValue, and "Z" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQuery(undefined);
|
|
urlBuilder.replaceAll("A", "Z");
|
|
assert.strictEqual(urlBuilder.getQuery(), undefined);
|
|
assert.strictEqual(urlBuilder.toString(), "");
|
|
});
|
|
|
|
it(`with "A=B&C=D&E=A" query, "" searchValue, and "Z" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQuery("A=B&C=D&E=A");
|
|
urlBuilder.replaceAll("", "Z");
|
|
assert.strictEqual(urlBuilder.getQuery(), "A=B&C=D&E=A");
|
|
assert.strictEqual(urlBuilder.toString(), "?A=B&C=D&E=A");
|
|
});
|
|
|
|
it(`with "A=B&C=D&E=A" query, "A" searchValue, and "" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQuery("A=B&C=D&E=A");
|
|
urlBuilder.replaceAll("A", "");
|
|
assert.strictEqual(urlBuilder.getQuery(), "C=D&E=");
|
|
assert.strictEqual(urlBuilder.toString(), "?C=D&E=");
|
|
});
|
|
|
|
it(`with "A=B&C=D&E=A" query, "A" searchValue, and "Z" replaceValue`, () => {
|
|
const urlBuilder = new URLBuilder();
|
|
urlBuilder.setQuery("A=B&C=D&E=A");
|
|
urlBuilder.replaceAll("A", "Z");
|
|
assert.strictEqual(urlBuilder.getQuery(), "Z=B&C=D&E=Z");
|
|
assert.strictEqual(urlBuilder.toString(), "?Z=B&C=D&E=Z");
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("URLTokenizer", () => {
|
|
it("should not have a current token when first created", () => {
|
|
const tokenizer = new URLTokenizer("http://www.bing.com");
|
|
assert.strictEqual(tokenizer.current(), undefined);
|
|
});
|
|
|
|
describe("next()", () => {
|
|
function nextTest(text: string, expectedURLTokens: URLToken[]): void {
|
|
const tokenizer = new URLTokenizer(text);
|
|
if (expectedURLTokens) {
|
|
for (let i = 0; i < expectedURLTokens.length; ++i) {
|
|
assert.strictEqual(tokenizer.next(), true, `Expected to find ${expectedURLTokens.length} URLTokens, but found ${i} instead.`);
|
|
assert.deepEqual(tokenizer.current(), expectedURLTokens[i], `Expected the ${i + 1} URLToken to be ${JSON.stringify(expectedURLTokens[i])}, but found ${JSON.stringify(tokenizer.current())} instead.`);
|
|
}
|
|
}
|
|
assert.strictEqual(tokenizer.next(), false, `Only expected to find ${(expectedURLTokens ? expectedURLTokens.length : 0)} URL token(s).`);
|
|
assert.strictEqual(tokenizer.current(), undefined, `After reading all of the URLTokens, expected the current value to be undefined.`);
|
|
}
|
|
|
|
it(`with ""`, () => {
|
|
nextTest("", []);
|
|
});
|
|
|
|
it(`with "http"`, () => {
|
|
nextTest("http", [
|
|
URLToken.host("http")
|
|
]);
|
|
});
|
|
|
|
it(`with "http:"`, () => {
|
|
nextTest("http:", [
|
|
URLToken.host("http"),
|
|
URLToken.port("")
|
|
]);
|
|
});
|
|
|
|
it(`with "http:/"`, () => {
|
|
nextTest("http:/", [
|
|
URLToken.host("http"),
|
|
URLToken.port(""),
|
|
URLToken.path("/")
|
|
]);
|
|
});
|
|
|
|
it(`with "http://"`, () => {
|
|
nextTest("http://", [
|
|
URLToken.scheme("http"),
|
|
URLToken.host("")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com"`, () => {
|
|
nextTest("https://www.example.com", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com:"`, () => {
|
|
nextTest("https://www.example.com:", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.port("")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com:8080"`, () => {
|
|
nextTest("https://www.example.com:8080", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.port("8080")
|
|
]);
|
|
});
|
|
|
|
it(`with "ftp://www.bing.com:123/"`, () => {
|
|
nextTest("ftp://www.bing.com:123/", [
|
|
URLToken.scheme("ftp"),
|
|
URLToken.host("www.bing.com"),
|
|
URLToken.port("123"),
|
|
URLToken.path("/")
|
|
]);
|
|
});
|
|
|
|
it(`with "ftp://www.bing.com:123/a/b/c.txt"`, () => {
|
|
nextTest("ftp://www.bing.com:123/a/b/c.txt", [
|
|
URLToken.scheme("ftp"),
|
|
URLToken.host("www.bing.com"),
|
|
URLToken.port("123"),
|
|
URLToken.path("/a/b/c.txt")
|
|
]);
|
|
});
|
|
|
|
it(`with "ftp://www.bing.com:123?"`, () => {
|
|
nextTest("ftp://www.bing.com:123?", [
|
|
URLToken.scheme("ftp"),
|
|
URLToken.host("www.bing.com"),
|
|
URLToken.port("123"),
|
|
URLToken.query("")
|
|
]);
|
|
});
|
|
|
|
it(`with "ftp://www.bing.com:123?a=b&c=d"`, () => {
|
|
nextTest("ftp://www.bing.com:123?a=b&c=d", [
|
|
URLToken.scheme("ftp"),
|
|
URLToken.host("www.bing.com"),
|
|
URLToken.port("123"),
|
|
URLToken.query("a=b&c=d")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com/"`, () => {
|
|
nextTest("https://www.example.com/", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.path("/")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com/index.html"`, () => {
|
|
nextTest("https://www.example.com/index.html", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.path("/index.html")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com/index.html?"`, () => {
|
|
nextTest("https://www.example.com/index.html?", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.path("/index.html"),
|
|
URLToken.query("")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com/index.html?"`, () => {
|
|
nextTest("https://www.example.com/index.html?", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.path("/index.html"),
|
|
URLToken.query("")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com/index.html?alpha=beta"`, () => {
|
|
nextTest("https://www.example.com/index.html?alpha=beta", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.path("/index.html"),
|
|
URLToken.query("alpha=beta")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com?"`, () => {
|
|
nextTest("https://www.example.com?", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.query("")
|
|
]);
|
|
});
|
|
|
|
it(`with "https://www.example.com?a=b"`, () => {
|
|
nextTest("https://www.example.com?a=b", [
|
|
URLToken.scheme("https"),
|
|
URLToken.host("www.example.com"),
|
|
URLToken.query("a=b")
|
|
]);
|
|
});
|
|
|
|
it(`with "www.test.com/"`, () => {
|
|
nextTest("www.test.com/", [
|
|
URLToken.host("www.test.com"),
|
|
URLToken.path("/")
|
|
]);
|
|
});
|
|
|
|
it(`with "www.test.com?"`, () => {
|
|
nextTest("www.test.com?", [
|
|
URLToken.host("www.test.com"),
|
|
URLToken.query("")
|
|
]);
|
|
});
|
|
|
|
it(`with "folder/index.html"`, () => {
|
|
nextTest("folder/index.html", [
|
|
URLToken.host("folder"),
|
|
URLToken.path("/index.html")
|
|
]);
|
|
});
|
|
|
|
it(`with "/folder/index.html"`, () => {
|
|
nextTest("/folder/index.html", [
|
|
URLToken.host(""),
|
|
URLToken.path("/folder/index.html")
|
|
]);
|
|
});
|
|
});
|
|
});
|