@deploystack/docker-to-iac
Version:
Translate docker run and docker compose file to Infrastructure as Code
95 lines (94 loc) • 6.16 kB
JavaScript
;
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');
});
});
});