1 | 'use strict';
|
2 |
|
3 | const test = require('ava');
|
4 | const yaml = require('js-yaml');
|
5 | const has = require('lodash.has');
|
6 | const Config = require('../index').Config;
|
7 | const utils = require('../index').utils;
|
8 | const AWS = require('aws-sdk');
|
9 |
|
10 | test('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 |
|
16 | test('should not error when env file doesnt exist', (t) => {
|
17 | const envs = utils.loadLocalEnvs('blahblah/.env');
|
18 | t.true(envs.PATH !== undefined);
|
19 | });
|
20 |
|
21 | test('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 |
|
29 | test('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 |
|
37 | test('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 |
|
54 | test('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 |
|
65 | test('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 |
|
75 | t.is(Object.keys(config.lambdas.func1.envs).length, 0);
|
76 | t.is(config.lambdas.func2.envs.CUSTOM_ENV, 'myValue');
|
77 | });
|
78 |
|
79 | test('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 |
|
90 | test('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 |
|
102 | test('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 |
|
117 | test('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 | });
|