briareus
Version:
Briareus assists with Feature Branch deploys to ECS
82 lines (69 loc) • 2.07 kB
JavaScript
const expect = require('expect.js');
const AWS = require('aws-sdk-mock');
const _ = require('lodash');
const helpers = require('../../helpers');
const CreateAlbRule = require('../../../lib/service/actions/create-alb-rule');
describe('Action:AddAlbRule', function () {
afterEach(helpers.afterEach);
let host = 'build.bugcrowd.engineering';
let targetGroupArn = 'arn:target-group:1';
let albListenerArn = 'arn:alb:listener:1';
let albRuleArn = 'arn:alb:rule:1';
let payloadData = {
slug: 'my-branch',
alb: {
listenerArn: albListenerArn,
},
assets: {
targetGroup: { arn: targetGroupArn },
}
}
it('should add rule to ALB listener', function (done) {
AWS.mock('ELBv2', 'createRule', function (params, cb) {
expect(params.Actions[0].TargetGroupArn).to.equal(targetGroupArn);
expect(params.Conditions[0].Values[0]).to.equal(`*${host}`);
expect(params.ListenerArn).to.equal(albListenerArn);
expect(params.Priority).to.be.a('number');
cb(null, {
Rules: [
{
RuleArn: albRuleArn
}
]
});
});
let payload = _.clone(payloadData);
payload.endpoint = { host };
CreateAlbRule({}, payload, (err, patches) => {
expect(err).to.equal(null);
expect(patches[0]).to.eql({ op: 'add', path: '/assets/albRule', value: { arn: albRuleArn } });
done();
})
});
it('should select another priority if first priority is taken', function (done) {
let calls = 0;
AWS.mock('ELBv2', 'createRule', function (params, cb) {
let err = null;
if (calls === 0) {
err = new Error();
err.code = 'PriorityInUse';
}
calls++;
cb(err, {
Rules: [
{
RuleArn: albRuleArn
}
]
});
});
let payload = _.clone(payloadData);
payload.endpoint = { host };
CreateAlbRule({}, payload, (err, patches) => {
expect(err).to.equal(null);
expect(calls).to.equal(2);
done();
})
});
});