UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

125 lines (124 loc) 4.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const getDigitalOceanDatabaseType_1 = require("../../../src/utils/getDigitalOceanDatabaseType"); 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 just returns the repository with docker.io/library/ prefix 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) => { // Simple mock that just returns the repository and tag if (image.tag) { return `${image.repository}:${image.tag}`; } return image.repository; }) })); vitest_1.vi.mock('../../../src/config/digitalocean/database-types', () => ({ digitalOceanDatabaseConfig: { databases: { 'docker.io/library/postgres': { engine: 'PG', description: 'PostgreSQL database service', portNumber: 5432, isManaged: true }, 'docker.io/library/mysql': { engine: 'MYSQL', description: 'MySQL database service', portNumber: 3306 }, 'docker.io/library/redis': { engine: 'REDIS', description: 'Redis database service', portNumber: 6379 }, 'docker.io/library/mongodb': { engine: 'MONGODB', description: 'MongoDB database service', portNumber: 27017 } } } })); (0, vitest_1.describe)('getDigitalOceanDatabaseType', () => { (0, vitest_1.test)('should return PostgreSQL config for postgres image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'postgres', tag: 'latest' }; const result = (0, getDigitalOceanDatabaseType_1.getDigitalOceanDatabaseType)(image); (0, vitest_1.expect)(result).toEqual({ engine: 'PG', description: 'PostgreSQL database service', portNumber: 5432, isManaged: true }); }); (0, vitest_1.test)('should return MySQL config for mysql image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'mysql', tag: '8.0' }; const result = (0, getDigitalOceanDatabaseType_1.getDigitalOceanDatabaseType)(image); (0, vitest_1.expect)(result).toEqual({ engine: 'MYSQL', description: 'MySQL database service', portNumber: 3306 }); }); (0, vitest_1.test)('should return Redis config for redis image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'redis', tag: 'alpine' }; const result = (0, getDigitalOceanDatabaseType_1.getDigitalOceanDatabaseType)(image); (0, vitest_1.expect)(result).toEqual({ engine: 'REDIS', description: 'Redis database service', portNumber: 6379 }); }); (0, vitest_1.test)('should return MongoDB config for mongodb image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'mongodb', tag: 'latest' }; const result = (0, getDigitalOceanDatabaseType_1.getDigitalOceanDatabaseType)(image); (0, vitest_1.expect)(result).toEqual({ engine: 'MONGODB', description: 'MongoDB database service', portNumber: 27017 }); }); (0, vitest_1.test)('should return null for non-database image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'nginx', tag: 'latest' }; const result = (0, getDigitalOceanDatabaseType_1.getDigitalOceanDatabaseType)(image); (0, vitest_1.expect)(result).toBeNull(); }); (0, vitest_1.test)('should return null for unknown database image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'cassandra', tag: 'latest' }; const result = (0, getDigitalOceanDatabaseType_1.getDigitalOceanDatabaseType)(image); (0, vitest_1.expect)(result).toBeNull(); }); });