@fastly/as-url
Version:
 
109 lines (86 loc) • 3.2 kB
text/typescript
// Copyright 2020 Fastly, Inc.
import { URL } from "../url";
describe("Implement URL tests from https://url.spec.whatwg.org/#urls", () => {
test("https:example.org", () => {
let url = new URL("https:example.org");
expect(url.href).toBe("https://example.org/");
});
test("https://////example.com///", () => {
let url = new URL("https://////example.com///");
expect(url.href).toBe("https://example.com///");
});
test("https://example.com/././foo", () => {
let url = new URL("https://example.com/././foo");
expect(url.href).toBe("https://example.com/foo");
});
test("hello:world https://example.com/", () => {
let url = new URL("hello:world", "https://example.com/");
expect(url.href).toBe("hello:world");
});
test("https:example.org https://example.com/", () => {
let url = new URL("https:example.org", "https://example.com/");
expect(url.href).toBe("https://example.com/example.org");
});
test("\\example\\..\\demo/.\\ https://example.com/", () => {
let url = new URL("\\example\\..\\demo/.\\", "https://example.com/");
expect(url.href).toBe("https://example.com/demo/");
});
test("example https://example.com/demo", () => {
let url = new URL("example", "https://example.com/demo");
expect(url.href).toBe("https://example.com/example");
});
test("file:///C|/demo", () => {
let url = new URL("file:///C|/demo");
expect(url.protocol).toBe("file:");
expect(url.pathname).toBe("/C:/demo");
expect(url.href).toBe("file:///C:/demo");
});
test(".. file:///C:/demo", () => {
let url = new URL("..", "file:///C:/demo");
expect(url.href).toBe("file:///C:/");
});
test("file://loc%61lhost/", () => {
let url = new URL("file://loc%61lhost/");
expect(url.href).toBe("file:///");
});
test("https://user:password@example.org/", () => {
let url = new URL("https://user:password@example.org/");
expect(url.href).toBe("https://user:password@example.org/");
});
test("https://example.org/foo bar", () => {
let url = new URL("https://example.org/foo bar");
expect(url.href).toBe("https://example.org/foo%20bar");
});
test("https://EXAMPLE.com/../x", () => {
let url = new URL("https://EXAMPLE.com/../x");
expect(url.href).toBe("https://example.com/x");
});
test("https://ex ample.org/", () => {
let url = new URL("https://ex ample.org/");
expect(url.href).toBe("https://ex%20ample.org/");
});
test("example", () => {
expect(() => {
let url = new URL("example");
}).toThrow();
});
test("https://example.com:demo", () => {
expect(() => {
let url = new URL("https://example.com:demo");
}).toThrow();
});
test("http://[www.example.com]/", () => {
expect(() => {
let url = new URL("http://[www.example.com]/");
}).toThrow();
});
test("https://example.org//", () => {
let url = new URL("https://example.org//");
expect(url.href).toBe("https://example.org//");
});
test("https://////example.com///", () => {
let url = new URL("https://////example.com///");
// NOTE (torch2424): This .toBe fails
expect(url.href).toBe("https://example.com///");
});
});