import { describe, expect, it } from "vitest"; import { extractDomain } from "./domain"; /** * PB-26-901: the autofill origin control is registrable-domain equality, so the * matcher must separate tenants of a shared private suffix. Under tldts' * default every `*.github.io` host collapsed to `github.io`, making * octocat.github.io and evil.github.io compare equal. */ describe("extractDomain — private-suffix tenants stay distinct", () => { it("does not collapse two tenants of the same private suffix", () => { expect(extractDomain("https://octocat.github.io")).toBe("octocat.github.io"); expect(extractDomain("https://evil.github.io")).toBe("evil.github.io"); expect(extractDomain("https://octocat.github.io")).not.toBe(extractDomain("https://evil.github.io")); }); it("keeps each tenant's own sub-domains together", () => { expect(extractDomain("https://app.octocat.github.io")).toBe("octocat.github.io"); expect(extractDomain("https://app.octocat.github.io")).toBe(extractDomain("https://octocat.github.io")); }); it("still unifies sub-domains of an ordinary registrable domain", () => { expect(extractDomain("https://sub.example.com")).toBe("example.com"); expect(extractDomain("https://example.com")).toBe("example.com"); expect(extractDomain("https://a.b.example.co.uk")).toBe("example.co.uk"); }); it("still refuses a confusable host", () => { expect(extractDomain("https://github.com.evil.test")).not.toBe("github.com"); }); });