83 lines
2.3 KiB
TypeScript
83 lines
2.3 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
|
|
import { CreateContainerRequest } from '../types';
|
|
|
|
import { toRequest } from './toRequest';
|
|
import { Values } from './types';
|
|
|
|
describe('toRequest', () => {
|
|
const mockOldConfig: CreateContainerRequest = {
|
|
Hostname: 'old-hostname',
|
|
Domainname: 'old-domain',
|
|
MacAddress: '02:42:ac:11:00:99',
|
|
HostConfig: {
|
|
NetworkMode: 'bridge',
|
|
Dns: ['1.1.1.1'],
|
|
ExtraHosts: [],
|
|
},
|
|
NetworkingConfig: {
|
|
EndpointsConfig: {
|
|
bridge: {
|
|
Aliases: [],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const mockValues: Values = {
|
|
networkMode: 'bridge',
|
|
hostname: 'new-hostname',
|
|
domain: 'new-domain',
|
|
macAddress: '02:42:ac:11:00:88',
|
|
ipv4Address: '172.17.0.5',
|
|
ipv6Address: 'fe80::42:acff:fe11:5',
|
|
primaryDns: '8.8.8.8',
|
|
secondaryDns: '8.8.4.4',
|
|
hostsFileEntries: ['host1:127.0.0.1'],
|
|
container: '',
|
|
};
|
|
|
|
it('should use MAC address from values, not from oldConfig', () => {
|
|
const oldMacAddress = '02:42:ac:11:00:99';
|
|
const macAddress = '02:42:ac:11:00:88';
|
|
const result = toRequest(
|
|
{ ...mockOldConfig, MacAddress: oldMacAddress },
|
|
{ ...mockValues, macAddress },
|
|
'container-123'
|
|
);
|
|
|
|
expect(result.MacAddress).toBe(macAddress);
|
|
expect(result.MacAddress).not.toBe(oldMacAddress);
|
|
});
|
|
|
|
it('should allow empty MAC address when duplicating containers', () => {
|
|
const valuesWithEmptyMac: Values = {
|
|
...mockValues,
|
|
macAddress: '', // Empty MAC from toViewModel
|
|
};
|
|
|
|
const result = toRequest(
|
|
mockOldConfig,
|
|
valuesWithEmptyMac,
|
|
'container-123'
|
|
);
|
|
|
|
expect(result.MacAddress).toBe('');
|
|
expect(result.MacAddress).not.toBe(mockOldConfig.MacAddress);
|
|
});
|
|
|
|
it('should set other network properties from values', () => {
|
|
const result = toRequest(mockOldConfig, mockValues, 'container-123');
|
|
|
|
expect(result.Hostname).toBe('new-hostname');
|
|
expect(result.Domainname).toBe('new-domain');
|
|
expect(result.HostConfig.NetworkMode).toBe('bridge');
|
|
expect(result.HostConfig.Dns).toEqual(['8.8.8.8', '8.8.4.4']);
|
|
expect(result.HostConfig.ExtraHosts).toEqual(['host1:127.0.0.1']);
|
|
expect(result.NetworkingConfig.EndpointsConfig?.bridge.IPAMConfig).toEqual({
|
|
IPv4Address: '172.17.0.5',
|
|
IPv6Address: 'fe80::42:acff:fe11:5',
|
|
});
|
|
});
|
|
});
|