UNPKG

3.49 kBJavaScriptView Raw
1'use strict';
2
3const test = require('ava');
4const yaml = require('js-yaml');
5const has = require('lodash.has');
6const Config = require('../index').Config;
7const utils = require('../index').utils;
8const AWS = require('aws-sdk');
9
10test('should load local env variables', (t) => {
11 const envs = utils.loadLocalEnvs('examples/lambdas/.env');
12 t.is(process.env.TIMEOUT, '100');
13 t.is(envs.TIMEOUT, '100');
14});
15
16test('should not error when env file doesnt exist', (t) => {
17 const envs = utils.loadLocalEnvs('blahblah/.env');
18 t.true(envs.PATH !== undefined);
19});
20
21test('Get the filename from the handler', (t) => {
22 let r = utils.getZipName('my-lambda.zip');
23 t.is(r, 'my-lambda');
24
25 r = utils.getZipName('my-lambda.jpg.zip');
26 t.is(r, 'my-lambda');
27});
28
29test('Test reading a file as string', (t) => {
30 let r = utils.fileToString('README.md');
31 t.true(r.includes('# Kes'));
32
33 r = utils.fileToString('some random text');
34 t.is(r, 'some random text');
35});
36
37test('Test merging yaml files', (t) => {
38 let merged = utils.mergeYamls('tests/data/file1.yaml', 'tests/data/file2.yaml');
39 let obj = yaml.safeLoad(merged);
40
41 t.is(obj.secondKey, 'value5');
42 t.is(obj.forthKey.length, 3);
43 t.is(obj.forthKey[0], 'value4');
44 t.is(obj.thirdKey.firstKey, 'value10');
45
46 merged = utils.mergeYamls('tests/data/file2.yaml', 'tests/data/file1.yaml');
47 obj = yaml.safeLoad(merged);
48
49 t.is(obj.secondKey, 'value2');
50 t.is(obj.forthKey.length, 3);
51 t.is(obj.forthKey[0], 'value1');
52});
53
54test('configuring aws', (t) => {
55 utils.configureAws('us-west-2');
56 t.is(AWS.config.region, 'us-west-2');
57
58 utils.configureAws(null, 'myProfile');
59 t.is(AWS.config.credentials.profile, 'myProfile');
60
61 utils.configureAws(null, null, 'myRole');
62 t.is(AWS.config.credentials.params.RoleArn, 'myRole');
63});
64
65test('create a config instance', (t) => {
66 const config = new Config({
67 kesFolder: 'examples/lambdas'
68 });
69
70 t.is(config.stack, 'my-kes-project');
71 t.is(Object.keys(config.lambdas).length, 2);
72 t.is(config.lambdas.func1.fullName, 'my-kes-project-func1');
73
74 // make sure envs are added even if lambdas don't include them
75 t.is(Object.keys(config.lambdas.func1.envs).length, 0);
76 t.is(config.lambdas.func2.envs.CUSTOM_ENV, 'myValue');
77});
78
79test('create a config instance with non default deployment', (t) => {
80 const config = new Config({
81 kesFolder: 'examples/lambdas',
82 deployment: 'kesTestDeployment',
83 region: 'us-east-3'
84 });
85
86 t.is(config.stack, 'kes-test-project-prod');
87 t.is(config.region, 'us-east-3');
88});
89
90test('test api gateway configuration', (t) => {
91 const config = new Config({
92 kesFolder: 'examples/full'
93 });
94
95 t.is(config.lambdas.length, 5);
96 t.true(has(config, 'apiMethods'));
97 t.true(has(config, 'apiResources'));
98 t.true(has(config, 'apiMethodsOptions'));
99 t.true(has(config, 'apiDependencies'));
100});
101
102test('passing variables as configuration values', (t) => {
103 const config1 = new Config({
104 kesFolder: 'examples/full'
105 });
106
107 t.is(config1.sqs[0].retry, '10');
108
109 const config2 = new Config({
110 kesFolder: 'examples/full',
111 deployment: 'staging'
112 });
113
114 t.is(config2.sqs[0].retry, '20');
115});
116
117test('config with template', (t) => {
118 const config = new Config({
119 kesFolder: 'examples/app_using_template',
120 template: 'examples/template',
121 deployment: 'kesTestDeployment'
122 });
123
124 t.is(config.stackName, 'kes-test-using-template');
125 t.is(config.bucket, 'devseed-kes-deployment');
126 t.is(config.bucket, config.system_bucket);
127});