UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

95 lines (94 loc) 6.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const connection_properties_1 = require("../../../src/config/connection-properties"); (0, vitest_1.describe)('connection-properties', () => { (0, vitest_1.describe)('servicePropertyMappings', () => { (0, vitest_1.test)('should have correct mapping for host property', () => { (0, vitest_1.expect)(connection_properties_1.servicePropertyMappings.host).toEqual({ render: 'host', digitalOcean: 'PRIVATE_DOMAIN' }); }); (0, vitest_1.test)('should have correct mapping for port property', () => { (0, vitest_1.expect)(connection_properties_1.servicePropertyMappings.port).toEqual({ render: 'port', digitalOcean: 'PRIVATE_PORT' }); }); (0, vitest_1.test)('should have correct mapping for hostport property', () => { (0, vitest_1.expect)(connection_properties_1.servicePropertyMappings.hostport).toEqual({ render: 'hostport', digitalOcean: 'PRIVATE_URL' }); }); }); (0, vitest_1.describe)('databasePropertyMappings', () => { (0, vitest_1.test)('should have correct mapping for connectionString property', () => { (0, vitest_1.expect)(connection_properties_1.databasePropertyMappings.connectionString).toEqual({ render: 'connectionString', digitalOcean: 'DATABASE_URL' }); }); (0, vitest_1.test)('should have correct mapping for username property', () => { (0, vitest_1.expect)(connection_properties_1.databasePropertyMappings.username).toEqual({ render: 'user', digitalOcean: 'USERNAME' }); }); (0, vitest_1.test)('should have correct mapping for password property', () => { (0, vitest_1.expect)(connection_properties_1.databasePropertyMappings.password).toEqual({ render: 'password', digitalOcean: 'PASSWORD' }); }); (0, vitest_1.test)('should have correct mapping for databaseName property', () => { (0, vitest_1.expect)(connection_properties_1.databasePropertyMappings.databaseName).toEqual({ render: 'database', digitalOcean: 'DATABASE' }); }); }); (0, vitest_1.describe)('getPropertyForProvider', () => { (0, vitest_1.test)('should return correct property for Render service properties', () => { (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('host', 'render', false)).toBe('host'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('port', 'render', false)).toBe('port'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('hostport', 'render', false)).toBe('hostport'); }); (0, vitest_1.test)('should return correct property for DigitalOcean service properties', () => { (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('host', 'digitalOcean', false)).toBe('PRIVATE_DOMAIN'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('port', 'digitalOcean', false)).toBe('PRIVATE_PORT'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('hostport', 'digitalOcean', false)).toBe('PRIVATE_URL'); }); (0, vitest_1.test)('should return correct property for Render database properties', () => { (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('connectionString', 'render', true)).toBe('connectionString'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('username', 'render', true)).toBe('user'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('password', 'render', true)).toBe('password'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('databaseName', 'render', true)).toBe('database'); }); (0, vitest_1.test)('should return correct property for DigitalOcean database properties', () => { (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('connectionString', 'digitalOcean', true)).toBe('DATABASE_URL'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('username', 'digitalOcean', true)).toBe('USERNAME'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('password', 'digitalOcean', true)).toBe('PASSWORD'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('databaseName', 'digitalOcean', true)).toBe('DATABASE'); }); (0, vitest_1.test)('should handle unknown properties', () => { // Create a spy on console.warn const warnSpy = vitest_1.vi.spyOn(console, 'warn').mockImplementation(() => { }); // Test with unknown property const result = (0, connection_properties_1.getPropertyForProvider)('unknownProperty', 'render', false); // Verify console warning was called (0, vitest_1.expect)(warnSpy).toHaveBeenCalledWith('Unknown property: unknownProperty. Using as-is.'); // Verify original property is returned (0, vitest_1.expect)(result).toBe('unknownProperty'); // Restore console.warn warnSpy.mockRestore(); }); (0, vitest_1.test)('should use passed property as fallback', () => { // This tests the behavior where if the property doesn't exist in the mapping // it should return the original property (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('custom', 'render', false)).toBe('custom'); (0, vitest_1.expect)((0, connection_properties_1.getPropertyForProvider)('custom', 'digitalOcean', true)).toBe('custom'); }); }); });