portainer/app/react/edge/components/EdgeScriptForm/scripts.test.ts

295 lines
6.4 KiB
TypeScript

import {
buildLinuxPodmanCommand,
buildLinuxStandaloneCommand,
buildLinuxSwarmCommand,
buildLinuxKubernetesCommand,
buildWindowsStandaloneCommand,
buildWindowsSwarmCommand,
} from './scripts';
import { ScriptFormValues } from './types';
describe.each([
{
name: 'buildLinuxStandaloneCommand',
builder: buildLinuxStandaloneCommand,
defaultProperties: {
allowSelfSignedCertificates: false,
authEnabled: false,
edgeGroupsIds: [],
edgeIdGenerator: '',
envVars: '',
group: 0,
os: 'linux' as const,
platform: 'standalone' as const,
tagsIds: [],
tlsEnabled: false,
},
edgeIdGeneratorValue: 'uuidgen',
},
{
name: 'buildLinuxPodmanCommand',
builder: buildLinuxPodmanCommand,
defaultProperties: {
allowSelfSignedCertificates: false,
authEnabled: false,
edgeGroupsIds: [],
edgeIdGenerator: '',
envVars: '',
group: 0,
os: 'linux' as const,
platform: 'podman' as const,
tagsIds: [],
tlsEnabled: false,
},
edgeIdGeneratorValue: 'uuidgen',
},
{
name: 'buildLinuxSwarmCommand',
builder: buildLinuxSwarmCommand,
defaultProperties: {
allowSelfSignedCertificates: false,
authEnabled: false,
edgeGroupsIds: [],
edgeIdGenerator: '',
envVars: '',
group: 0,
os: 'linux' as const,
platform: 'swarm' as const,
tagsIds: [],
tlsEnabled: false,
},
edgeIdGeneratorValue: 'uuidgen',
},
{
name: 'buildLinuxKubernetesCommand',
builder: buildLinuxKubernetesCommand,
defaultProperties: {
allowSelfSignedCertificates: false,
authEnabled: false,
edgeGroupsIds: [],
edgeIdGenerator: '',
envVars: '',
group: 0,
os: 'linux' as const,
platform: 'k8s' as const,
tagsIds: [],
tlsEnabled: false,
},
edgeIdGeneratorValue: 'uuidgen',
},
{
name: 'buildWindowsStandaloneCommand',
builder: buildWindowsStandaloneCommand,
defaultProperties: {
allowSelfSignedCertificates: false,
authEnabled: false,
edgeGroupsIds: [],
edgeIdGenerator: '',
envVars: '',
group: 0,
os: 'win' as const,
platform: 'standalone' as const,
tagsIds: [],
tlsEnabled: false,
},
edgeIdGeneratorValue: 'Get-MachineGUID',
},
{
name: 'buildWindowsSwarmCommand',
builder: buildWindowsSwarmCommand,
defaultProperties: {
allowSelfSignedCertificates: false,
authEnabled: false,
edgeGroupsIds: [],
edgeIdGenerator: '',
envVars: '',
group: 0,
os: 'win' as const,
platform: 'swarm' as const,
tagsIds: [],
tlsEnabled: false,
},
edgeIdGeneratorValue: 'Get-MachineGUID',
},
])('$name', ({ builder, defaultProperties, edgeIdGeneratorValue }) => {
it('should generate basic command with minimal configuration', () => {
const command = builder(
'2.19.0',
'test-edge-key',
defaultProperties,
false,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with async mode enabled', () => {
const command = builder(
'2.19.0',
'test-edge-key',
defaultProperties,
true,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with self-signed certificates allowed', () => {
const properties: ScriptFormValues = {
...defaultProperties,
allowSelfSignedCertificates: true,
};
const command = builder(
'2.19.0',
'test-edge-key',
properties,
false,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with edge ID generator', () => {
const properties: ScriptFormValues = {
...defaultProperties,
edgeIdGenerator: edgeIdGeneratorValue,
};
const command = builder(
'2.19.0',
'test-edge-key',
properties,
false,
undefined,
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with custom environment variables', () => {
const properties: ScriptFormValues = {
...defaultProperties,
envVars: 'MY_VAR=value1,ANOTHER_VAR=value2',
};
const command = builder(
'2.19.0',
'test-edge-key',
properties,
false,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with edge groups', () => {
const properties: ScriptFormValues = {
...defaultProperties,
edgeGroupsIds: [1, 2, 3],
};
const command = builder(
'2.19.0',
'test-edge-key',
properties,
false,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with portainer group', () => {
const properties: ScriptFormValues = {
...defaultProperties,
group: 5,
};
const command = builder(
'2.19.0',
'test-edge-key',
properties,
false,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with tags', () => {
const properties: ScriptFormValues = {
...defaultProperties,
tagsIds: [10, 20, 30],
};
const command = builder(
'2.19.0',
'test-edge-key',
properties,
false,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command with all meta variables', () => {
const properties: ScriptFormValues = {
...defaultProperties,
edgeGroupsIds: [1, 2],
group: 5,
tagsIds: [10, 20],
};
const command = builder(
'2.19.0',
'test-edge-key',
properties,
false,
'test-edge-id',
'test-secret'
);
expect(command).toMatchSnapshot();
});
it('should generate command without agent secret', () => {
const command = builder(
'2.19.0',
'test-edge-key',
defaultProperties,
false,
'test-edge-id',
undefined
);
expect(command).toMatchSnapshot();
});
it('should generate command with empty agent secret', () => {
const command = builder(
'2.19.0',
'test-edge-key',
defaultProperties,
false,
'test-edge-id',
''
);
expect(command).toMatchSnapshot();
});
});