mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-12 18:51:12 +00:00
refactor(exec-approvals): unify system.run binding and generate host env policy
This commit is contained in:
@@ -19,26 +19,44 @@ function parseSwiftStringArray(source: string, marker: string): string[] {
|
||||
}
|
||||
|
||||
describe("host env security policy parity", () => {
|
||||
it("keeps macOS HostEnvSanitizer lists in sync with shared JSON policy", () => {
|
||||
it("keeps generated macOS host env policy in sync with shared JSON policy", () => {
|
||||
const repoRoot = process.cwd();
|
||||
const policyPath = path.join(repoRoot, "src/infra/host-env-security-policy.json");
|
||||
const swiftPath = path.join(repoRoot, "apps/macos/Sources/OpenClaw/HostEnvSanitizer.swift");
|
||||
const generatedSwiftPath = path.join(
|
||||
repoRoot,
|
||||
"apps/macos/Sources/OpenClaw/HostEnvSecurityPolicy.generated.swift",
|
||||
);
|
||||
const sanitizerSwiftPath = path.join(
|
||||
repoRoot,
|
||||
"apps/macos/Sources/OpenClaw/HostEnvSanitizer.swift",
|
||||
);
|
||||
|
||||
const policy = JSON.parse(fs.readFileSync(policyPath, "utf8")) as HostEnvSecurityPolicy;
|
||||
const swiftSource = fs.readFileSync(swiftPath, "utf8");
|
||||
const generatedSource = fs.readFileSync(generatedSwiftPath, "utf8");
|
||||
const sanitizerSource = fs.readFileSync(sanitizerSwiftPath, "utf8");
|
||||
|
||||
const swiftBlockedKeys = parseSwiftStringArray(swiftSource, "private static let blockedKeys");
|
||||
const swiftBlockedKeys = parseSwiftStringArray(generatedSource, "static let blockedKeys");
|
||||
const swiftBlockedOverrideKeys = parseSwiftStringArray(
|
||||
swiftSource,
|
||||
"private static let blockedOverrideKeys",
|
||||
generatedSource,
|
||||
"static let blockedOverrideKeys",
|
||||
);
|
||||
const swiftBlockedPrefixes = parseSwiftStringArray(
|
||||
swiftSource,
|
||||
"private static let blockedPrefixes",
|
||||
generatedSource,
|
||||
"static let blockedPrefixes",
|
||||
);
|
||||
|
||||
expect(swiftBlockedKeys).toEqual(policy.blockedKeys);
|
||||
expect(swiftBlockedOverrideKeys).toEqual(policy.blockedOverrideKeys ?? []);
|
||||
expect(swiftBlockedPrefixes).toEqual(policy.blockedPrefixes);
|
||||
|
||||
expect(sanitizerSource).toContain(
|
||||
"private static let blockedKeys = HostEnvSecurityPolicy.blockedKeys",
|
||||
);
|
||||
expect(sanitizerSource).toContain(
|
||||
"private static let blockedOverrideKeys = HostEnvSecurityPolicy.blockedOverrideKeys",
|
||||
);
|
||||
expect(sanitizerSource).toContain(
|
||||
"private static let blockedPrefixes = HostEnvSecurityPolicy.blockedPrefixes",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user