domain.test.ts

1.5 KB · raw

1import { describe, expect, it } from "vitest";2import { extractDomain } from "./domain";34/**5 * PB-26-901: the autofill origin control is registrable-domain equality, so the6 * matcher must separate tenants of a shared private suffix. Under tldts'7 * default every `*.github.io` host collapsed to `github.io`, making8 * octocat.github.io and evil.github.io compare equal.9 */10describe("extractDomain — private-suffix tenants stay distinct", () => {11  it("does not collapse two tenants of the same private suffix", () => {12    expect(extractDomain("https://octocat.github.io")).toBe("octocat.github.io");13    expect(extractDomain("https://evil.github.io")).toBe("evil.github.io");14    expect(extractDomain("https://octocat.github.io")).not.toBe(extractDomain("https://evil.github.io"));15  });1617  it("keeps each tenant's own sub-domains together", () => {18    expect(extractDomain("https://app.octocat.github.io")).toBe("octocat.github.io");19    expect(extractDomain("https://app.octocat.github.io")).toBe(extractDomain("https://octocat.github.io"));20  });2122  it("still unifies sub-domains of an ordinary registrable domain", () => {23    expect(extractDomain("https://sub.example.com")).toBe("example.com");24    expect(extractDomain("https://example.com")).toBe("example.com");25    expect(extractDomain("https://a.b.example.co.uk")).toBe("example.co.uk");26  });2728  it("still refuses a confusable host", () => {29    expect(extractDomain("https://github.com.evil.test")).not.toBe("github.com");30  });31});