48 lines
2.1 KiB
JavaScript
48 lines
2.1 KiB
JavaScript
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const { createWebAuth } = require("../src/services/web-auth");
|
|
|
|
function request({ hostname = "example.test", user = null, path = "/plugins/okf" } = {}) {
|
|
return { hostname, path, session: { user }, get: () => hostname };
|
|
}
|
|
|
|
function response() {
|
|
return {
|
|
redirectedTo: null,
|
|
redirect(target) { this.redirectedTo = target; return target; }
|
|
};
|
|
}
|
|
|
|
const noPlatforms = createWebAuth({ getPlatformStatus: () => [] });
|
|
let res = response();
|
|
noPlatforms.requireAuth(request(), res, () => assert.fail("Anonymous request should not continue"));
|
|
assert.equal(res.redirectedTo, "/setup");
|
|
|
|
res = response();
|
|
noPlatforms.requireAuth(request({ hostname: "127.0.0.1" }), res, () => assert.fail("Anonymous request should not continue"));
|
|
assert.equal(res.redirectedTo, "/auth/localhost");
|
|
|
|
const discordAuth = createWebAuth({ getPlatformStatus: () => [{
|
|
supported: true, enabled: true, configured: true, supportsLogin: true, loginPath: "/auth/discord"
|
|
}] });
|
|
res = response();
|
|
discordAuth.requireAuth(request(), res, () => assert.fail("Anonymous request should not continue"));
|
|
assert.equal(res.redirectedTo, "/auth/discord");
|
|
|
|
let continued = false;
|
|
discordAuth.requireAuth(request({ user: { id: "user-1" } }), response(), () => { continued = true; });
|
|
assert.equal(continued, true);
|
|
|
|
res = response();
|
|
noPlatforms.requireConfigured(request(), res, () => assert.fail("Unconfigured remote plugin request should not continue"));
|
|
assert.equal(res.redirectedTo, "/setup");
|
|
|
|
const root = path.join(__dirname, "..");
|
|
const okf = fs.readFileSync(path.join(root, "plugins", "okf", "index.js"), "utf8");
|
|
const server = fs.readFileSync(path.join(root, "src", "web", "server.js"), "utf8");
|
|
assert(okf.includes("const requireLogin = web.auth.requireAuth"));
|
|
assert.equal(okf.includes('res.redirect("/login")'), false);
|
|
assert(server.includes("app.use(mountPath, webAuth.requireConfigured, router)"));
|
|
console.log("Shared WebUI authentication verification passed: setup, localhost, configured provider, and OKF wiring.");
|