mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 07:01:24 +00:00
refactor(exec-approvals): share socket default merge
This commit is contained in:
32
src/infra/exec-approvals.socket-defaults.test.ts
Normal file
32
src/infra/exec-approvals.socket-defaults.test.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { mergeExecApprovalsSocketDefaults, normalizeExecApprovals } from "./exec-approvals.js";
|
||||
|
||||
describe("mergeExecApprovalsSocketDefaults", () => {
|
||||
it("prefers normalized socket, then current, then default path", () => {
|
||||
const normalized = normalizeExecApprovals({
|
||||
version: 1,
|
||||
agents: {},
|
||||
socket: { path: "/tmp/a.sock", token: "a" },
|
||||
});
|
||||
const current = normalizeExecApprovals({
|
||||
version: 1,
|
||||
agents: {},
|
||||
socket: { path: "/tmp/b.sock", token: "b" },
|
||||
});
|
||||
const merged = mergeExecApprovalsSocketDefaults({ normalized, current });
|
||||
expect(merged.socket?.path).toBe("/tmp/a.sock");
|
||||
expect(merged.socket?.token).toBe("a");
|
||||
});
|
||||
|
||||
it("falls back to current token when missing in normalized", () => {
|
||||
const normalized = normalizeExecApprovals({ version: 1, agents: {} });
|
||||
const current = normalizeExecApprovals({
|
||||
version: 1,
|
||||
agents: {},
|
||||
socket: { path: "/tmp/b.sock", token: "b" },
|
||||
});
|
||||
const merged = mergeExecApprovalsSocketDefaults({ normalized, current });
|
||||
expect(merged.socket?.path).toBeTruthy();
|
||||
expect(merged.socket?.token).toBe("b");
|
||||
});
|
||||
});
|
||||
@@ -241,6 +241,24 @@ export function normalizeExecApprovals(file: ExecApprovalsFile): ExecApprovalsFi
|
||||
return normalized;
|
||||
}
|
||||
|
||||
export function mergeExecApprovalsSocketDefaults(params: {
|
||||
normalized: ExecApprovalsFile;
|
||||
current?: ExecApprovalsFile;
|
||||
}): ExecApprovalsFile {
|
||||
const currentSocketPath = params.current?.socket?.path?.trim();
|
||||
const currentToken = params.current?.socket?.token?.trim();
|
||||
const socketPath =
|
||||
params.normalized.socket?.path?.trim() ?? currentSocketPath ?? resolveExecApprovalsSocketPath();
|
||||
const token = params.normalized.socket?.token?.trim() ?? currentToken ?? "";
|
||||
return {
|
||||
...params.normalized,
|
||||
socket: {
|
||||
path: socketPath,
|
||||
token,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function generateToken(): string {
|
||||
return crypto.randomBytes(24).toString("base64url");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user