Files
portainer/app/react/azure/services/container-groups.service.test.ts
Ali 13b27cf77a feat(aci): environment variable support [r8s-675] (#1445)
Merging because the playwright tests don't relate to the container instance changes in this PR
2026-01-07 15:49:54 +13:00

113 lines
3.2 KiB
TypeScript

import { ContainerInstanceFormValues } from '@/react/azure/types';
import { ResourceControlOwnership } from '@/react/portainer/access-control/types';
import { transformToPayload } from './container-groups.service';
describe('transformToPayload', () => {
const baseFormValues: ContainerInstanceFormValues = {
name: 'test-container',
location: 'eastus',
subscription: 'sub1',
resourceGroup: 'rg1',
image: 'nginx:latest',
os: 'Linux',
memory: 1,
cpu: 1,
ports: [{ container: 80, host: 80, protocol: 'TCP' }],
allocatePublicIP: true,
accessControl: {
authorizedTeams: [],
authorizedUsers: [],
ownership: ResourceControlOwnership.PRIVATE,
},
env: [],
};
test('should include empty environment variables array when no env vars provided', () => {
const payload = transformToPayload(baseFormValues);
expect(
payload.properties.containers[0].properties.environmentVariables
).toEqual([]);
});
test('should include single environment variable in payload', () => {
const formValues = {
...baseFormValues,
env: [{ name: 'TEST_VAR', value: 'test-value' }],
};
const payload = transformToPayload(formValues);
expect(
payload.properties.containers[0].properties.environmentVariables
).toEqual([{ name: 'TEST_VAR', value: 'test-value' }]);
});
test('should include multiple environment variables in payload', () => {
const formValues = {
...baseFormValues,
env: [
{ name: 'VAR1', value: 'value1' },
{ name: 'VAR2', value: 'value2' },
{ name: 'VAR3', value: 'value3' },
],
};
const payload = transformToPayload(formValues);
expect(
payload.properties.containers[0].properties.environmentVariables
).toEqual([
{ name: 'VAR1', value: 'value1' },
{ name: 'VAR2', value: 'value2' },
{ name: 'VAR3', value: 'value3' },
]);
});
test('should preserve other container properties when adding env vars', () => {
const formValues: ContainerInstanceFormValues = {
...baseFormValues,
env: [{ name: 'APP_ENV', value: 'production' }],
ports: [
{ container: 80, host: 80, protocol: 'TCP' },
{ container: 443, host: 443, protocol: 'TCP' },
],
};
const payload = transformToPayload(formValues);
const containerProps = payload.properties.containers[0].properties;
expect(containerProps.image).toBe('nginx:latest');
expect(containerProps.ports).toHaveLength(2);
expect(containerProps.environmentVariables).toEqual([
{ name: 'APP_ENV', value: 'production' },
]);
});
test('should handle env vars with special characters', () => {
const formValues = {
...baseFormValues,
env: [
{
name: 'DB_CONNECTION_STRING',
value: 'Server=localhost;User=admin;Password=P@ss123',
},
{ name: 'API_KEY', value: 'abc123!@#$%^&*()' },
],
};
const payload = transformToPayload(formValues);
expect(
payload.properties.containers[0].properties.environmentVariables
).toEqual([
{
name: 'DB_CONNECTION_STRING',
value: 'Server=localhost;User=admin;Password=P@ss123',
},
{ name: 'API_KEY', value: 'abc123!@#$%^&*()' },
]);
});
});