UNPKG

@fastly/as-url

Version:

![npm version](https://img.shields.io/npm/v/@fastly/as-url) ![npm downloads per month](https://img.shields.io/npm/dm/@fastly/as-url)

109 lines (86 loc) 3.2 kB
// 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///"); }); });