test: consolidate sandbox docker merge scenarios

This commit is contained in:
Peter Steinberger
2026-02-23 22:01:22 +00:00
parent 8b192beaaf
commit 287586206c

View File

@@ -42,55 +42,67 @@ describe("sandbox config merges", () => {
}); });
}); });
it("merges sandbox docker binds (global + agent combined)", async () => { it("resolves docker binds and shared-scope override behavior", async () => {
const resolved = resolveSandboxDockerConfig({ for (const scenario of [
scope: "agent", {
globalDocker: { name: "merges sandbox docker binds (global + agent combined)",
binds: ["/var/run/docker.sock:/var/run/docker.sock"], input: {
scope: "agent" as const,
globalDocker: {
binds: ["/var/run/docker.sock:/var/run/docker.sock"],
},
agentDocker: {
binds: ["/home/user/source:/source:rw"],
},
},
assert: (resolved: ReturnType<typeof resolveSandboxDockerConfig>) => {
expect(resolved.binds).toEqual([
"/var/run/docker.sock:/var/run/docker.sock",
"/home/user/source:/source:rw",
]);
},
}, },
agentDocker: { {
binds: ["/home/user/source:/source:rw"], name: "returns undefined binds when neither global nor agent has binds",
input: {
scope: "agent" as const,
globalDocker: {},
agentDocker: {},
},
assert: (resolved: ReturnType<typeof resolveSandboxDockerConfig>) => {
expect(resolved.binds).toBeUndefined();
},
}, },
}); {
name: "ignores agent binds under shared scope",
expect(resolved.binds).toEqual([ input: {
"/var/run/docker.sock:/var/run/docker.sock", scope: "shared" as const,
"/home/user/source:/source:rw", globalDocker: {
]); binds: ["/var/run/docker.sock:/var/run/docker.sock"],
}); },
agentDocker: {
it("returns undefined binds when neither global nor agent has binds", async () => { binds: ["/home/user/source:/source:rw"],
const resolved = resolveSandboxDockerConfig({ },
scope: "agent", },
globalDocker: {}, assert: (resolved: ReturnType<typeof resolveSandboxDockerConfig>) => {
agentDocker: {}, expect(resolved.binds).toEqual(["/var/run/docker.sock:/var/run/docker.sock"]);
}); },
expect(resolved.binds).toBeUndefined();
});
it("ignores agent binds under shared scope", async () => {
const resolved = resolveSandboxDockerConfig({
scope: "shared",
globalDocker: {
binds: ["/var/run/docker.sock:/var/run/docker.sock"],
}, },
agentDocker: { {
binds: ["/home/user/source:/source:rw"], name: "ignores agent docker overrides under shared scope",
input: {
scope: "shared" as const,
globalDocker: { image: "global" },
agentDocker: { image: "agent" },
},
assert: (resolved: ReturnType<typeof resolveSandboxDockerConfig>) => {
expect(resolved.image).toBe("global");
},
}, },
}); ]) {
const resolved = resolveSandboxDockerConfig(scenario.input);
expect(resolved.binds).toEqual(["/var/run/docker.sock:/var/run/docker.sock"]); scenario.assert(resolved);
}); }
it("ignores agent docker overrides under shared scope", async () => {
const resolved = resolveSandboxDockerConfig({
scope: "shared",
globalDocker: { image: "global" },
agentDocker: { image: "agent" },
});
expect(resolved.image).toBe("global");
}); });
it("applies per-agent browser and prune overrides (ignored under shared scope)", async () => { it("applies per-agent browser and prune overrides (ignored under shared scope)", async () => {