@deploystack/docker-to-iac
Version:
Translate docker run and docker compose file to Infrastructure as Code
109 lines (108 loc) • 4.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const normalizeDigitalOceanImageInfo_1 = require("../../../src/utils/normalizeDigitalOceanImageInfo");
const base_parser_1 = require("../../../src/parsers/base-parser");
(0, vitest_1.describe)('normalizeDigitalOceanImageInfo', () => {
(0, vitest_1.test)('should normalize Docker Hub official image', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'nginx',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
(0, vitest_1.expect)(result).toEqual({
registry: 'library',
repository: 'nginx'
});
});
(0, vitest_1.test)('should normalize Docker Hub library format image', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'library/nginx',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
(0, vitest_1.expect)(result).toEqual({
registry: 'library',
repository: 'nginx'
});
});
(0, vitest_1.test)('should normalize Docker Hub user repository', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'bitnami/nginx',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
(0, vitest_1.expect)(result).toEqual({
registry: 'bitnami',
repository: 'nginx'
});
});
(0, vitest_1.test)('should handle custom registry', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
registry: 'custom.registry.com',
repository: 'project/app',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
// For non-Docker Hub registries, keep as is
(0, vitest_1.expect)(result).toEqual({
registry: 'custom.registry.com',
repository: 'project/app'
});
});
(0, vitest_1.test)('should handle image with docker.io registry path', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
registry: 'docker.io',
repository: 'user/app',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
(0, vitest_1.expect)(result).toEqual({
registry: 'user',
repository: 'app'
});
});
(0, vitest_1.test)('should handle image without registry', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'app',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
(0, vitest_1.expect)(result).toEqual({
registry: 'library',
repository: 'app'
});
});
(0, vitest_1.test)('should handle repository with multiple path segments', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'org/team/app',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
// Based on actual implementation, it only uses the first two segments
(0, vitest_1.expect)(result).toEqual({
registry: 'org',
repository: 'team'
});
});
(0, vitest_1.test)('should handle repository path edge cases', () => {
const image = {
registry_type: base_parser_1.RegistryType.DOCKER_HUB,
repository: 'org/',
tag: 'latest'
};
const result = (0, normalizeDigitalOceanImageInfo_1.normalizeDigitalOceanImageInfo)(image);
// Should handle trailing slash gracefully
(0, vitest_1.expect)(result).toEqual({
registry: 'org',
repository: 'org'
});
});
});