// The X login source and its read-time default (release 16 slice XL). // // Run with: pnpm --filter yt-dlp-transcript-common exec tsx --test social/xCookieSource.test.ts import { test } from "node:test"; import assert from "node:assert/strict"; import { isXCookieSource, parseBrowserSpec, resolveXCookieSource, sanitizeSocial, xCookieSourceLabel, } from "./xCookieSource"; test("the default: browser when cookiesFromBrowser is set and no profile is connected", () => { assert.deepEqual(resolveXCookieSource({ browserSpec: "firefox", profileConnected: false }), { source: "browser", chosen: false, browserSpec: "firefox", }); }); test("the default: profile when a profile is connected, even with cookiesFromBrowser set", () => { assert.deepEqual(resolveXCookieSource({ browserSpec: "firefox", profileConnected: true }), { source: "profile", chosen: false, browserSpec: "firefox", }); }); test("the default: profile when cookiesFromBrowser is empty", () => { for (const browserSpec of [undefined, "", " "]) { assert.deepEqual(resolveXCookieSource({ browserSpec, profileConnected: false }), { source: "profile", chosen: false, browserSpec: undefined, }); } }); test("a stored choice always wins over the default", () => { assert.deepEqual( resolveXCookieSource({ stored: "profile", browserSpec: "firefox", profileConnected: false }), { source: "profile", chosen: true, browserSpec: "firefox" }, ); assert.deepEqual( resolveXCookieSource({ stored: "browser", browserSpec: "firefox", profileConnected: true }), { source: "browser", chosen: true, browserSpec: "firefox" }, ); // Chosen with nothing to read: still the browser, and the label says why it // will not log in. const r = resolveXCookieSource({ stored: "browser", browserSpec: "", profileConnected: true }); assert.deepEqual(r, { source: "browser", chosen: true, browserSpec: undefined }); assert.equal(xCookieSourceLabel(r), "Browser login (no cookiesFromBrowser set)"); }); test("the labels", () => { assert.equal( xCookieSourceLabel({ source: "browser", chosen: false, browserSpec: "firefox" }), "Browser login (firefox)", ); assert.equal(xCookieSourceLabel({ source: "profile", chosen: true }), "Connected profile"); }); test("isXCookieSource and sanitizeSocial", () => { assert.equal(isXCookieSource("browser"), true); assert.equal(isXCookieSource("profile"), true); assert.equal(isXCookieSource("firefox"), false); assert.equal(isXCookieSource(undefined), false); assert.deepEqual(sanitizeSocial(undefined), { x: {} }); assert.deepEqual(sanitizeSocial({ x: { cookieSource: "profile" } }), { x: { cookieSource: "profile" } }); assert.deepEqual(sanitizeSocial({ x: { cookieSource: "auto" } }), { x: {} }); }); test("parseBrowserSpec reads yt-dlp's and gallery-dl's syntax", () => { assert.deepEqual(parseBrowserSpec("firefox"), { browser: "firefox" }); assert.deepEqual(parseBrowserSpec("Firefox"), { browser: "firefox" }); assert.deepEqual(parseBrowserSpec("chrome:Default"), { browser: "chrome", profile: "Default" }); assert.deepEqual(parseBrowserSpec("firefox:/home/u/.mozilla/firefox/abc.default"), { browser: "firefox", profile: "/home/u/.mozilla/firefox/abc.default", }); assert.deepEqual(parseBrowserSpec("firefox::Work"), { browser: "firefox", container: "Work" }); assert.deepEqual(parseBrowserSpec("firefox:abc.default::none"), { browser: "firefox", profile: "abc.default", container: "none", }); assert.deepEqual(parseBrowserSpec("chromium+gnomekeyring:Profile 1"), { browser: "chromium", keyring: "gnomekeyring", profile: "Profile 1", }); // gallery-dl's /DOMAIN. assert.deepEqual(parseBrowserSpec("firefox/.x.com:default"), { browser: "firefox", domain: ".x.com", profile: "default", }); assert.equal(parseBrowserSpec(""), null); assert.equal(parseBrowserSpec(":profile"), null); });