UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

109 lines (108 loc) 4.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const getRenderServiceType_1 = require("../../../src/utils/getRenderServiceType"); const base_parser_1 = require("../../../src/parsers/base-parser"); // Mock dependencies vitest_1.vi.mock('../../../src/utils/getImageUrl', () => ({ getImageUrl: vitest_1.vi.fn((image) => { // Simplified mock that returns a standardized URL format if (typeof image === 'string') { return `docker.io/library/${image.split(':')[0]}`; } return 'docker.io/library/unknown'; }) })); vitest_1.vi.mock('../../../src/utils/constructImageString', () => ({ constructImageString: vitest_1.vi.fn((image) => { if (image.tag) { return `${image.repository}:${image.tag}`; } return image.repository; }) })); vitest_1.vi.mock('../../../src/config/render/service-types', () => ({ renderServiceTypesConfig: { serviceTypes: { 'docker.io/library/postgres': { type: 'database', description: 'PostgreSQL database', versions: '*', isManaged: true }, 'docker.io/library/mysql': { type: 'pserv', description: 'MySQL service', versions: '*' }, 'docker.io/library/redis': { type: 'redis', description: 'Redis service', versions: '*', isManaged: true }, 'docker.io/library/mariadb': { type: 'pserv', description: 'MariaDB service', versions: '*' } } } })); (0, vitest_1.describe)('getRenderServiceType', () => { (0, vitest_1.test)('should return database type for postgres image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'postgres', tag: 'latest' }; const result = (0, getRenderServiceType_1.getRenderServiceType)(image); (0, vitest_1.expect)(result).toBe('database'); }); (0, vitest_1.test)('should return pserv type for mysql image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'mysql', tag: '8.0' }; const result = (0, getRenderServiceType_1.getRenderServiceType)(image); (0, vitest_1.expect)(result).toBe('pserv'); }); (0, vitest_1.test)('should return redis type for redis image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'redis', tag: 'alpine' }; const result = (0, getRenderServiceType_1.getRenderServiceType)(image); (0, vitest_1.expect)(result).toBe('redis'); }); (0, vitest_1.test)('should return pserv type for mariadb image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'mariadb', tag: 'latest' }; const result = (0, getRenderServiceType_1.getRenderServiceType)(image); (0, vitest_1.expect)(result).toBe('pserv'); }); (0, vitest_1.test)('should return web type (default) for unknown image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'nginx', tag: 'latest' }; const result = (0, getRenderServiceType_1.getRenderServiceType)(image); (0, vitest_1.expect)(result).toBe('web'); }); (0, vitest_1.test)('should return web type for custom registry image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, registry: 'registry.example.com', repository: 'app', tag: 'latest' }; const result = (0, getRenderServiceType_1.getRenderServiceType)(image); (0, vitest_1.expect)(result).toBe('web'); }); });