mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 17:14:57 +00:00
test: consolidate sandbox docker merge scenarios
This commit is contained in:
@@ -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 () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user