@webda/aws 1.6.0-beta.3 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/lib/deployers/cloudformation.d.ts +8 -7
  2. package/lib/deployers/cloudformation.js +85 -75
  3. package/lib/deployers/cloudformation.js.map +1 -1
  4. package/lib/deployers/cloudformation.spec.d.ts +1 -0
  5. package/lib/deployers/cloudformation.spec.js +547 -0
  6. package/lib/deployers/cloudformation.spec.js.map +1 -0
  7. package/lib/deployers/index.d.ts +8 -7
  8. package/lib/deployers/index.js +99 -94
  9. package/lib/deployers/index.js.map +1 -1
  10. package/lib/deployers/index.spec.d.ts +8 -0
  11. package/lib/deployers/index.spec.js +628 -0
  12. package/lib/deployers/index.spec.js.map +1 -0
  13. package/lib/deployers/lambdapackager.d.ts +1 -0
  14. package/lib/deployers/lambdapackager.js +25 -1
  15. package/lib/deployers/lambdapackager.js.map +1 -1
  16. package/lib/deployers/lambdapackager.spec.d.ts +1 -0
  17. package/lib/deployers/lambdapackager.spec.js +76 -0
  18. package/lib/deployers/lambdapackager.spec.js.map +1 -0
  19. package/lib/index.js +5 -1
  20. package/lib/index.js.map +1 -1
  21. package/lib/index.spec.d.ts +10 -0
  22. package/lib/index.spec.js +86 -0
  23. package/lib/index.spec.js.map +1 -0
  24. package/lib/services/aws-mixin.d.ts +22 -1
  25. package/lib/services/aws-mixin.js +18 -20
  26. package/lib/services/aws-mixin.js.map +1 -1
  27. package/lib/services/cloudwatchlogger.d.ts +19 -8
  28. package/lib/services/cloudwatchlogger.js +39 -29
  29. package/lib/services/cloudwatchlogger.js.map +1 -1
  30. package/lib/services/cloudwatchlogger.spec.d.ts +1 -0
  31. package/lib/services/cloudwatchlogger.spec.js +147 -0
  32. package/lib/services/cloudwatchlogger.spec.js.map +1 -0
  33. package/lib/services/dynamodb.d.ts +49 -17
  34. package/lib/services/dynamodb.js +221 -80
  35. package/lib/services/dynamodb.js.map +1 -1
  36. package/lib/services/dynamodb.spec.d.ts +23 -0
  37. package/lib/services/dynamodb.spec.js +410 -0
  38. package/lib/services/dynamodb.spec.js.map +1 -0
  39. package/lib/services/index.d.ts +1 -1
  40. package/lib/services/index.js +6 -2
  41. package/lib/services/index.js.map +1 -1
  42. package/lib/services/lambdacaller.d.ts +26 -10
  43. package/lib/services/lambdacaller.js +10 -18
  44. package/lib/services/lambdacaller.js.map +1 -1
  45. package/lib/services/lambdacaller.spec.d.ts +1 -0
  46. package/lib/services/lambdacaller.spec.js +104 -0
  47. package/lib/services/lambdacaller.spec.js.map +1 -0
  48. package/lib/services/lambdaserver.d.ts +11 -4
  49. package/lib/services/lambdaserver.js +52 -46
  50. package/lib/services/lambdaserver.js.map +1 -1
  51. package/lib/services/lambdaserver.spec.d.ts +1 -0
  52. package/lib/services/lambdaserver.spec.js +449 -0
  53. package/lib/services/lambdaserver.spec.js.map +1 -0
  54. package/lib/services/route53.d.ts +4 -4
  55. package/lib/services/route53.js +34 -44
  56. package/lib/services/route53.js.map +1 -1
  57. package/lib/services/route53.spec.d.ts +1 -0
  58. package/lib/services/route53.spec.js +109 -0
  59. package/lib/services/route53.spec.js.map +1 -0
  60. package/lib/services/s3binary.d.ts +33 -53
  61. package/lib/services/s3binary.js +115 -242
  62. package/lib/services/s3binary.js.map +1 -1
  63. package/lib/services/s3binary.spec.d.ts +1 -0
  64. package/lib/services/s3binary.spec.js +336 -0
  65. package/lib/services/s3binary.spec.js.map +1 -0
  66. package/lib/services/secretsmanager.d.ts +23 -10
  67. package/lib/services/secretsmanager.js +13 -27
  68. package/lib/services/secretsmanager.js.map +1 -1
  69. package/lib/services/secretsmanager.spec.d.ts +1 -0
  70. package/lib/services/secretsmanager.spec.js +109 -0
  71. package/lib/services/secretsmanager.spec.js.map +1 -0
  72. package/lib/services/sqsqueue.d.ts +22 -7
  73. package/lib/services/sqsqueue.js +23 -36
  74. package/lib/services/sqsqueue.js.map +1 -1
  75. package/lib/services/sqsqueue.spec.d.ts +1 -0
  76. package/lib/services/sqsqueue.spec.js +206 -0
  77. package/lib/services/sqsqueue.spec.js.map +1 -0
  78. package/lib/shell.d.ts +1 -1
  79. package/lib/shell.js +4 -1
  80. package/lib/shell.js.map +1 -1
  81. package/package.json +27 -14
  82. package/webda.module.json +285 -12
