mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
82 lines
1.9 KiB
TypeScript
82 lines
1.9 KiB
TypeScript
import { generateRandomHash } from "@/server/utils/docker/compose";
|
|
import { addSuffixToVolumesInServices } from "@/server/utils/docker/compose/volume";
|
|
import type { ComposeSpecification } from "@/server/utils/docker/types";
|
|
import { load } from "js-yaml";
|
|
import { expect, test } from "vitest";
|
|
|
|
test("Generate random hash with 8 characters", () => {
|
|
const hash = generateRandomHash();
|
|
|
|
expect(hash).toBeDefined();
|
|
expect(hash.length).toBe(8);
|
|
});
|
|
|
|
const composeFile1 = `
|
|
version: "3.8"
|
|
|
|
services:
|
|
db:
|
|
image: postgres:latest
|
|
volumes:
|
|
- db_data:/var/lib/postgresql/data
|
|
`;
|
|
|
|
test("Add suffix to volumes declared directly in services", () => {
|
|
const composeData = load(composeFile1) as ComposeSpecification;
|
|
|
|
const suffix = generateRandomHash();
|
|
|
|
if (!composeData.services) {
|
|
return;
|
|
}
|
|
|
|
const updatedComposeData = addSuffixToVolumesInServices(
|
|
composeData.services,
|
|
suffix,
|
|
);
|
|
const actualComposeData = { ...composeData, services: updatedComposeData };
|
|
expect(actualComposeData.services?.db?.volumes).toContain(
|
|
`db_data-${suffix}:/var/lib/postgresql/data`,
|
|
);
|
|
});
|
|
|
|
const composeFileTypeVolume = `
|
|
version: "3.8"
|
|
|
|
services:
|
|
db:
|
|
image: postgres:latest
|
|
volumes:
|
|
- type: volume
|
|
source: db-test
|
|
target: /var/lib/postgresql/data
|
|
|
|
volumes:
|
|
db-test:
|
|
driver: local
|
|
`;
|
|
|
|
test("Add suffix to volumes declared directly in services (Case 2)", () => {
|
|
const composeData = load(composeFileTypeVolume) as ComposeSpecification;
|
|
|
|
const suffix = generateRandomHash();
|
|
|
|
if (!composeData.services) {
|
|
return;
|
|
}
|
|
|
|
const updatedComposeData = addSuffixToVolumesInServices(
|
|
composeData.services,
|
|
suffix,
|
|
);
|
|
const actualComposeData = { ...composeData, services: updatedComposeData };
|
|
|
|
expect(actualComposeData.services?.db?.volumes).toEqual([
|
|
{
|
|
type: "volume",
|
|
source: `db-test-${suffix}`,
|
|
target: "/var/lib/postgresql/data",
|
|
},
|
|
]);
|
|
});
|