servant-cli
Version:
Command line tool for building Commands with Servant (http://www.getservant.com)
124 lines (96 loc) • 3.59 kB
JavaScript
var chai = require('chai');
var program = require('commander');
var fs = require('fs');
var Hoek = require('hoek');
var lambda = require('../lib/main');
var os = require('os');
var fs = require('fs');
var _ = require('lodash');
var admzip = require('adm-zip');
var assert = chai.assert;
var originalProgram = {
environment: 'development',
accessKey: 'key',
secretKey: 'secret',
functionName: 'node-lambda',
handler: 'index.handler',
mode: 'event',
role: 'some:arn:aws:iam::role',
memorySize: 128,
timeout: 3,
description: '',
runtime: 'nodejs',
region: 'us-east-1,us-west-2,eu-west-1'
};
var codeDirectory = lambda._codeDirectory(program);
describe('servant', function() {
beforeEach(function() {
program = Hoek.clone(originalProgram);
});
it('version should be set', function() {
assert.equal(lambda.version, '0.0.1');
});
// describe('_params', function() {
// it('appends version to original functionName', function() {
// program.version = '2015-02-01';
// var params = lambda._params(program);
// assert.equal(params.FunctionName, 'node-lambda-development-2015-02-01');
// });
// });
describe('_zipfileTmpPath', function() {
it('has the correct path', function() {
var zipfileTmpPath = lambda._zipfileTmpPath(program);
var value = zipfileTmpPath.indexOf(program.functionName) > 0;
assert.equal(value, true);
});
});
describe('_rsync', function() {
it('rsync an index.js as well as other files', function(done) {
lambda._rsync(program, codeDirectory, function(err, result) {
var contents = fs.readdirSync(codeDirectory);
var result = _.includes(contents, 'index.js');
assert.equal(result, true);
done();
});
});
});
describe('_npmInstall', function() {
beforeEach(function(done) {
lambda._rsync(program, codeDirectory, function(err, result) {
done();
});
});
it('_npm adds node_modules', function(done) {
this.timeout(60000); // give it time to build the node modules
lambda._npmInstall(program, codeDirectory, function(err, result) {
var contents = fs.readdirSync(codeDirectory);
var result = _.includes(contents, 'index.js');
assert.equal(result, true);
done();
});
});
});
describe('_zip', function() {
beforeEach(function(done) {
this.timeout(30000); // give it time to build the node modules
lambda._rsync(program, codeDirectory, function(err, result) {
lambda._npmInstall(program, codeDirectory, function(err, result) {
done();
});
});
});
it('zips the file and has an index.js file', function(done) {
this.timeout(30000); // give it time to zip
lambda._zip(program, codeDirectory, function(err, zipfilePath) {
var zip = new admzip(zipfilePath);
var zipEntries = zip.getEntries();
var contents = _.map(zipEntries, function(entry) {
return entry.entryName.toString()
});
var result = _.includes(contents, 'index.js');
assert.equal(result, true);
done();
});
});
});
});