- handle malformed plain-text SSE payloads safely - normalize Docker socket permission errors - verify authoritative deployment job status - preserve deployment logs on failure
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { formatDeploymentErrorMessage } from "../../src/server/services/ssh-services/docker-containers.ts";
|
|
import {
|
|
DOCKER_ACCESS_DENIED_MESSAGE,
|
|
parseDockerJson,
|
|
} from "../../src/server/services/ssh-services/internal/docker.ts";
|
|
|
|
test("Docker socket permission failures have an actionable deployment error", () => {
|
|
const message = formatDeploymentErrorMessage(
|
|
new Error(
|
|
"permission denied while trying to connect to the docker API at unix:///var/run/docker.sock",
|
|
),
|
|
);
|
|
|
|
assert.match(message, /Docker access was denied/i);
|
|
assert.match(message, /docker group/i);
|
|
assert.doesNotMatch(message, /Unexpected token|not valid JSON/i);
|
|
});
|
|
|
|
test("Docker JSON parsing reports socket permission failures before JSON errors", () => {
|
|
assert.throws(
|
|
() =>
|
|
parseDockerJson(
|
|
"permission denied while trying to connect to the docker API at unix:///var/run/docker.sock",
|
|
"Docker image inspection",
|
|
),
|
|
{ message: DOCKER_ACCESS_DENIED_MESSAGE },
|
|
);
|
|
});
|
|
|
|
test("Docker JSON parsing hides malformed raw output", () => {
|
|
assert.throws(
|
|
() => parseDockerJson("not-json", "Docker image inspection"),
|
|
{ message: "Docker image inspection returned an invalid response from Docker" },
|
|
);
|
|
});
|