UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

109 lines (108 loc) 4.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const normalizeDigitalOceanImageInfo_1 = require("../../../src/utils/normalizeDigitalOceanImageInfo"); const base_parser_1 = require("../../../src/parsers/base-parser"); (0, vitest_1.describe)('normalizeDigitalOceanImageInfo', () => { (0, vitest_1.test)('should normalize Docker Hub official image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'nginx', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); (0, vitest_1.expect)(result).toEqual({ registry: 'library', repository: 'nginx' }); }); (0, vitest_1.test)('should normalize Docker Hub library format image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'library/nginx', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); (0, vitest_1.expect)(result).toEqual({ registry: 'library', repository: 'nginx' }); }); (0, vitest_1.test)('should normalize Docker Hub user repository', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'bitnami/nginx', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); (0, vitest_1.expect)(result).toEqual({ registry: 'bitnami', repository: 'nginx' }); }); (0, vitest_1.test)('should handle custom registry', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, registry: 'custom.registry.com', repository: 'project/app', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); // For non-Docker Hub registries, keep as is (0, vitest_1.expect)(result).toEqual({ registry: 'custom.registry.com', repository: 'project/app' }); }); (0, vitest_1.test)('should handle image with docker.io registry path', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, registry: 'docker.io', repository: 'user/app', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); (0, vitest_1.expect)(result).toEqual({ registry: 'user', repository: 'app' }); }); (0, vitest_1.test)('should handle image without registry', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'app', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); (0, vitest_1.expect)(result).toEqual({ registry: 'library', repository: 'app' }); }); (0, vitest_1.test)('should handle repository with multiple path segments', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'org/team/app', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); // Based on actual implementation, it only uses the first two segments (0, vitest_1.expect)(result).toEqual({ registry: 'org', repository: 'team' }); }); (0, vitest_1.test)('should handle repository path edge cases', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'org/', tag: 'latest' }; const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image); // Should handle trailing slash gracefully (0, vitest_1.expect)(result).toEqual({ registry: 'org', repository: 'org' }); }); });