@deploystack/docker-to-iac
Version:
Translate docker run and docker compose file to Infrastructure as Code
66 lines (65 loc) • 3.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const parseDockerImage_1 = require("../../../src/utils/parseDockerImage");
const base_parser_1 = require("../../../src/parsers/base-parser");
(0, vitest_1.describe)('parseDockerImage', () => {
(0, vitest_1.test)('should parse simple Docker Hub image', () => {
const result = (0, parseDockerImage_1.parseDockerImage)('nginx');
(0, vitest_1.expect)(result).toEqual({
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'nginx',
tag: 'latest'
});
});
(0, vitest_1.test)('should parse Docker Hub image with tag', () => {
const result = (0, parseDockerImage_1.parseDockerImage)('nginx:1.21');
(0, vitest_1.expect)(result).toEqual({
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'nginx',
tag: '1.21'
});
});
(0, vitest_1.test)('should parse Docker Hub image with organization', () => {
const result = (0, parseDockerImage_1.parseDockerImage)('bitnami/nginx:latest');
(0, vitest_1.expect)(result).toEqual({
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'bitnami/nginx',
tag: 'latest'
});
});
(0, vitest_1.test)('should parse GitHub Container Registry image', () => {
const result = (0, parseDockerImage_1.parseDockerImage)('ghcr.io/dagu-org/dagu:latest');
(0, vitest_1.expect)(result).toEqual({
registry_type: base_parser_1.RegistryType.GHCR,
registry: 'ghcr.io',
repository: 'dagu-org/dagu',
tag: 'latest'
});
});
(0, vitest_1.test)('should parse custom registry image', () => {
const result = (0, parseDockerImage_1.parseDockerImage)('registry.example.com/project/image:tag');
(0, vitest_1.expect)(result).toEqual({
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
registry: 'registry.example.com',
repository: 'project/image',
tag: 'tag'
});
});
(0, vitest_1.test)('should parse image with digest', () => {
const result = (0, parseDockerImage_1.parseDockerImage)('nginx@sha256:abcdef123456');
(0, vitest_1.expect)(result).toEqual({
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'nginx',
digest: 'sha256:abcdef123456'
});
});
(0, vitest_1.test)('should throw error for empty string', () => {
(0, vitest_1.expect)(() => (0, parseDockerImage_1.parseDockerImage)('')).toThrow('Docker image string cannot be empty');
});
(0, vitest_1.test)('should throw error for non-string input', () => {
(0, vitest_1.expect)(() => (0, parseDockerImage_1.parseDockerImage)(null)).toThrow('Docker image must be a string');
(0, vitest_1.expect)(() => (0, parseDockerImage_1.parseDockerImage)(undefined)).toThrow('Docker image must be a string');
(0, vitest_1.expect)(() => (0, parseDockerImage_1.parseDockerImage)({})).toThrow('Docker image must be a string');
});
});