Files
return-youtube-dislike/webpack.discussion.spec.js
2026-10-17 21:42:01 +02:00

33 lines
1.5 KiB
JavaScript

const fs = require("node:fs");
const createBuild = require("./webpack.config");
function builtManifest(env) {
const build = createBuild(env, { mode: "production" });
const copy = build.plugins.find((plugin) => plugin.constructor.name === "CopyPlugin");
const transform = copy.patterns.find((pattern) => pattern.to === "./chrome/manifest.json").transform;
return JSON.parse(transform(fs.readFileSync("Extensions/combined/manifest-chrome.json"), "manifest-chrome.json"));
}
test("production packaging never adds a local discussion host", () => {
const manifest = builtManifest({});
expect(manifest.host_permissions).toEqual(["*://*.youtube.com/*", "*://returnyoutubedislikeapi.com/*"]);
expect(manifest.minimum_chrome_version).toBe("116");
expect(manifest.permissions).toContain("alarms");
expect(manifest.web_accessible_resources[0].resources).toContain("comments-bridge.js");
});
test("local discussion host is available only in an explicit isolated test build", () => {
expect(() => createBuild({ discussionTestOrigin: "http://127.0.0.1:5099" })).toThrow(/explicit live-test/);
for (const origin of [
"https://example.com",
"http://localhost/path",
"http://user@localhost",
"http://localhost?token=secret",
]) {
expect(() => createBuild({ liveTest: true, discussionTestOrigin: origin })).toThrow(/loopback HTTP origin/);
}
expect(builtManifest({ liveTest: true, discussionTestOrigin: "http://127.0.0.1:5099" }).host_permissions).toContain(
"http://127.0.0.1/*",
);
});