Files
my-pi/pi-ssh/test/config-cli.test.ts
T

36 lines
1.3 KiB
TypeScript

import assert from "node:assert/strict";
import { spawnSync } from "node:child_process";
import { mkdtempSync } from "node:fs";
import { tmpdir } from "node:os";
import { join, resolve } from "node:path";
import test from "node:test";
import { resolveVaultPaths, type PiSshConfig } from "../src/config.ts";
import { saveVault } from "../src/vault.ts";
const fixture: PiSshConfig = {
version: 1,
hosts: {
packaging: {
label: "Packaging",
hostName: "192.0.2.15",
user: "builder",
port: 22,
auth: { type: "password", password: "never-print-this" },
hostKey: { algorithm: "ssh-ed25519", fingerprint: "SHA256:fixture" },
},
},
};
test("the configuration CLI lists hosts without revealing credentials", () => {
const home = mkdtempSync(join(tmpdir(), "pi-ssh-cli-"));
const configHome = join(home, "config");
saveVault(fixture, resolveVaultPaths({ XDG_CONFIG_HOME: configHome }, process.platform, home));
const result = spawnSync(resolve("../ssh_config.sh"), ["list"], {
encoding: "utf8",
env: { ...process.env, HOME: home, XDG_CONFIG_HOME: configHome },
});
assert.equal(result.status, 0, result.stderr);
assert.match(result.stdout, /packaging\s+Packaging\s+builder@192\.0\.2\.15:22\s+password/);
assert.doesNotMatch(`${result.stdout}${result.stderr}`, /never-print-this/);
});