@@ -0,0 +1,547 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
32
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
33
+ return new (P || (P = Promise))(function (resolve, reject) {
34
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
35
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
36
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
37
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
38
+ });
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ const client_api_gateway_1 = require("@aws-sdk/client-api-gateway");
42
+ const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
43
+ const client_sts_1 = require("@aws-sdk/client-sts");
44
+ const mocha_1 = require("@testdeck/mocha");
45
+ const core_1 = require("@webda/core");
46
+ const deployertest_1 = require("@webda/shell/lib/deployers/deployertest");
47
+ const assert = __importStar(require("assert"));
48
+ const aws_sdk_client_mock_1 = require("aws-sdk-client-mock");
49
+ const sinon = __importStar(require("sinon"));
50
+ const index_spec_1 = require("../index.spec");
51
+ const cloudformation_1 = require("./cloudformation");
52
+ const index_spec_2 = require("./index.spec");
53
+ let CloudFormationDeployerTest = class CloudFormationDeployerTest extends deployertest_1.DeployerTest {
54
+ constructor() {
55
+ super(...arguments);
56
+ this.mocks = {};
57
+ }
58
+ getDeployer(manager) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ let deployer = yield manager.getDeployer("WebdaSampleApplication");
61
+ (0, index_spec_2.MockAWSDeployerMethods)(deployer, this);
62
+ return deployer;
63
+ });
64
+ }
65
+ defaultResources() {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ let resources = this.deployer.resources;
68
+ resources.Lambda = {};
69
+ resources.APIGateway = {};
70
+ resources.APIGatewayDomain = { DomainName: "webda.io" };
71
+ resources.Policy = {};
72
+ resources.APIGatewayBasePathMapping = {};
73
+ resources = core_1.JSONUtils.duplicate(resources);
74
+ yield this.deployer.defaultResources();
75
+ assert.deepStrictEqual(this.deployer.resources.APIGatewayBasePathMapping, Object.assign(Object.assign({}, resources.APIGatewayDomain), { BasePath: "" }));
76
+ assert.deepStrictEqual(this.deployer.resources.APIGatewayDomain, Object.assign(Object.assign({}, resources.APIGatewayDomain), { SecurityPolicy: "TLS_1_2" }));
77
+ assert.deepStrictEqual(this.deployer.resources.Lambda, Object.assign(Object.assign({}, resources.Lambda), { FunctionName: "WebdaSampleApplication", Handler: "node_modules/@webda/aws/lib/deployers/lambda-entrypoint.handler", MemorySize: 2048, Role: { "Fn::GetAtt": ["Role", "Arn"] }, Runtime: cloudformation_1.LAMBDA_LATEST_VERSION, Timeout: 30 }));
78
+ assert.deepStrictEqual(this.deployer.resources.Policy, Object.assign(Object.assign({}, resources.Policy), { PolicyDocument: { Statement: [] }, PolicyName: "WebdaSampleApplicationPolicy", Roles: [{ Ref: "Role" }] }));
79
+ this.deployer.resources.ResourcesToImport = [];
80
+ this.deployer.resources.ChangeSetType = "CREATE";
81
+ yield assert.rejects(() => this.deployer.defaultResources(), /ChangeSetType cannot be anything else than IMPORT if you have ResourcesToImport set/);
82
+ this.deployer.resources.ResourcesToImport = [];
83
+ this.deployer.resources.ChangeSetType = undefined;
84
+ this.deployer.resources.APIGatewayStage = {};
85
+ // @ts-ignore
86
+ this.deployer.resources.APIGatewayV2Domain = {};
87
+ // @ts-ignore
88
+ this.deployer.resources.Docker = { tag: "plop" };
89
+ this.deployer.getAWSIdentity = () => __awaiter(this, void 0, void 0, function* () {
90
+ return ({
91
+ Account: "mine"
92
+ });
93
+ });
94
+ this.deployer.resources.APIGatewayBasePathMapping.DomainName = "webda.io.";
95
+ this.deployer.resources.APIGatewayV2ApiMapping = { DomainName: "webda.io." };
96
+ // @ts-ignore
97
+ this.deployer.resources.Statics = [{ Source: "/plop" }];
98
+ yield this.deployer.defaultResources();
99
+ this.deployer.resources.AssetsBucket = undefined;
100
+ yield assert.rejects(() => this.deployer.defaultResources(), /AssetsBucket must be defined/);
101
+ });
102
+ }
103
+ testSendCloudFormationTemplate() {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ this.deployer.resources.AssetsBucket = "webda";
106
+ this.deployer.resources.AssetsPrefix = "plop/";
107
+ this.deployer.resources.FileName = "123";
108
+ this.deployer.template = {
109
+ fake: true
110
+ };
111
+ yield this.deployer.sendCloudFormationTemplate();
112
+ assert.deepStrictEqual(this.deployer.result.CloudFormation, {
113
+ Bucket: "webda",
114
+ Key: "plop/123.json"
115
+ });
116
+ this.deployer.resources.AssetsPrefix = "/plop/";
117
+ this.deployer.resources.FileName = "123.json";
118
+ this.deployer.result = {};
119
+ yield this.deployer.sendCloudFormationTemplate();
120
+ assert.deepStrictEqual(this.deployer.result.CloudFormation, {
121
+ Bucket: "webda",
122
+ Key: "plop/123.json"
123
+ });
124
+ this.deployer.resources.FileName = "123";
125
+ this.deployer.resources.Format = "YAML";
126
+ this.deployer.result = {};
127
+ yield this.deployer.sendCloudFormationTemplate();
128
+ assert.deepStrictEqual(this.deployer.result.CloudFormation, {
129
+ Bucket: "webda",
130
+ Key: "plop/123.yml"
131
+ });
132
+ this.deployer.resources.FileName = "123.yml";
133
+ this.deployer.result = {};
134
+ yield this.deployer.sendCloudFormationTemplate();
135
+ assert.deepStrictEqual(this.deployer.result.CloudFormation, {
136
+ Bucket: "webda",
137
+ Key: "plop/123.yml"
138
+ });
139
+ this.deployer.resources.FileName = "123.taml";
140
+ this.deployer.result = {};
141
+ yield this.deployer.sendCloudFormationTemplate();
142
+ assert.deepStrictEqual(this.deployer.result.CloudFormation, {
143
+ Bucket: "webda",
144
+ Key: "plop/123.taml.yml"
145
+ });
146
+ this.deployer.resources.FileName = "123.yaml";
147
+ this.deployer.result = {};
148
+ this.deployer.resources.AssetsPrefix = "";
149
+ yield this.deployer.sendCloudFormationTemplate();
150
+ assert.deepStrictEqual(this.deployer.result.CloudFormation, {
151
+ Bucket: "webda",
152
+ Key: "123.yaml"
153
+ });
154
+ });
155
+ }
156
+ testDeploy() {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ let resources = this.deployer.resources;
159
+ resources.Lambda = {};
160
+ resources.Resources = {};
161
+ resources.APIGateway = {};
162
+ resources.APIGatewayDomain = {
163
+ DomainName: "webda.io"
164
+ };
165
+ resources.Policy = {};
166
+ resources.Role = {};
167
+ resources.Fargate = {};
168
+ resources.Tags = [{ Key: "test", Value: "test" }];
169
+ resources.CustomResources = {
170
+ MyResource: { Type: "Test" }
171
+ };
172
+ let uploadStatics = sinon.stub(this.deployer, "uploadStatics");
173
+ let createCloudFormation = sinon.stub(this.deployer, "createCloudFormation");
174
+ let sendCloudFormation = sinon.stub(this.deployer, "sendCloudFormationTemplate");
175
+ let generateLambdaPackage = sinon.stub(this.deployer, "generateLambdaPackage");
176
+ sendCloudFormation.callsFake(() => __awaiter(this, void 0, void 0, function* () {
177
+ this.deployer.result.CloudFormation = {
178
+ Bucket: "plop",
179
+ Key: "mycf.json"
180
+ };
181
+ }));
182
+ generateLambdaPackage.callsFake(() => __awaiter(this, void 0, void 0, function* () {
183
+ return {
184
+ S3Bucket: "fake",
185
+ S3Key: "lambda.zip"
186
+ };
187
+ }));
188
+ yield this.deployer.defaultResources();
189
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_api_gateway_1.APIGateway);
190
+ try {
191
+ mock.on(client_api_gateway_1.PutRestApiCommand).resolves({});
192
+ console.log("Launch deploy", this.deployer.uploadStatics);
193
+ this.deployer.resources.Docker = {
194
+ tag: "plop",
195
+ includeRepository: false
196
+ };
197
+ this.deployer.resources.APIGatewayImportOpenApi = "yop";
198
+ sinon.stub(this.deployer.manager, "run").callsFake(() => __awaiter(this, void 0, void 0, function* () { }));
199
+ yield this.deployer.deploy();
200
+ console.log("Launch deploy done");
201
+ assert.strictEqual(sendCloudFormation.calledOnce, true);
202
+ assert.strictEqual(generateLambdaPackage.calledOnce, true);
203
+ yield this.deployer.sleep(0.001);
204
+ }
205
+ finally {
206
+ mock.restore();
207
+ }
208
+ });
209
+ }
210
+ testDeleteCloudFormation() {
211
+ return __awaiter(this, void 0, void 0, function* () {
212
+ this.mocks["deleteStack"] = sinon.stub().resolves({});
213
+ this.mocks["describeStacks"] = sinon.stub().callsFake(() => __awaiter(this, void 0, void 0, function* () {
214
+ if (this.mocks["describeStacks"].callCount > 1) {
215
+ throw new Error();
216
+ }
217
+ return {};
218
+ }));
219
+ this.mocks["waitFor"] = sinon.stub(this.deployer, "waitFor").callsFake((c) => __awaiter(this, void 0, void 0, function* () {
220
+ yield c(() => { });
221
+ yield c(() => { });
222
+ }));
223
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_cloudformation_1.CloudFormation)
224
+ .on(client_cloudformation_1.DeleteStackCommand)
225
+ .callsFake(this.mocks["deleteStack"])
226
+ .on(client_cloudformation_1.DescribeStacksCommand)
227
+ .callsFake(this.mocks["describeStacks"]);
228
+ try {
229
+ yield this.deployer.deleteCloudFormation();
230
+ assert.strictEqual(this.mocks["deleteStack"].calledOnce, true);
231
+ assert.strictEqual(this.mocks["waitFor"].calledOnce, true);
232
+ assert.strictEqual(this.mocks["describeStacks"].calledTwice, true);
233
+ }
234
+ finally {
235
+ mock.restore();
236
+ }
237
+ });
238
+ }
239
+ testInit() {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ let logs = [];
242
+ let console = {
243
+ app: {
244
+ getAppPath: () => {
245
+ return "./noexisting";
246
+ }
247
+ },
248
+ log: (...args) => {
249
+ logs.push(args);
250
+ }
251
+ };
252
+ let caller = sinon.stub().callsFake(() => __awaiter(this, void 0, void 0, function* () {
253
+ if (caller.callCount === 1) {
254
+ throw new Error("Bad");
255
+ }
256
+ return { Account: "myAccount" };
257
+ }));
258
+ let saver = sinon.stub(core_1.JSONUtils, "saveFile").callsFake(() => { });
259
+ const mocks = [];
260
+ try {
261
+ mocks.push((0, aws_sdk_client_mock_1.mockClient)(client_sts_1.STS).on(client_sts_1.GetCallerIdentityCommand).callsFake(caller));
262
+ let stub = sinon.stub().resolves({});
263
+ mocks.push((0, aws_sdk_client_mock_1.mockClient)(client_cloudformation_1.CloudFormation).on(client_cloudformation_1.CreateStackCommand).callsFake(stub));
264
+ assert.ok((yield cloudformation_1.CloudFormationDeployer.init(console)) === -1);
265
+ assert.deepStrictEqual(logs[0], ["ERROR", "package.json not found"]);
266
+ console.app.getAppPath = () => "./test/package.json";
267
+ assert.ok((yield cloudformation_1.CloudFormationDeployer.init(console)) === -1);
268
+ assert.deepStrictEqual(logs[1], [
269
+ "ERROR",
270
+ "Cannot retrieve your AWS credentials, make sure to have a correct AWS setup"
271
+ ]);
272
+ logs = [];
273
+ assert.ok((yield cloudformation_1.CloudFormationDeployer.init(console)) === 0);
274
+ assert.strictEqual(saver.getCall(0).args[0].webda.aws.AssetsBucket, "webda-webda-testor-assets");
275
+ assert.strictEqual(saver.getCall(0).args[0].webda.aws.Repository, "webda-webda-testor");
276
+ console.app.getAppPath = () => "./test/package-initiated.json";
277
+ logs = [];
278
+ assert.ok((yield cloudformation_1.CloudFormationDeployer.init(console)) === -1);
279
+ assert.deepStrictEqual(logs[0], ["WARN", "Default information are already in your package.json"]);
280
+ }
281
+ finally {
282
+ mocks.forEach(m => m.restore());
283
+ }
284
+ });
285
+ }
286
+ createCloudFormation() {
287
+ return __awaiter(this, void 0, void 0, function* () {
288
+ let describeChangeSetResult = { Status: "ROLLBACK_COMPLETE" };
289
+ let describeStackEventsResult = {
290
+ StackEvents: [
291
+ { EventId: "123", LogicalResourceId: this.deployer.resources.StackName, ResourceStatus: "IN_PROGRESS" }
292
+ ]
293
+ };
294
+ let logs = sinon.stub(this.deployer.logger, "log");
295
+ sinon.stub(this.deployer, "waitFor").callsFake(callback => {
296
+ return new Promise((resolve, reject) => {
297
+ callback(resolve, reject);
298
+ });
299
+ });
300
+ const mocks = [];
301
+ sinon.stub(this.deployer, "createCloudFormationChangeSet").callsFake(() => __awaiter(this, void 0, void 0, function* () { return "mychange"; }));
302
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_cloudformation_1.CloudFormation)
303
+ .on(client_cloudformation_1.DescribeChangeSetCommand)
304
+ .resolves(describeChangeSetResult)
305
+ .on(client_cloudformation_1.ExecuteChangeSetCommand)
306
+ .resolves({})
307
+ .on(client_cloudformation_1.DescribeStackEventsCommand)
308
+ .callsFake(() => __awaiter(this, void 0, void 0, function* () {
309
+ let res = Object.assign(Object.assign({}, describeStackEventsResult), { StackEvents: [...describeStackEventsResult.StackEvents] });
310
+ describeStackEventsResult.StackEvents.unshift({
311
+ EventId: "123",
312
+ ResourceType: "any",
313
+ LogicalResourceId: this.deployer.resources.StackName,
314
+ ResourceStatus: "UPDATE_ROLLBACK_COMPLETE"
315
+ });
316
+ return res;
317
+ }))
318
+ .on(client_cloudformation_1.ListStackResourcesCommand)
319
+ .resolves({
320
+ StackResourceSummaries: [
321
+ {
322
+ ResourceType: "AWS::ApiGateway::Stage",
323
+ PhysicalResourceId: "stage",
324
+ LogicalResourceId: "",
325
+ LastUpdatedTimestamp: new Date(),
326
+ ResourceStatus: ""
327
+ },
328
+ {
329
+ ResourceType: "AWS::ApiGateway::RestApi",
330
+ PhysicalResourceId: "restApi",
331
+ LogicalResourceId: "",
332
+ LastUpdatedTimestamp: new Date(),
333
+ ResourceStatus: ""
334
+ }
335
+ ]
336
+ });
337
+ mocks.push(mock);
338
+ try {
339
+ let createDeployment = sinon.stub().resolves({});
340
+ mocks.push((0, aws_sdk_client_mock_1.mockClient)(client_api_gateway_1.APIGateway).on(client_api_gateway_1.CreateDeploymentCommand).callsFake(createDeployment));
341
+ // First scenario we have a 'ROLLBACK_COMPLETE', an error occured
342
+ yield assert.rejects(() => this.deployer.createCloudFormation());
343
+ // 'FAILED' scenario with unknown error
344
+ logs.resetHistory();
345
+ describeChangeSetResult.Status = "FAILED";
346
+ describeChangeSetResult.StatusReason = "plop";
347
+ yield this.deployer.createCloudFormation();
348
+ assert.deepStrictEqual(logs.getCall(1).args, ["ERROR", "Cannot execute ChangeSet:", "plop"]);
349
+ // 'FAILED' scenario because no changes to be made
350
+ describeChangeSetResult.StatusReason =
351
+ "The submitted information didn't contain changes. Submit different information to create a change set.";
352
+ logs.resetHistory();
353
+ yield this.deployer.createCloudFormation();
354
+ assert.deepStrictEqual(logs.getCall(1).args, ["INFO", "No changes to be made"]);
355
+ // 'CREATE_COMPLETE' scenario
356
+ logs.resetHistory();
357
+ describeChangeSetResult.Status = "CREATE_COMPLETE";
358
+ describeChangeSetResult.Changes = [
359
+ { Type: "Resource", ResourceChange: { Action: "Create", ResourceType: "Fake", LogicalResourceId: "FakeId" } },
360
+ { Type: "Plop" }
361
+ ];
362
+ yield this.deployer.createCloudFormation();
363
+ assert.deepStrictEqual(createDeployment.getCall(0).args[0], { restApiId: "restApi", stageName: "stage" });
364
+ // 'TIMEOUT'
365
+ this.deployer.sleep = () => __awaiter(this, void 0, void 0, function* () { });
366
+ describeStackEventsResult.StackEvents = [];
367
+ mock.on(client_cloudformation_1.DescribeStackEventsCommand).resolves(describeStackEventsResult);
368
+ yield this.deployer.createCloudFormation();
369
+ assert.ok(createDeployment.callCount === 1);
370
+ }
371
+ finally {
372
+ mocks.forEach(m => m.restore());
373
+ }
374
+ });
375
+ }
376
+ uploadStatics() {
377
+ return __awaiter(this, void 0, void 0, function* () {
378
+ sinon.stub(this.deployer, "putFolderOnBucket").callsFake(() => __awaiter(this, void 0, void 0, function* () { }));
379
+ this.deployer.resources.Statics = [
380
+ // @ts-ignore
381
+ { Source: "//", AssetsPath: "//" }
382
+ ];
383
+ yield this.deployer.uploadStatics();
384
+ });
385
+ }
386
+ generateLambdaPackage() {
387
+ return __awaiter(this, void 0, void 0, function* () {
388
+ let run = sinon.stub(this.deployer.manager, "run").callsFake(() => __awaiter(this, void 0, void 0, function* () { }));
389
+ let unlink = sinon.stub(require("fs"), "unlinkSync").callsFake(() => __awaiter(this, void 0, void 0, function* () { }));
390
+ try {
391
+ this.deployer.resources.KeepPackage = false;
392
+ yield this.deployer.generateLambdaPackage();
393
+ this.deployer.resources.KeepPackage = true;
394
+ yield this.deployer.generateLambdaPackage();
395
+ }
396
+ finally {
397
+ unlink.restore();
398
+ run.restore();
399
+ }
400
+ });
401
+ }
402
+ createCloudFormationChangeSet() {
403
+ return __awaiter(this, void 0, void 0, function* () {
404
+ let describeStacksResult = { Stacks: [{ StackStatus: "ZZ", StackName: "", CreationTime: new Date() }] };
405
+ this.deployer.result.CloudFormation = {
406
+ Bucket: "Bucket",
407
+ Key: "mykey"
408
+ };
409
+ const mock = (0, aws_sdk_client_mock_1.mockClient)(client_cloudformation_1.CloudFormation)
410
+ .on(client_cloudformation_1.CreateChangeSetCommand)
411
+ .resolves({})
412
+ .on(client_cloudformation_1.DescribeStacksCommand)
413
+ .callsFake(() => __awaiter(this, void 0, void 0, function* () { return describeStacksResult; }))
414
+ .on(client_cloudformation_1.DeleteChangeSetCommand)
415
+ .resolves({});
416
+ sinon.stub(this.deployer, "deleteCloudFormation").callsFake(() => __awaiter(this, void 0, void 0, function* () { }));
417
+ try {
418
+ let cloudformation = new client_cloudformation_1.CloudFormation({ credentials: index_spec_1.defaultCreds });
419
+ // Nominal case
420
+ yield this.deployer.createCloudFormationChangeSet(cloudformation);
421
+ // With error
422
+ let testError;
423
+ let errorFirst = sinon.stub().callsFake(() => __awaiter(this, void 0, void 0, function* () {
424
+ if (errorFirst.callCount === 1) {
425
+ throw testError;
426
+ }
427
+ else {
428
+ return {};
429
+ }
430
+ }));
431
+ mock.on(client_cloudformation_1.CreateChangeSetCommand).callsFake(errorFirst);
432
+ testError = new Error("plop is in ROLLBACK_COMPLETE state and can not be updated.");
433
+ // Should still go through with a bugous stack
434
+ yield this.deployer.createCloudFormationChangeSet(cloudformation);
435
+ // Non-existing stack
436
+ testError = new Error(`Stack [${this.deployer.resources.StackName}] does not exist`);
437
+ errorFirst.resetHistory();
438
+ yield this.deployer.createCloudFormationChangeSet(cloudformation);
439
+ // Change set exist
440
+ testError = new Error();
441
+ testError.code = "AlreadyExistsException";
442
+ errorFirst.resetHistory();
443
+ yield this.deployer.createCloudFormationChangeSet(cloudformation);
444
+ // True error
445
+ testError = new Error("Unknown");
446
+ errorFirst.resetHistory();
447
+ yield assert.rejects(() => this.deployer.createCloudFormationChangeSet(cloudformation), /Unknown/);
448
+ // Test with stack status
449
+ testError = new Error("bouzouf state and can not be updated.");
450
+ sinon.stub(this.deployer, "waitFor").callsFake(callback => {
451
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
452
+ if (!(yield callback(resolve, reject))) {
453
+ reject("BAD");
454
+ }
455
+ }));
456
+ });
457
+ errorFirst.resetHistory();
458
+ yield assert.rejects(() => this.deployer.createCloudFormationChangeSet(cloudformation), /BAD/);
459
+ describeStacksResult = { Stacks: [{ StackStatus: "ANY_COMPLETE", StackName: "", CreationTime: new Date() }] };
460
+ errorFirst.resetHistory();
461
+ yield this.deployer.createCloudFormationChangeSet(cloudformation);
462
+ describeStacksResult = { Stacks: [] };
463
+ errorFirst.resetHistory();
464
+ yield this.deployer.createCloudFormationChangeSet(cloudformation);
465
+ }
466
+ finally {
467
+ mock.restore();
468
+ }
469
+ });
470
+ }
471
+ createStatic() {
472
+ return __awaiter(this, void 0, void 0, function* () {
473
+ this.deployer.template = { Resources: {} };
474
+ yield this.deployer.createStatic({ Bucket: { Tags: {} }, DomainName: "webda.io" });
475
+ assert.deepStrictEqual(this.deployer.template.Resources[`StaticwebdaioBucket`], {
476
+ Type: "AWS::S3::Bucket",
477
+ Properties: {
478
+ BucketName: "webda.io",
479
+ Tags: [
480
+ {
481
+ Key: "test",
482
+ Value: "webda3"
483
+ }
484
+ ]
485
+ }
486
+ });
487
+ });
488
+ }
489
+ APIGatewayDomain() {
490
+ return __awaiter(this, void 0, void 0, function* () {
491
+ this.deployer.template = { Resources: {} };
492
+ this.deployer.resources.APIGatewayDomain.EndpointConfiguration = {
493
+ Types: ["EDGE"]
494
+ };
495
+ sinon.stub(this.deployer, "createCloudFormationDNSEntry");
496
+ yield this.deployer.APIGatewayDomain();
497
+ });
498
+ }
499
+ createCloudFormationDNSEntry() {
500
+ return __awaiter(this, void 0, void 0, function* () {
501
+ this.mocks.getZoneForDomainName.callsFake(() => __awaiter(this, void 0, void 0, function* () {
502
+ return undefined;
503
+ }));
504
+ yield this.deployer.createCloudFormationDNSEntry(undefined, "plop.com", undefined);
505
+ });
506
+ }
507
+ };
508
+ __decorate([
509
+ mocha_1.test
510
+ ], CloudFormationDeployerTest.prototype, "defaultResources", null);
511
+ __decorate([
512
+ mocha_1.test
513
+ ], CloudFormationDeployerTest.prototype, "testSendCloudFormationTemplate", null);
514
+ __decorate([
515
+ mocha_1.test
516
+ ], CloudFormationDeployerTest.prototype, "testDeploy", null);
517
+ __decorate([
518
+ mocha_1.test
519
+ ], CloudFormationDeployerTest.prototype, "testDeleteCloudFormation", null);
520
+ __decorate([
521
+ mocha_1.test
522
+ ], CloudFormationDeployerTest.prototype, "testInit", null);
523
+ __decorate([
524
+ mocha_1.test
525
+ ], CloudFormationDeployerTest.prototype, "createCloudFormation", null);
526
+ __decorate([
527
+ mocha_1.test
528
+ ], CloudFormationDeployerTest.prototype, "uploadStatics", null);
529
+ __decorate([
530
+ mocha_1.test
531
+ ], CloudFormationDeployerTest.prototype, "generateLambdaPackage", null);
532
+ __decorate([
533
+ mocha_1.test
534
+ ], CloudFormationDeployerTest.prototype, "createCloudFormationChangeSet", null);
535
+ __decorate([
536
+ mocha_1.test
537
+ ], CloudFormationDeployerTest.prototype, "createStatic", null);
538
+ __decorate([
539
+ mocha_1.test
540
+ ], CloudFormationDeployerTest.prototype, "APIGatewayDomain", null);
541
+ __decorate([
542
+ mocha_1.test
543
+ ], CloudFormationDeployerTest.prototype, "createCloudFormationDNSEntry", null);
544
+ CloudFormationDeployerTest = __decorate([
545
+ mocha_1.suite
546
+ ], CloudFormationDeployerTest);
547
+ //# sourceMappingURL=cloudformation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudformation.spec.js","sourceRoot":"","sources":["../../src/deployers/cloudformation.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { CertificateDetail } from "@aws-sdk/client-acm";
2
+ import { HostedZone } from "@aws-sdk/client-route-53";
3
+ import { GetCallerIdentityResponse } from "@aws-sdk/client-sts";
1
4
  import { DeployerResources } from "@webda/core";
