mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
feat(test): add test to prevent add hash to dokploy-network
This commit is contained in:
@@ -279,3 +279,55 @@ test("Add prefix to networks with static prefix", () => {
|
||||
) as ComposeSpecification;
|
||||
expect(networks).toStrictEqual(expectedComposeData.networks);
|
||||
});
|
||||
|
||||
const composeFile7 = `
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
web:
|
||||
image: nginx:latest
|
||||
networks:
|
||||
- dokploy-network
|
||||
|
||||
networks:
|
||||
dokploy-network:
|
||||
`;
|
||||
|
||||
const expectedComposeFile7 = `
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
web:
|
||||
image: nginx:latest
|
||||
networks:
|
||||
- dokploy-network
|
||||
|
||||
networks:
|
||||
dokploy-network:
|
||||
driver: bridge
|
||||
driver_opts:
|
||||
com.docker.network.driver.mtu: 1200
|
||||
|
||||
backend:
|
||||
driver: bridge
|
||||
attachable: true
|
||||
|
||||
external_network:
|
||||
external: true
|
||||
name: dokploy-network
|
||||
`;
|
||||
test("It shoudn't add prefix to dokploy-network", () => {
|
||||
const composeData = load(composeFile7) as ComposeSpecification;
|
||||
|
||||
const prefix = generateRandomHash();
|
||||
|
||||
if (!composeData?.networks) {
|
||||
return;
|
||||
}
|
||||
const networks = addPrefixToNetworksRoot(composeData.networks, prefix);
|
||||
|
||||
expect(networks).toBeDefined();
|
||||
for (const networkKey of Object.keys(networks)) {
|
||||
expect(networkKey).toContain("dokploy-network");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -182,3 +182,92 @@ test("Add prefix to networks in services (combined case)", () => {
|
||||
expect(redisNetworks).toHaveProperty(`backend-${prefix}`);
|
||||
expect(redisNetworks).not.toHaveProperty("backend");
|
||||
});
|
||||
|
||||
const composeFile7 = `
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
web:
|
||||
image: nginx:latest
|
||||
networks:
|
||||
- dokploy-network
|
||||
`;
|
||||
|
||||
test("It shoudn't add prefix to dokploy-network in services", () => {
|
||||
const composeData = load(composeFile7) as ComposeSpecification;
|
||||
|
||||
const prefix = generateRandomHash();
|
||||
|
||||
if (!composeData?.services) {
|
||||
return;
|
||||
}
|
||||
const networks = addPrefixToServiceNetworks(composeData.services, prefix);
|
||||
const service = networks.web;
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service?.networks).toContain("dokploy-network");
|
||||
});
|
||||
|
||||
const composeFile8 = `
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
web:
|
||||
image: nginx:latest
|
||||
networks:
|
||||
- frontend
|
||||
- backend
|
||||
- dokploy-network
|
||||
|
||||
|
||||
api:
|
||||
image: myapi:latest
|
||||
networks:
|
||||
frontend:
|
||||
aliases:
|
||||
- api
|
||||
dokploy-network:
|
||||
aliases:
|
||||
- api
|
||||
redis:
|
||||
image: redis:alpine
|
||||
networks:
|
||||
dokploy-network:
|
||||
db:
|
||||
image: myapi:latest
|
||||
networks:
|
||||
dokploy-network:
|
||||
aliases:
|
||||
- apid
|
||||
|
||||
`;
|
||||
|
||||
test("It shoudn't add prefix to dokploy-network in services multiples cases", () => {
|
||||
const composeData = load(composeFile8) as ComposeSpecification;
|
||||
|
||||
const prefix = generateRandomHash();
|
||||
|
||||
if (!composeData?.services) {
|
||||
return;
|
||||
}
|
||||
const networks = addPrefixToServiceNetworks(composeData.services, prefix);
|
||||
const service = networks.web;
|
||||
const api = networks.api;
|
||||
const redis = networks.redis;
|
||||
const db = networks.db;
|
||||
|
||||
const dbNetworks = db?.networks as {
|
||||
[key: string]: unknown;
|
||||
};
|
||||
|
||||
const apiNetworks = api?.networks as {
|
||||
[key: string]: unknown;
|
||||
};
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service?.networks).toContain("dokploy-network");
|
||||
|
||||
expect(redis?.networks).toHaveProperty("dokploy-network");
|
||||
expect(dbNetworks["dokploy-network"]).toBeDefined();
|
||||
expect(apiNetworks["dokploy-network"]).toBeDefined();
|
||||
});
|
||||
|
||||
@@ -254,3 +254,82 @@ test("Add prefix to networks in compose file with multiple services and complex
|
||||
|
||||
expect(updatedComposeData).toEqual(expectedComposeFile3);
|
||||
});
|
||||
|
||||
const composeFile4 = `
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: myapp:latest
|
||||
networks:
|
||||
frontend:
|
||||
aliases:
|
||||
- app
|
||||
backend:
|
||||
dokploy-network:
|
||||
|
||||
worker:
|
||||
image: worker:latest
|
||||
networks:
|
||||
- backend
|
||||
- dokploy-network
|
||||
|
||||
networks:
|
||||
frontend:
|
||||
driver: bridge
|
||||
attachable: true
|
||||
|
||||
backend:
|
||||
driver: bridge
|
||||
driver_opts:
|
||||
com.docker.network.bridge.enable_icc: "true"
|
||||
|
||||
dokploy-network:
|
||||
driver: bridge
|
||||
|
||||
`;
|
||||
|
||||
const expectedComposeFile4 = load(`
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: myapp:latest
|
||||
networks:
|
||||
frontend-testhash:
|
||||
aliases:
|
||||
- app
|
||||
backend-testhash:
|
||||
dokploy-network:
|
||||
|
||||
worker:
|
||||
image: worker:latest
|
||||
networks:
|
||||
- backend-testhash
|
||||
- dokploy-network
|
||||
|
||||
networks:
|
||||
frontend-testhash:
|
||||
driver: bridge
|
||||
attachable: true
|
||||
|
||||
backend-testhash:
|
||||
driver: bridge
|
||||
driver_opts:
|
||||
com.docker.network.bridge.enable_icc: "true"
|
||||
|
||||
dokploy-network:
|
||||
driver: bridge
|
||||
|
||||
|
||||
|
||||
`);
|
||||
|
||||
test("Expect don't add prefix to dokploy-network in compose file with multiple services and complex network configurations", () => {
|
||||
const composeData = load(composeFile4) as ComposeSpecification;
|
||||
|
||||
const prefix = "testhash";
|
||||
const updatedComposeData = addPrefixToAllNetworks(composeData, prefix);
|
||||
console.log(updatedComposeData);
|
||||
expect(updatedComposeData).toEqual(expectedComposeFile4);
|
||||
});
|
||||
|
||||
@@ -9,7 +9,12 @@ export const addPrefixToNetworksRoot = (
|
||||
networks: { [key: string]: DefinitionsNetwork },
|
||||
prefix: string,
|
||||
): { [key: string]: DefinitionsNetwork } => {
|
||||
return _.mapKeys(networks, (_value, key) => `${key}-${prefix}`);
|
||||
return _.mapKeys(networks, (_value, key) => {
|
||||
if (key === "dokploy-network") {
|
||||
return "dokploy-network";
|
||||
}
|
||||
return `${key}-${prefix}`;
|
||||
});
|
||||
};
|
||||
|
||||
export const addPrefixToServiceNetworks = (
|
||||
@@ -20,15 +25,20 @@ export const addPrefixToServiceNetworks = (
|
||||
if (service.networks) {
|
||||
// 1 Case the most common
|
||||
if (Array.isArray(service.networks)) {
|
||||
service.networks = service.networks.map(
|
||||
(network: string) => `${network}-${prefix}`,
|
||||
);
|
||||
service.networks = service.networks.map((network: string) => {
|
||||
if (network === "dokploy-network") {
|
||||
return "dokploy-network";
|
||||
}
|
||||
return `${network}-${prefix}`;
|
||||
});
|
||||
} else {
|
||||
// 2 Case
|
||||
service.networks = _.mapKeys(
|
||||
service.networks,
|
||||
(_value, key) => `${key}-${prefix}`,
|
||||
);
|
||||
service.networks = _.mapKeys(service.networks, (_value, key) => {
|
||||
if (key === "dokploy-network") {
|
||||
return "dokploy-network";
|
||||
}
|
||||
return `${key}-${prefix}`;
|
||||
});
|
||||
|
||||
// 3 Case
|
||||
service.networks = _.mapValues(service.networks, (value) => {
|
||||
@@ -40,6 +50,7 @@ export const addPrefixToServiceNetworks = (
|
||||
return `${innerKey}-${prefix}`;
|
||||
});
|
||||
}
|
||||
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user