UNPKG

condensation

Version:

Package, reuse and share particles for CloudFormation projects

123 lines (109 loc) 3.04 kB
var AWS = require('aws-sdk'); var _ = require('lodash'); var assert = require('assert'); var async = require('async'); var clone = require('clone'); var fs = require('fs'); var path = require('path'); exports.generateConfig = function(projectName,overrides) { var config = { tasks: [ 'build', 'build:0', 'clean', 'default', 'deploy', 'deploy:0', 's3:bucket:ensure:0', 's3:list', 's3:objects:write:0' ], distributionFiles: [], projectConfig: { s3: [ { aws: { region: 'us-east-1', bucket: '', }, validate: false, create: false } ], projectName: projectName, root: path.join('test','fixtures','projects',projectName), taskPrefix: '', dist: path.join('test','dist',projectName) } }; return _.merge(config,overrides); }; exports.shouldBehaveLikeAProject = function(options){ var gulp = options.gulp; before('check for AWS credentials', function(cb) { var self = this; var awsCreds = new AWS.CredentialProviderChain(); awsCreds.resolve(function(err) { if (!err) { process.env.FORCE_VALIDATE=true } cb(); }); }); beforeEach('create new gulp object', function() { gulp = clone(require('gulp')); require('../../').buildTasks( gulp, options.projectConfig ); }); after('clean the project', function(done) { var afterGulp = clone(require('gulp')); require('../../').buildTasks(afterGulp,options.projectConfig); afterGulp.start('clean'); afterGulp.on('stop',function(){ fs.lstat(options.projectConfig.dist, function(err, stats) { assert(err); done(); }); }); }); options.tasks.forEach(function(task) { it('should have a task named \''+task+'\'', function(done){ assert(_.indexOf(_.keys(gulp.tasks),task)>=0); done(); }); }); it('should build the project', function(done){ gulp.start('build'); gulp.on('stop',function(){ async.each( options.distributionFiles, function(file,cb) { fs.lstat(path.join(options.projectConfig.dist,file), function(err, stats) { assert.ifError(err); fs.readFile(path.join('test','fixtures','projects_output',options.projectConfig.projectName,file), function(err, validate) { assert.ifError(err); var source = fs.readFileSync(path.join(options.projectConfig.dist,file)); var isJson = true; try { source = JSON.parse(source); } catch(e) { isJson = false; } if (isJson) { assert.deepEqual(source,JSON.parse(validate)); } else { assert.equal(source.toString(),validate.toString()); } cb(); }); }); }, done ); }); }); };