2
5
  import { Deployer, DeploymentManager } from "@webda/shell";
3
- import * as AWS from "aws-sdk";
4
6
  export declare type TagsDefinition = {
5
7
  Key: string;
6
8
  Value: string;
@@ -85,7 +87,6 @@ export interface AWSDeployerResources extends DeployerResources {
85
87
  * final deployers
86
88
  */
87
89
  export declare abstract class AWSDeployer<T extends AWSDeployerResources> extends Deployer<T> {
88
- AWS: any;
89
90
  constructor(manager: DeploymentManager, resources: any);
90
91
  /**
91
92
  * Return AWS region
@@ -94,7 +95,7 @@ export declare abstract class AWSDeployer<T extends AWSDeployerResources> extend
94
95
  /**
95
96
  * Return the current AWS Identity used
96
97
  */
97
- getAWSIdentity(): Promise<AWS.STS.GetCallerIdentityResponse>;
98
+ getAWSIdentity(): Promise<GetCallerIdentityResponse>;
98
99
  /**
99
100
  * Return the default VPC for the current region
100
101
  */
@@ -133,7 +134,7 @@ export declare abstract class AWSDeployer<T extends AWSDeployerResources> extend
133
134
  *
134
135
  * @param domain to get zone for
135
136
  */
136
- getZoneForDomainName(domain: any): Promise<AWS.Route53.HostedZone>;
137
+ getZoneForDomainName(domain: any): Promise<HostedZone>;
137
138
  /**
138
139
  * Transform a tag map into a tag array
139
140
  *
@@ -173,7 +174,7 @@ export declare abstract class AWSDeployer<T extends AWSDeployerResources> extend
173
174
  * @param key of the resources to add
174
175
  */
175
176
  getDefaultTagsAsS3Tagging(key?: string | TagsDefinition): string;
176
- waitFor(callback: (resolve: (value?: any) => void, reject: (reason?: any) => void) => Promise<boolean>, retries: number, title: string, delay: number): Promise<any>;
177
+ waitFor(callback: (resolve?: (value?: any) => void, reject?: (reason?: any) => void) => Promise<boolean>, retries: number, title: string, delay: number): Promise<any>;
177
178
  /**
178
179
  * Create a certificate for a domain
179
180
  * Will use Route 53 to do the validation
@@ -181,7 +182,7 @@ export declare abstract class AWSDeployer<T extends AWSDeployerResources> extend
181
182
  * @param domain to create the certificate for
182
183
  * @param zone
183
184
  */
184
- doCreateCertificate(domain: string, zone: AWS.Route53.HostedZone): Promise<AWS.ACM.CertificateDetail>;
185
+ doCreateCertificate(domain: string, zone: HostedZone): Promise<CertificateDetail>;
185
186
  /**
186
187
  * Create DNS entry
187
188
  *
@@ -190,7 +191,7 @@ export declare abstract class AWSDeployer<T extends AWSDeployerResources> extend
190
191
  * @param value the value of the record
191
192
  * @param targetZone
192
193
  */
193
- protected createDNSEntry(domain: string, type: string, value: string, targetZone?: AWS.Route53.HostedZone): Promise<void>;
194
+ createDNSEntry(domain: string, type: string, value: string, targetZone?: HostedZone): Promise<void>;
194
195
  getARNPolicy(accountId: any, region: any): {
195
196
  Sid: string;
196
197
  Effect: string;