clusterflux-public/scripts/cli-login-smoke.js
Disasmer release dry run 18d1701a77 Public dry run dryrun-b468a859465a
Source commit: b468a859465ae17a287d83b7ca1c5a86c5f1bdc6

Public tree identity: sha256:efc0a1cf2eb1044109ac7d5064062d83a63d7a54fe6aca62033efa6f74af14de
2026-07-01 16:05:04 +02:00

47 lines
1.9 KiB
JavaScript

#!/usr/bin/env node
const assert = require("assert");
const cp = require("child_process");
const path = require("path");
const repo = path.resolve(__dirname, "..");
const coordinator = "https://coord.example.test";
const defaultOperatorEndpoint = "https://disasmer.michelpaulissen.com:9443";
function disasmer(args) {
return JSON.parse(
cp.execFileSync(
"cargo",
["run", "-q", "-p", "disasmer-cli", "--bin", "disasmer", "--", ...args],
{ cwd: repo, encoding: "utf8" }
)
);
}
const device = disasmer(["login", "--coordinator", coordinator]);
assert.strictEqual(device.coordinator, coordinator);
assert(device.human_flow.Device, "default human login should use device flow");
assert.strictEqual(device.human_flow.Device.verification_url, `${coordinator}/auth/device`);
assert.match(device.human_flow.Device.user_code, /^DISASMER-[A-F0-9]{4}-[A-F0-9]{4}$/);
assert.match(device.human_flow.Device.device_code, /^sha256:[a-f0-9]{64}$/);
assert.strictEqual(device.human_flow.Device.expires_in_seconds, 900);
assert.strictEqual(device.human_flow.Device.yields_long_lived_secret_directly, false);
const defaultDevice = disasmer(["login"]);
assert.strictEqual(defaultDevice.coordinator, defaultOperatorEndpoint);
assert.strictEqual(
defaultDevice.human_flow.Device.verification_url,
`${defaultOperatorEndpoint}/auth/device`
);
const browser = disasmer(["login", "--browser", "--coordinator", coordinator]);
assert.strictEqual(browser.coordinator, coordinator);
assert(browser.human_flow.Browser, "browser login should be available for human users");
assert.strictEqual(
browser.human_flow.Browser.authorization_url,
`${coordinator}/auth/browser/start`
);
assert.match(browser.human_flow.Browser.callback_path, /^http:\/\/127\.0\.0\.1:\d+\/callback$/);
assert.match(browser.human_flow.Browser.state, /^sha256:[a-f0-9]{64}$/);
console.log("CLI login smoke passed");