mirror of https://github.com/portainer/portainer
281 lines
5.5 KiB
TypeScript
281 lines
5.5 KiB
TypeScript
![]() |
import { toViewModel } from './toViewModel';
|
||
|
|
||
|
test('basic', () => {
|
||
|
expect(
|
||
|
toViewModel([
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 22,
|
||
|
PublishedPort: 222,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 3000,
|
||
|
PublishedPort: 3000,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
])
|
||
|
).toStrictEqual([
|
||
|
{
|
||
|
hostPort: 222,
|
||
|
containerPort: 22,
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
hostPort: 3000,
|
||
|
containerPort: 3000,
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
test('already combined', () => {
|
||
|
expect(
|
||
|
toViewModel([
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 80,
|
||
|
PublishedPort: 7000,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 80,
|
||
|
PublishedPort: 7001,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 80,
|
||
|
PublishedPort: 7002,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 80,
|
||
|
PublishedPort: 7003,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 80,
|
||
|
PublishedPort: 7004,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 80,
|
||
|
PublishedPort: 7005,
|
||
|
PublishMode: 'ingress',
|
||
|
},
|
||
|
])
|
||
|
).toStrictEqual([
|
||
|
{
|
||
|
hostPort: {
|
||
|
start: 7000,
|
||
|
end: 7005,
|
||
|
},
|
||
|
containerPort: 80,
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
test('simple combine ports', () => {
|
||
|
expect(
|
||
|
toViewModel([
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 74,
|
||
|
PublishedPort: 81,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
TargetPort: 75,
|
||
|
PublishedPort: 82,
|
||
|
},
|
||
|
])
|
||
|
).toStrictEqual([
|
||
|
{
|
||
|
hostPort: {
|
||
|
start: 81,
|
||
|
end: 82,
|
||
|
},
|
||
|
containerPort: {
|
||
|
start: 74,
|
||
|
end: 75,
|
||
|
},
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
test('combine and sort', () => {
|
||
|
expect(
|
||
|
toViewModel([
|
||
|
{ Protocol: 'tcp', TargetPort: 3244, PublishedPort: 105 },
|
||
|
{ Protocol: 'tcp', TargetPort: 3245, PublishedPort: 106 },
|
||
|
{ Protocol: 'tcp', TargetPort: 81, PublishedPort: 81 },
|
||
|
{ Protocol: 'tcp', TargetPort: 82, PublishedPort: 82 },
|
||
|
{ Protocol: 'tcp', TargetPort: 83 },
|
||
|
{ Protocol: 'tcp', TargetPort: 84 },
|
||
|
])
|
||
|
).toStrictEqual([
|
||
|
{
|
||
|
hostPort: { start: 81, end: 82 },
|
||
|
containerPort: { start: 81, end: 82 },
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
hostPort: undefined,
|
||
|
containerPort: {
|
||
|
start: 83,
|
||
|
end: 84,
|
||
|
},
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
hostPort: { start: 105, end: 106 },
|
||
|
containerPort: { start: 3244, end: 3245 },
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
test('empty input', () => {
|
||
|
expect(toViewModel([])).toStrictEqual([]);
|
||
|
});
|
||
|
|
||
|
test('invalid input', () => {
|
||
|
expect(() =>
|
||
|
toViewModel(
|
||
|
// @ts-expect-error testing invalid input
|
||
|
{ Name: 'invalid', Protocol: 'tcp', TargetPort: 22, PublishedPort: 222 }
|
||
|
)
|
||
|
).toThrow();
|
||
|
});
|
||
|
|
||
|
test('mixed protocols', () => {
|
||
|
expect(
|
||
|
toViewModel([
|
||
|
{ Protocol: 'tcp', TargetPort: 22, PublishedPort: 222 },
|
||
|
{ Protocol: 'udp', TargetPort: 23, PublishedPort: 223 },
|
||
|
])
|
||
|
).toStrictEqual([
|
||
|
{
|
||
|
containerPort: 22,
|
||
|
hostPort: 222,
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
containerPort: 23,
|
||
|
hostPort: 223,
|
||
|
protocol: 'udp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
test('non-sequential ports', () => {
|
||
|
expect(
|
||
|
toViewModel([
|
||
|
{ Protocol: 'tcp', TargetPort: 22, PublishedPort: 222 },
|
||
|
{ Protocol: 'tcp', TargetPort: 24, PublishedPort: 224 },
|
||
|
])
|
||
|
).toStrictEqual([
|
||
|
{
|
||
|
containerPort: 22,
|
||
|
hostPort: 222,
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
{
|
||
|
containerPort: 24,
|
||
|
hostPort: 224,
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
},
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
test('without host', () => {
|
||
|
expect(
|
||
|
toViewModel([
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39003,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39010,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39007,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39008,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39000,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39001,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39002,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39004,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39005,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39006,
|
||
|
},
|
||
|
{
|
||
|
Protocol: 'tcp',
|
||
|
PublishMode: 'ingress',
|
||
|
TargetPort: 39009,
|
||
|
},
|
||
|
])
|
||
|
).toStrictEqual([
|
||
|
{
|
||
|
protocol: 'tcp',
|
||
|
publishMode: 'ingress',
|
||
|
containerPort: {
|
||
|
start: 39000,
|
||
|
end: 39010,
|
||
|
},
|
||
|
hostPort: undefined,
|
||
|
},
|
||
|
]);
|
||
|
});
|