Files
doktainer-upstream/tests/backend/deployment-error-format.test.ts
T
KodekaTeam 73b4b6255d fix(deploy): normalize Docker access errors and harden SSE parsing
- handle malformed plain-text SSE payloads safely
- normalize Docker socket permission errors
- verify authoritative deployment job status
- preserve deployment logs on failure
2026-07-19 12:54:52 +07:00

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" },
);
});