UNPKG

@bugcrowd/briareus

Version:

Briareus assists with Feature Branch deploys to ECS

115 lines (92 loc) 2.83 kB
'use strict' const path = require('path'); const async = require('async'); const AWS = require('aws-sdk'); const AWS_Mock = require('aws-sdk-mock'); const request = require('request'); const mrDNA = require('mr-dna'); const sinon = require('sinon'); const serviceFixtures = require('./service/fixtures'); const logger = require('../lib/service/logger'); AWS_Mock.setSDK(path.resolve('node_modules/aws-sdk')); AWS.config.update({ region: 'us-east-1' }); afterEach(() => { sinon.restore(); }) let helpers = module.exports = { afterEach: () => AWS_Mock.restore(), service: () => { const Service = require('../lib/service'); before(function (cb) { async.series([ (done) => { helpers.service = Service(); helpers.service.start(done); } ], cb); }); beforeEach(helpers.dynamodbClean); after(function (cb) { helpers.service.destroy(cb); }); }, fakeCtx() { return { logData: {}, log: { debug: logger.debug.bind(logger) } } }, makeUrl(path) { return 'http://' + helpers.service.config.get('ip') + ':' + helpers.service.config.get('port') + path; }, makeAPIRequest(options, cb) { let headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' }; headers['Authorization'] = 'Basic ' + new Buffer('buildkite:' + helpers.service.config.get('apiToken')).toString('base64'); options = { method: 'GET', headers: headers, ...options }; options.uri = helpers.makeUrl(options.path); delete options.path; if (options.data) { options.body = JSON.stringify(options.data); delete options.data; } return request(options, function (err, res, body) { if (err) return cb(err); if (body && res.headers['content-type'] && res.headers['content-type'].indexOf('application/json') > -1) { body = JSON.parse(body); } return cb(err, res, body); }); }, dynamodbClean(cb) { let dynamodb = new AWS.DynamoDB(helpers.service.config.get('aws.dynamodb')); async.waterfall([ (next) => { dynamodb.listTables({}, (err, data) => { if (err) return next(err); if (data.TableNames.indexOf(helpers.service.config.get('dynamodb.table')) === -1) return next(); dynamodb.deleteTable({ TableName: helpers.service.config.get('dynamodb.table') }, (err, data) => { return next(err); }); }); }, (next) => { let params = mrDNA.generateCreateTableInput(serviceFixtures.dynamodbTableDescribe); dynamodb.createTable(params, (err, data) => next(err)); }, (next) => { dynamodb.batchWriteItem(serviceFixtures.briareusDeploymentItems, next); } ], cb); }, }