-
-
Notifications
You must be signed in to change notification settings - Fork 261
Expand file tree
/
Copy pathdocker-image-client.test.ts
More file actions
47 lines (41 loc) · 1.49 KB
/
Copy pathdocker-image-client.test.ts
File metadata and controls
47 lines (41 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import Dockerode from "dockerode";
import { Readable } from "stream";
import { DockerImageClient } from "./docker-image-client";
describe("DockerImageClient", () => {
it("rejects when the Docker image build cannot start", async () => {
const dockerode = {
buildImage: vi.fn((stream: Readable) => {
stream.destroy();
return Promise.reject(new Error("build failed"));
}),
} as unknown as Dockerode;
const imageClient = new DockerImageClient(dockerode, "");
const result = await Promise.race([
imageClient.build(__dirname, { t: "image" }).then(
() => "resolved",
() => "rejected"
),
new Promise((resolve) => setTimeout(() => resolve("timeout"), 100)),
]);
expect(result).toBe("rejected");
});
it("rejects when the Docker image build stream errors", async () => {
const buildStream = new Readable({ read() {} });
const dockerode = {
buildImage: vi.fn((stream: Readable) => {
stream.destroy();
setTimeout(() => buildStream.destroy(new Error("build failed")), 0);
return Promise.resolve(buildStream);
}),
} as unknown as Dockerode;
const imageClient = new DockerImageClient(dockerode, "");
const result = await Promise.race([
imageClient.build(__dirname, { t: "image" }).then(
() => "resolved",
() => "rejected"
),
new Promise((resolve) => setTimeout(() => resolve("timeout"), 100)),
]);
expect(result).toBe("rejected");
});
});