UNPKG

briareus

Version:

Briareus assists with Feature Branch deploys to ECS

105 lines (91 loc) 3.45 kB
'use strict' const expect = require('expect.js'); const AWS = require('aws-sdk-mock'); const helpers = require('../../helpers'); const fixtures = require('../fixtures/ecs-task-definitions'); const CreateBuildEcsTaskDefinition = require('../../../lib/service/actions/create-build-ecs-task-definition'); describe('Action:CreateBuildEcsTaskDefinition', function () { afterEach(helpers.afterEach); it('should create the build ecs task definition', function (done) { let taskDefinitionArn = 'arn:task-definition:44' let payload = { name: 'briareus-variant', slug: 'my-branch', taskDefinition: fixtures['standard'], image: 'app:123', awsAccountId: '987', endpoint: { host: 'x.bugcrowd.engineering' }, variantsLogGroup: 'ecs.briareus-variants', assets: { ssmParameters: { a: { id: 'app/DB_PASSWORD', arn: 'arn:parameter:/briareus/x/app/DB_PASSWORD', path: '/briareus/x/app/DB_PASSWORD', name: 'DB_PASSWORD', container: 'app', }, b: { id: 'worker/DB_PASSWORD', arn: 'arn:parameter:/briareus/x/worker/DB_PASSWORD', path: '/briareus/x/worker/DB_PASSWORD', name: 'DB_PASSWORD', container: 'worker', }, } }, envs: [ { id: `app/HOST`, scope: 'y', container: 'app', name: 'HOST', value: '${endpoint.host}' }, { id: `app/AWS_ACCOUNT_ID`, scope: 'y', container: 'app', name: 'AWS_ACCOUNT_ID', value: '${aws_account_id}' } ] }; AWS.mock('ECS', 'registerTaskDefinition', function (params, cb) { expect(params.family).to.equal(payload.name); let appContainer = params.containerDefinitions[0]; expect(appContainer.image).to.equal(payload.image); let appSecrets = appContainer.secrets; expect(appSecrets.length).to.equal(1); expect(appSecrets).to.eql([ { name: 'DB_PASSWORD', valueFrom: payload.assets.ssmParameters.a.arn } ]); // Ensure env vars are set expect(appContainer.environment[0].name).to.equal('HOST'); expect(appContainer.environment[0].value).to.equal(payload.endpoint.host); expect(appContainer.environment[1].name).to.equal('AWS_ACCOUNT_ID'); expect(appContainer.environment[1].value).to.equal(payload.awsAccountId); // Ensure Logging configuration is set expect(appContainer.logConfiguration.logDriver).to.equal('awslogs'); expect(appContainer.logConfiguration.options['awslogs-region']).to.equal('us-east-1'); expect(appContainer.logConfiguration.options['awslogs-group']).to.equal(payload.variantsLogGroup); expect(appContainer.logConfiguration.options['awslogs-stream-prefix']).to.equal(payload.slug); cb(null, { taskDefinition: { taskDefinitionArn: taskDefinitionArn } }); }); CreateBuildEcsTaskDefinition({}, payload, (err, patches) => { expect(err).to.equal(null); expect(patches[0]).to.eql({ op: 'add', path: '/assets/buildTaskDefinition', value: { arn: taskDefinitionArn } }); expect(patches[1]).to.eql({ op: 'add', path: '/assets/taskDefinitions/-', value: { arn: taskDefinitionArn } }); done(); }) }); });