UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

133 lines (132 loc) 5.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const isDigitalOceanManagedDatabase_1 = require("../../../src/utils/isDigitalOceanManagedDatabase"); const base_parser_1 = require("../../../src/parsers/base-parser"); // Mock dependencies vitest_1.vi.mock('../../../src/utils/getImageUrl', () => ({ getImageUrl: vitest_1.vi.fn((image) => { // Return predictable URLs based on the repository name if (typeof image === 'string') { const base = image.split(':')[0]; if (base.includes('postgres')) return 'docker.io/library/postgres'; if (base.includes('redis')) return 'docker.io/library/redis'; if (base.includes('mysql')) return 'docker.io/library/mysql'; if (base.includes('mariadb')) return 'docker.io/library/mariadb'; if (base.includes('mongodb')) return 'docker.io/library/mongodb'; return `docker.io/library/${base}`; } 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/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, isManaged: true }, 'docker.io/library/mongodb': { engine: 'MONGODB', description: 'MongoDB database service', portNumber: 27017 }, 'docker.io/library/mariadb': { engine: 'MYSQL', description: 'MariaDB database service', portNumber: 3306 } } } })); (0, vitest_1.describe)('isDigitalOceanManagedDatabase', () => { (0, vitest_1.test)('should return true for postgres image (managed)', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'postgres', tag: 'latest' }; const result = (0, isDigitalOceanManagedDatabase_1.isDigitalOceanManagedDatabase)(image); (0, vitest_1.expect)(result).toBe(true); }); (0, vitest_1.test)('should return true for redis image (managed)', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'redis', tag: 'alpine' }; const result = (0, isDigitalOceanManagedDatabase_1.isDigitalOceanManagedDatabase)(image); (0, vitest_1.expect)(result).toBe(true); }); (0, vitest_1.test)('should return false for mysql image (not managed)', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'mysql', tag: '8.0' }; const result = (0, isDigitalOceanManagedDatabase_1.isDigitalOceanManagedDatabase)(image); (0, vitest_1.expect)(result).toBe(false); }); (0, vitest_1.test)('should return false for mariadb image (not managed)', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'mariadb', tag: 'latest' }; const result = (0, isDigitalOceanManagedDatabase_1.isDigitalOceanManagedDatabase)(image); (0, vitest_1.expect)(result).toBe(false); }); (0, vitest_1.test)('should return false for mongodb image (not managed)', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'mongodb', tag: 'latest' }; const result = (0, isDigitalOceanManagedDatabase_1.isDigitalOceanManagedDatabase)(image); (0, vitest_1.expect)(result).toBe(false); }); (0, vitest_1.test)('should return false for non-database image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'nginx', tag: 'latest' }; const result = (0, isDigitalOceanManagedDatabase_1.isDigitalOceanManagedDatabase)(image); (0, vitest_1.expect)(result).toBe(false); }); (0, vitest_1.test)('should return false for unknown image', () => { const image = { registry_type: base_parser_1.RegistryType.DOCKER_HUB, repository: 'custom-database', tag: 'latest' }; const result = (0, isDigitalOceanManagedDatabase_1.isDigitalOceanManagedDatabase)(image); (0, vitest_1.expect)(result).toBe(false); }); });