mirror of
https://github.com/Pandipipas/scoreko-electron-dev.git
synced 2026-06-05 21:22:07 +00:00
58 lines
2.4 KiB
TypeScript
58 lines
2.4 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import path from "node:path";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
getApplicationPaths,
|
|
getDashboardUrl,
|
|
getManagedNodecgRuntimePath,
|
|
getNodecgBaseUrl,
|
|
getRootPath,
|
|
getSafeChildPath,
|
|
getSourceNodecgRuntimePath,
|
|
getUpdateDownloadDirectory,
|
|
getUserDataPath,
|
|
} from "../main/app/paths";
|
|
|
|
test("app path helpers build deterministic development paths and URLs", () => {
|
|
const compiledMainDir = path.join("repo", "dist", "main");
|
|
const rootPath = getRootPath(true, compiledMainDir, "/resources");
|
|
|
|
assert.equal(rootPath, path.resolve(compiledMainDir, "../.."));
|
|
assert.equal(getSourceNodecgRuntimePath(rootPath), path.resolve(rootPath, "lib", "nodecg"));
|
|
assert.equal(getUserDataPath("/app-data", "scoreko"), path.join("/app-data", "scoreko"));
|
|
assert.equal(getManagedNodecgRuntimePath("/app-data/scoreko"), path.join("/app-data/scoreko", "nodecg"));
|
|
assert.equal(getUpdateDownloadDirectory("/tmp"), path.join("/tmp", "scoreko-updates"));
|
|
assert.equal(getNodecgBaseUrl("9090"), "http://127.0.0.1:9090");
|
|
assert.equal(
|
|
getDashboardUrl("9090", "scoreko-dev", "dashboard/main.html?standalone=true"),
|
|
"http://localhost:9090/bundles/scoreko-dev/dashboard/main.html?standalone=true",
|
|
);
|
|
});
|
|
|
|
test("getApplicationPaths keeps packaged root under Electron resources", () => {
|
|
const paths = getApplicationPaths({
|
|
appConfig: {
|
|
userDataDirectoryName: "scoreko",
|
|
nodecgPort: "9090",
|
|
bundleName: "scoreko-dev",
|
|
mainDashboardRoute: "dashboard/scoreko-dev/main.html?standalone=true",
|
|
loadingDashboardRoute: "dashboard/loading/main.html?standalone=true",
|
|
},
|
|
appDataPath: "/users/test/AppData/Roaming",
|
|
compiledMainDir: "/app/dist/main",
|
|
isDev: false,
|
|
resourcesPath: "/opt/Scoreko/resources",
|
|
});
|
|
|
|
assert.equal(paths.rootPath, "/opt/Scoreko/resources");
|
|
assert.equal(paths.sourceNodecgRuntimePath, path.resolve("/opt/Scoreko/resources", "lib", "nodecg"));
|
|
assert.equal(paths.userDataPath, path.join("/users/test/AppData/Roaming", "scoreko"));
|
|
assert.equal(paths.nodecgBaseUrl, "http://127.0.0.1:9090");
|
|
});
|
|
|
|
test("getSafeChildPath rejects path traversal", () => {
|
|
assert.equal(getSafeChildPath("/tmp/scoreko-updates", "setup.exe"), path.resolve("/tmp/scoreko-updates/setup.exe"));
|
|
assert.throws(() => getSafeChildPath("/tmp/scoreko-updates", "../setup.exe"), /outside/);
|
|
});
|