@spotinst/spinnaker-deck
Version:
Spinnaker-Deck service, forked with support to Spotinst
96 lines (88 loc) • 3.63 kB
text/typescript
import { IAmazonAsg, IAmazonServerGroup } from 'amazon/domain';
import { AutoScalingProcessService } from './AutoScalingProcessService';
describe('AutoScalingProcessService', () => {
describe('normalizeScalingProcesses', () => {
it('returns an empty list if no asg or suspendedProcesses present on server group', function () {
expect(AutoScalingProcessService.normalizeScalingProcesses({} as IAmazonServerGroup)).toEqual([]);
expect(AutoScalingProcessService.normalizeScalingProcesses({ asg: {} } as IAmazonServerGroup)).toEqual([]);
});
it('returns all processes normalized if suspendedProcesses is empty', function () {
const asg = {
suspendedProcesses: [],
} as IAmazonAsg;
const normalized = AutoScalingProcessService.normalizeScalingProcesses({ asg: asg } as IAmazonServerGroup);
expect(normalized.length).toBe(8);
expect(normalized.filter((process) => process.enabled).length).toBe(8);
expect(normalized.map((process) => process.name)).toEqual([
'Launch',
'Terminate',
'AddToLoadBalancer',
'AlarmNotification',
'AZRebalance',
'HealthCheck',
'ReplaceUnhealthy',
'ScheduledActions',
]);
expect(normalized.filter((process) => process.suspensionDate)).toEqual([]);
});
it('builds suspension date for suspended processes', function () {
const asg = {
suspendedProcesses: [
{
processName: 'Launch',
suspensionReason: 'User suspended at 2016-01-12T22:59:46Z',
},
],
};
const normalized = AutoScalingProcessService.normalizeScalingProcesses({ asg: asg } as IAmazonServerGroup);
expect(normalized.length).toBe(8);
expect(normalized.filter((process) => process.enabled).length).toBe(7);
expect(normalized.map((process) => process.name)).toEqual([
'Launch',
'Terminate',
'AddToLoadBalancer',
'AlarmNotification',
'AZRebalance',
'HealthCheck',
'ReplaceUnhealthy',
'ScheduledActions',
]);
expect(normalized.filter((process) => process.suspensionDate).length).toBe(1);
expect(normalized.filter((p) => p.suspensionDate).map((p) => p.suspensionDate)).toEqual([1452639586000]);
});
});
describe('getDisabledDate', function () {
it('returns null when server group is not disabled, regardless of suspended processes', function () {
const asg = {
suspendedProcesses: [
{
processName: 'AddToLoadBalancer',
suspensionReason: 'User suspended at 2016-01-12T22:59:46Z',
},
],
};
expect(AutoScalingProcessService.getDisabledDate({ asg: asg } as IAmazonServerGroup)).toBeNull();
});
it('returns null when server group is disabled but suspended process for AddToLoadBalancer not present', function () {
const asg = {
suspendedProcesses: [],
} as IAmazonAsg;
expect(
AutoScalingProcessService.getDisabledDate({ isDisabled: true, asg: asg } as IAmazonServerGroup),
).toBeNull();
});
it('returns suspension date when server group is disabled and AddToLoadBalancer suspended', function () {
const asg = {
suspendedProcesses: [
{
processName: 'AddToLoadBalancer',
suspensionReason: 'User suspended at 2016-01-12T22:59:46Z',
},
],
};
expect(AutoScalingProcessService.getDisabledDate({ isDisabled: true, asg: asg } as IAmazonServerGroup)).toEqual(
1452639586000,
);
});
});
});