serverless-openapi-documenter 0.0.107 → 0.0.109
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.
- package/README.md +3 -2
- package/json/owasp.json +52 -56
- package/package.json +3 -2
- package/src/definitionGenerator.js +22 -2
- package/src/logger.js +74 -0
- package/src/openAPIGenerator.js +33 -60
- package/src/owasp.js +37 -11
- package/test/json/newOWASP.json +52 -56
- package/test/unit/definitionGenerator.spec.js +201 -44
- package/test/unit/logger.spec.js +160 -0
- package/test/unit/owasp.spec.js +106 -99
|
@@ -10,6 +10,14 @@ const DefinitionGenerator = require("../../src/definitionGenerator");
|
|
|
10
10
|
|
|
11
11
|
describe("DefinitionGenerator", () => {
|
|
12
12
|
let mockServerless;
|
|
13
|
+
const logger = {
|
|
14
|
+
verbose: (str) => {
|
|
15
|
+
console.log(str);
|
|
16
|
+
},
|
|
17
|
+
warn: (str) => {
|
|
18
|
+
console.log(str);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
13
21
|
const v4 = new RegExp(
|
|
14
22
|
/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
|
|
15
23
|
);
|
|
@@ -26,7 +34,7 @@ describe("DefinitionGenerator", () => {
|
|
|
26
34
|
|
|
27
35
|
describe("constructor", () => {
|
|
28
36
|
it("should return a definitionGenerator", function () {
|
|
29
|
-
const expected = new DefinitionGenerator(mockServerless,
|
|
37
|
+
const expected = new DefinitionGenerator(mockServerless, logger);
|
|
30
38
|
expect(expected).to.be.an.instanceOf(DefinitionGenerator);
|
|
31
39
|
});
|
|
32
40
|
|
|
@@ -37,46 +45,65 @@ describe("DefinitionGenerator", () => {
|
|
|
37
45
|
delete serverlessWithoutOpenAPIVersion.processedInput;
|
|
38
46
|
let expected = new DefinitionGenerator(
|
|
39
47
|
serverlessWithoutOpenAPIVersion,
|
|
40
|
-
|
|
48
|
+
logger
|
|
41
49
|
);
|
|
42
50
|
expect(expected.version).to.be.equal("3.0.0");
|
|
43
51
|
|
|
44
52
|
Object.assign(serverlessWithoutOpenAPIVersion, { processedInput: {} });
|
|
45
|
-
expected = new DefinitionGenerator(serverlessWithoutOpenAPIVersion, {
|
|
53
|
+
expected = new DefinitionGenerator(serverlessWithoutOpenAPIVersion, {
|
|
54
|
+
verbose: (str) => {
|
|
55
|
+
console.log(str);
|
|
56
|
+
},
|
|
57
|
+
});
|
|
46
58
|
expect(expected.version).to.be.equal("3.0.0");
|
|
47
59
|
|
|
48
60
|
serverlessWithoutOpenAPIVersion.processedInput = {
|
|
49
61
|
options: {},
|
|
50
62
|
};
|
|
51
|
-
expected = new DefinitionGenerator(
|
|
63
|
+
expected = new DefinitionGenerator(
|
|
64
|
+
serverlessWithoutOpenAPIVersion,
|
|
65
|
+
logger
|
|
66
|
+
);
|
|
52
67
|
expect(expected.version).to.be.equal("3.0.0");
|
|
53
68
|
|
|
54
69
|
serverlessWithoutOpenAPIVersion.processedInput.options = {
|
|
55
70
|
test: "abc",
|
|
56
71
|
};
|
|
57
72
|
|
|
58
|
-
expected = new DefinitionGenerator(
|
|
73
|
+
expected = new DefinitionGenerator(
|
|
74
|
+
serverlessWithoutOpenAPIVersion,
|
|
75
|
+
logger
|
|
76
|
+
);
|
|
59
77
|
expect(expected.version).to.be.equal("3.0.0");
|
|
60
78
|
|
|
61
79
|
serverlessWithoutOpenAPIVersion.processedInput.options = {
|
|
62
80
|
openApiVersion: null,
|
|
63
81
|
};
|
|
64
82
|
|
|
65
|
-
expected = new DefinitionGenerator(
|
|
83
|
+
expected = new DefinitionGenerator(
|
|
84
|
+
serverlessWithoutOpenAPIVersion,
|
|
85
|
+
logger
|
|
86
|
+
);
|
|
66
87
|
expect(expected.version).to.be.equal("3.0.0");
|
|
67
88
|
|
|
68
89
|
serverlessWithoutOpenAPIVersion.processedInput.options = {
|
|
69
90
|
openApiVersion: undefined,
|
|
70
91
|
};
|
|
71
92
|
|
|
72
|
-
expected = new DefinitionGenerator(
|
|
93
|
+
expected = new DefinitionGenerator(
|
|
94
|
+
serverlessWithoutOpenAPIVersion,
|
|
95
|
+
logger
|
|
96
|
+
);
|
|
73
97
|
expect(expected.version).to.be.equal("3.0.0");
|
|
74
98
|
|
|
75
99
|
serverlessWithoutOpenAPIVersion.processedInput.options = {
|
|
76
100
|
openapiVersion: undefined,
|
|
77
101
|
};
|
|
78
102
|
|
|
79
|
-
expected = new DefinitionGenerator(
|
|
103
|
+
expected = new DefinitionGenerator(
|
|
104
|
+
serverlessWithoutOpenAPIVersion,
|
|
105
|
+
logger
|
|
106
|
+
);
|
|
80
107
|
expect(expected.version).to.be.equal("3.0.0");
|
|
81
108
|
});
|
|
82
109
|
|
|
@@ -86,12 +113,15 @@ describe("DefinitionGenerator", () => {
|
|
|
86
113
|
);
|
|
87
114
|
serverlessWithOpenAPIVersion.processedInput.options.openApiVersion =
|
|
88
115
|
"3.0.2";
|
|
89
|
-
let expected = new DefinitionGenerator(
|
|
116
|
+
let expected = new DefinitionGenerator(
|
|
117
|
+
serverlessWithOpenAPIVersion,
|
|
118
|
+
logger
|
|
119
|
+
);
|
|
90
120
|
expect(expected.version).to.be.equal("3.0.2");
|
|
91
121
|
|
|
92
122
|
serverlessWithOpenAPIVersion.processedInput.options.openApiVersion =
|
|
93
123
|
"3.0.1";
|
|
94
|
-
expected = new DefinitionGenerator(serverlessWithOpenAPIVersion,
|
|
124
|
+
expected = new DefinitionGenerator(serverlessWithOpenAPIVersion, logger);
|
|
95
125
|
expect(expected.version).to.be.equal("3.0.1");
|
|
96
126
|
});
|
|
97
127
|
|
|
@@ -111,7 +141,7 @@ describe("DefinitionGenerator", () => {
|
|
|
111
141
|
throw err;
|
|
112
142
|
});
|
|
113
143
|
|
|
114
|
-
const expected = new DefinitionGenerator(mockServerless,
|
|
144
|
+
const expected = new DefinitionGenerator(mockServerless, logger);
|
|
115
145
|
|
|
116
146
|
expect(expected.REDOCLY_RULES).to.have.property(
|
|
117
147
|
"operation-2xx-response",
|
|
@@ -132,7 +162,10 @@ describe("DefinitionGenerator", () => {
|
|
|
132
162
|
|
|
133
163
|
describe("createInfo", () => {
|
|
134
164
|
it("should create openAPI info object correctly", function () {
|
|
135
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
165
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
166
|
+
mockServerless,
|
|
167
|
+
logger
|
|
168
|
+
);
|
|
136
169
|
definitionGenerator.createInfo();
|
|
137
170
|
|
|
138
171
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -142,7 +175,10 @@ describe("DefinitionGenerator", () => {
|
|
|
142
175
|
|
|
143
176
|
it("should use the service name when documentation title has not been supplied", function () {
|
|
144
177
|
delete mockServerless.service.custom.documentation.title;
|
|
145
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
178
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
179
|
+
mockServerless,
|
|
180
|
+
logger
|
|
181
|
+
);
|
|
146
182
|
definitionGenerator.createInfo();
|
|
147
183
|
|
|
148
184
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -154,7 +190,10 @@ describe("DefinitionGenerator", () => {
|
|
|
154
190
|
|
|
155
191
|
it("should use the service name when documentation description has not been supplied", function () {
|
|
156
192
|
delete mockServerless.service.custom.documentation.description;
|
|
157
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
193
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
194
|
+
mockServerless,
|
|
195
|
+
logger
|
|
196
|
+
);
|
|
158
197
|
definitionGenerator.createInfo();
|
|
159
198
|
|
|
160
199
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -164,7 +203,10 @@ describe("DefinitionGenerator", () => {
|
|
|
164
203
|
|
|
165
204
|
it("should use an empty string when documentation description has not been supplied", function () {
|
|
166
205
|
delete mockServerless.service.custom.documentation.description;
|
|
167
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
206
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
207
|
+
mockServerless,
|
|
208
|
+
logger
|
|
209
|
+
);
|
|
168
210
|
definitionGenerator.createInfo();
|
|
169
211
|
|
|
170
212
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -175,7 +217,10 @@ describe("DefinitionGenerator", () => {
|
|
|
175
217
|
it("should generate a uuid for version when documentation version has not been supplied", function () {
|
|
176
218
|
delete mockServerless.service.custom.documentation.version;
|
|
177
219
|
|
|
178
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
220
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
221
|
+
mockServerless,
|
|
222
|
+
logger
|
|
223
|
+
);
|
|
179
224
|
definitionGenerator.createInfo();
|
|
180
225
|
|
|
181
226
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -189,7 +234,10 @@ describe("DefinitionGenerator", () => {
|
|
|
189
234
|
url: "http://example.com",
|
|
190
235
|
email: "john@example.com",
|
|
191
236
|
};
|
|
192
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
237
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
238
|
+
mockServerless,
|
|
239
|
+
logger
|
|
240
|
+
);
|
|
193
241
|
definitionGenerator.createInfo();
|
|
194
242
|
|
|
195
243
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -204,7 +252,10 @@ describe("DefinitionGenerator", () => {
|
|
|
204
252
|
name: "John",
|
|
205
253
|
email: "john@example.com",
|
|
206
254
|
};
|
|
207
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
255
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
256
|
+
mockServerless,
|
|
257
|
+
logger
|
|
258
|
+
);
|
|
208
259
|
definitionGenerator.createInfo();
|
|
209
260
|
|
|
210
261
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -222,7 +273,10 @@ describe("DefinitionGenerator", () => {
|
|
|
222
273
|
name: "Apache 2.0",
|
|
223
274
|
url: "https://www.apache.org/licenses/LICENSE-2.0.html",
|
|
224
275
|
};
|
|
225
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
276
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
277
|
+
mockServerless,
|
|
278
|
+
logger
|
|
279
|
+
);
|
|
226
280
|
definitionGenerator.createInfo();
|
|
227
281
|
|
|
228
282
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -236,7 +290,10 @@ describe("DefinitionGenerator", () => {
|
|
|
236
290
|
mockServerless.service.custom.documentation.license = {
|
|
237
291
|
url: "https://www.apache.org/licenses/LICENSE-2.0.html",
|
|
238
292
|
};
|
|
239
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
293
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
294
|
+
mockServerless,
|
|
295
|
+
logger
|
|
296
|
+
);
|
|
240
297
|
definitionGenerator.createInfo();
|
|
241
298
|
|
|
242
299
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -248,7 +305,10 @@ describe("DefinitionGenerator", () => {
|
|
|
248
305
|
mockServerless.service.custom.documentation.license = {
|
|
249
306
|
name: "John",
|
|
250
307
|
};
|
|
251
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
308
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
309
|
+
mockServerless,
|
|
310
|
+
logger
|
|
311
|
+
);
|
|
252
312
|
definitionGenerator.createInfo();
|
|
253
313
|
|
|
254
314
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -263,7 +323,10 @@ describe("DefinitionGenerator", () => {
|
|
|
263
323
|
|
|
264
324
|
it("should assign specification extension fields when included", function () {
|
|
265
325
|
mockServerless.service.custom.documentation["x-field"] = "john";
|
|
266
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
326
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
327
|
+
mockServerless,
|
|
328
|
+
logger
|
|
329
|
+
);
|
|
267
330
|
definitionGenerator.createInfo();
|
|
268
331
|
|
|
269
332
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -274,7 +337,10 @@ describe("DefinitionGenerator", () => {
|
|
|
274
337
|
|
|
275
338
|
it("should ignore fields that do not conform to specifiction extension", function () {
|
|
276
339
|
mockServerless.service.custom.documentation.otherField = "john";
|
|
277
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
340
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
341
|
+
mockServerless,
|
|
342
|
+
logger
|
|
343
|
+
);
|
|
278
344
|
definitionGenerator.createInfo();
|
|
279
345
|
|
|
280
346
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -296,7 +362,10 @@ describe("DefinitionGenerator", () => {
|
|
|
296
362
|
},
|
|
297
363
|
};
|
|
298
364
|
|
|
299
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
365
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
366
|
+
mockServerless,
|
|
367
|
+
logger
|
|
368
|
+
);
|
|
300
369
|
definitionGenerator.createSecuritySchemes(
|
|
301
370
|
mockServerless.service.custom.documentation.securitySchemes
|
|
302
371
|
);
|
|
@@ -328,7 +397,10 @@ describe("DefinitionGenerator", () => {
|
|
|
328
397
|
},
|
|
329
398
|
};
|
|
330
399
|
|
|
331
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
400
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
401
|
+
mockServerless,
|
|
402
|
+
logger
|
|
403
|
+
);
|
|
332
404
|
expect(() => {
|
|
333
405
|
definitionGenerator.createSecuritySchemes(
|
|
334
406
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -346,7 +418,10 @@ describe("DefinitionGenerator", () => {
|
|
|
346
418
|
},
|
|
347
419
|
};
|
|
348
420
|
|
|
349
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
421
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
422
|
+
mockServerless,
|
|
423
|
+
logger
|
|
424
|
+
);
|
|
350
425
|
expect(() => {
|
|
351
426
|
definitionGenerator.createSecuritySchemes(
|
|
352
427
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -366,7 +441,10 @@ describe("DefinitionGenerator", () => {
|
|
|
366
441
|
},
|
|
367
442
|
};
|
|
368
443
|
|
|
369
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
444
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
445
|
+
mockServerless,
|
|
446
|
+
logger
|
|
447
|
+
);
|
|
370
448
|
definitionGenerator.createSecuritySchemes(
|
|
371
449
|
mockServerless.service.custom.documentation.securitySchemes
|
|
372
450
|
);
|
|
@@ -391,7 +469,10 @@ describe("DefinitionGenerator", () => {
|
|
|
391
469
|
},
|
|
392
470
|
};
|
|
393
471
|
|
|
394
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
472
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
473
|
+
mockServerless,
|
|
474
|
+
logger
|
|
475
|
+
);
|
|
395
476
|
expect(() => {
|
|
396
477
|
definitionGenerator.createSecuritySchemes(
|
|
397
478
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -409,7 +490,10 @@ describe("DefinitionGenerator", () => {
|
|
|
409
490
|
},
|
|
410
491
|
};
|
|
411
492
|
|
|
412
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
493
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
494
|
+
mockServerless,
|
|
495
|
+
logger
|
|
496
|
+
);
|
|
413
497
|
definitionGenerator.createSecuritySchemes(
|
|
414
498
|
mockServerless.service.custom.documentation.securitySchemes
|
|
415
499
|
);
|
|
@@ -434,7 +518,10 @@ describe("DefinitionGenerator", () => {
|
|
|
434
518
|
},
|
|
435
519
|
};
|
|
436
520
|
|
|
437
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
521
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
522
|
+
mockServerless,
|
|
523
|
+
logger
|
|
524
|
+
);
|
|
438
525
|
expect(() => {
|
|
439
526
|
definitionGenerator.createSecuritySchemes(
|
|
440
527
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -462,7 +549,10 @@ describe("DefinitionGenerator", () => {
|
|
|
462
549
|
},
|
|
463
550
|
};
|
|
464
551
|
|
|
465
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
552
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
553
|
+
mockServerless,
|
|
554
|
+
logger
|
|
555
|
+
);
|
|
466
556
|
definitionGenerator.createSecuritySchemes(
|
|
467
557
|
mockServerless.service.custom.documentation.securitySchemes
|
|
468
558
|
);
|
|
@@ -516,7 +606,10 @@ describe("DefinitionGenerator", () => {
|
|
|
516
606
|
},
|
|
517
607
|
};
|
|
518
608
|
|
|
519
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
609
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
610
|
+
mockServerless,
|
|
611
|
+
logger
|
|
612
|
+
);
|
|
520
613
|
expect(() => {
|
|
521
614
|
definitionGenerator.createSecuritySchemes(
|
|
522
615
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -539,7 +632,10 @@ describe("DefinitionGenerator", () => {
|
|
|
539
632
|
},
|
|
540
633
|
};
|
|
541
634
|
|
|
542
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
635
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
636
|
+
mockServerless,
|
|
637
|
+
logger
|
|
638
|
+
);
|
|
543
639
|
expect(() => {
|
|
544
640
|
definitionGenerator.createSecuritySchemes(
|
|
545
641
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -563,7 +659,10 @@ describe("DefinitionGenerator", () => {
|
|
|
563
659
|
},
|
|
564
660
|
};
|
|
565
661
|
|
|
566
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
662
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
663
|
+
mockServerless,
|
|
664
|
+
logger
|
|
665
|
+
);
|
|
567
666
|
expect(() => {
|
|
568
667
|
definitionGenerator.createSecuritySchemes(
|
|
569
668
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -589,7 +688,10 @@ describe("DefinitionGenerator", () => {
|
|
|
589
688
|
},
|
|
590
689
|
};
|
|
591
690
|
|
|
592
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
691
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
692
|
+
mockServerless,
|
|
693
|
+
logger
|
|
694
|
+
);
|
|
593
695
|
expect(() => {
|
|
594
696
|
definitionGenerator.createSecuritySchemes(
|
|
595
697
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -612,7 +714,10 @@ describe("DefinitionGenerator", () => {
|
|
|
612
714
|
},
|
|
613
715
|
};
|
|
614
716
|
|
|
615
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
717
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
718
|
+
mockServerless,
|
|
719
|
+
logger
|
|
720
|
+
);
|
|
616
721
|
expect(() => {
|
|
617
722
|
definitionGenerator.createSecuritySchemes(
|
|
618
723
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -635,7 +740,10 @@ describe("DefinitionGenerator", () => {
|
|
|
635
740
|
},
|
|
636
741
|
};
|
|
637
742
|
|
|
638
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
743
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
744
|
+
mockServerless,
|
|
745
|
+
logger
|
|
746
|
+
);
|
|
639
747
|
expect(() => {
|
|
640
748
|
definitionGenerator.createSecuritySchemes(
|
|
641
749
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -655,7 +763,10 @@ describe("DefinitionGenerator", () => {
|
|
|
655
763
|
},
|
|
656
764
|
};
|
|
657
765
|
|
|
658
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
766
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
767
|
+
mockServerless,
|
|
768
|
+
logger
|
|
769
|
+
);
|
|
659
770
|
expect(() => {
|
|
660
771
|
definitionGenerator.createSecuritySchemes(
|
|
661
772
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -676,7 +787,10 @@ describe("DefinitionGenerator", () => {
|
|
|
676
787
|
},
|
|
677
788
|
};
|
|
678
789
|
|
|
679
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
790
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
791
|
+
mockServerless,
|
|
792
|
+
logger
|
|
793
|
+
);
|
|
680
794
|
expect(() => {
|
|
681
795
|
definitionGenerator.createSecuritySchemes(
|
|
682
796
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -696,7 +810,10 @@ describe("DefinitionGenerator", () => {
|
|
|
696
810
|
},
|
|
697
811
|
};
|
|
698
812
|
|
|
699
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
813
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
814
|
+
mockServerless,
|
|
815
|
+
logger
|
|
816
|
+
);
|
|
700
817
|
expect(() => {
|
|
701
818
|
definitionGenerator.createSecuritySchemes(
|
|
702
819
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -716,7 +833,10 @@ describe("DefinitionGenerator", () => {
|
|
|
716
833
|
},
|
|
717
834
|
};
|
|
718
835
|
|
|
719
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
836
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
837
|
+
mockServerless,
|
|
838
|
+
logger
|
|
839
|
+
);
|
|
720
840
|
expect(() => {
|
|
721
841
|
definitionGenerator.createSecuritySchemes(
|
|
722
842
|
mockServerless.service.custom.documentation.securitySchemes
|
|
@@ -747,7 +867,10 @@ describe("DefinitionGenerator", () => {
|
|
|
747
867
|
},
|
|
748
868
|
};
|
|
749
869
|
|
|
750
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
870
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
871
|
+
mockServerless,
|
|
872
|
+
logger
|
|
873
|
+
);
|
|
751
874
|
definitionGenerator.createSecuritySchemes(
|
|
752
875
|
mockServerless.service.custom.documentation.securitySchemes
|
|
753
876
|
);
|
|
@@ -773,7 +896,10 @@ describe("DefinitionGenerator", () => {
|
|
|
773
896
|
it("should add tags to the openAPI object correctly", function () {
|
|
774
897
|
mockServerless.service.custom.documentation.tags = [{ name: "tag1" }];
|
|
775
898
|
|
|
776
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
899
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
900
|
+
mockServerless,
|
|
901
|
+
logger
|
|
902
|
+
);
|
|
777
903
|
definitionGenerator.createTags();
|
|
778
904
|
|
|
779
905
|
expect(definitionGenerator.openAPI).to.be.an("object");
|
|
@@ -782,10 +908,41 @@ describe("DefinitionGenerator", () => {
|
|
|
782
908
|
});
|
|
783
909
|
|
|
784
910
|
it("should not add tags when they are not defined", function () {
|
|
785
|
-
const definitionGenerator = new DefinitionGenerator(
|
|
911
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
912
|
+
mockServerless,
|
|
913
|
+
logger
|
|
914
|
+
);
|
|
786
915
|
expect(() => {
|
|
787
916
|
definitionGenerator.createTags();
|
|
788
917
|
}).to.throw();
|
|
789
918
|
});
|
|
790
919
|
});
|
|
920
|
+
|
|
921
|
+
describe(`createResponses`, async function () {
|
|
922
|
+
it(`handles creating headers with pragma as a default`, async function () {
|
|
923
|
+
const description = "this is a description";
|
|
924
|
+
const responseMock = {
|
|
925
|
+
methodResponses: [
|
|
926
|
+
{
|
|
927
|
+
responseBody: { description: description },
|
|
928
|
+
statusCode: 200,
|
|
929
|
+
owasp: { pragma: true },
|
|
930
|
+
},
|
|
931
|
+
],
|
|
932
|
+
};
|
|
933
|
+
|
|
934
|
+
const definitionGenerator = new DefinitionGenerator(
|
|
935
|
+
mockServerless,
|
|
936
|
+
logger
|
|
937
|
+
);
|
|
938
|
+
|
|
939
|
+
const response = await definitionGenerator.createResponses(responseMock);
|
|
940
|
+
|
|
941
|
+
expect(response).to.be.an("object");
|
|
942
|
+
expect(response).to.have.property("200");
|
|
943
|
+
expect(response["200"]).to.have.property("description", description);
|
|
944
|
+
expect(response["200"].headers).to.be.an("object");
|
|
945
|
+
expect(response["200"].headers).to.have.property("Pragma");
|
|
946
|
+
});
|
|
947
|
+
});
|
|
791
948
|
});
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const expect = require("chai").expect;
|
|
4
|
+
const sinon = require("sinon");
|
|
5
|
+
|
|
6
|
+
const Logger = require("../../src/logger");
|
|
7
|
+
|
|
8
|
+
describe(`Logger`, function () {
|
|
9
|
+
let sls, logOutput;
|
|
10
|
+
|
|
11
|
+
beforeEach(function () {
|
|
12
|
+
sls = {
|
|
13
|
+
service: {
|
|
14
|
+
service: "test-service",
|
|
15
|
+
provider: {
|
|
16
|
+
stage: "test",
|
|
17
|
+
},
|
|
18
|
+
getAllFunctions: () => {},
|
|
19
|
+
getFunction: () => {},
|
|
20
|
+
},
|
|
21
|
+
version: "3.0.0",
|
|
22
|
+
variables: {
|
|
23
|
+
service: {
|
|
24
|
+
custom: {},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
configSchemaHandler: {
|
|
28
|
+
defineFunctionEventProperties: () => {},
|
|
29
|
+
defineFunctionProperties: () => {},
|
|
30
|
+
defineCustomProperties: () => {},
|
|
31
|
+
},
|
|
32
|
+
classes: {
|
|
33
|
+
Error: class ServerlessError {
|
|
34
|
+
constructor(err) {
|
|
35
|
+
return new Error(err);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
processedInput: {
|
|
40
|
+
options: {
|
|
41
|
+
postmanCollection: "postman.json",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
logOutput = {
|
|
47
|
+
log: {
|
|
48
|
+
debug: (str) => {},
|
|
49
|
+
error: (str) => {},
|
|
50
|
+
info: (str) => {},
|
|
51
|
+
notice: (str) => {},
|
|
52
|
+
success: (str) => {},
|
|
53
|
+
verbose: (str) => {},
|
|
54
|
+
warning: (str) => {},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
describe(`debug`, function () {
|
|
60
|
+
it(`should log a debug log type when debug is called`, function () {
|
|
61
|
+
const logger = new Logger(sls, logOutput.log);
|
|
62
|
+
const spy = sinon.spy(logger, "log");
|
|
63
|
+
|
|
64
|
+
logger.debug("Testing");
|
|
65
|
+
|
|
66
|
+
expect(spy.called).to.be.true;
|
|
67
|
+
|
|
68
|
+
spy.restore();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe(`error`, function () {
|
|
73
|
+
it(`should log a error log type when error is called`, function () {
|
|
74
|
+
const logger = new Logger(sls, logOutput.log);
|
|
75
|
+
const spy = sinon.spy(logger, "log");
|
|
76
|
+
|
|
77
|
+
logger.error("Testing");
|
|
78
|
+
|
|
79
|
+
expect(spy.called).to.be.true;
|
|
80
|
+
|
|
81
|
+
spy.restore();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe(`info`, function () {
|
|
86
|
+
it(`should log a info log type when info is called`, function () {
|
|
87
|
+
const logger = new Logger(sls, logOutput.log);
|
|
88
|
+
const spy = sinon.spy(logger, "log");
|
|
89
|
+
|
|
90
|
+
logger.info("Testing");
|
|
91
|
+
|
|
92
|
+
expect(spy.called).to.be.true;
|
|
93
|
+
|
|
94
|
+
spy.restore();
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe(`notice`, function () {
|
|
99
|
+
it(`should log a notice log type when log is called without a log type`, function () {
|
|
100
|
+
const logger = new Logger(sls, logOutput.log);
|
|
101
|
+
const spy = sinon.spy(logger, "log");
|
|
102
|
+
|
|
103
|
+
logger.log("Testing");
|
|
104
|
+
|
|
105
|
+
expect(spy.called).to.be.true;
|
|
106
|
+
|
|
107
|
+
spy.restore();
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it(`should log a notice log type when notice is called`, function () {
|
|
111
|
+
const logger = new Logger(sls, logOutput.log);
|
|
112
|
+
const spy = sinon.spy(logger, "log");
|
|
113
|
+
|
|
114
|
+
logger.notice("Testing");
|
|
115
|
+
|
|
116
|
+
expect(spy.called).to.be.true;
|
|
117
|
+
|
|
118
|
+
spy.restore();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
describe(`success`, function () {
|
|
123
|
+
it(`should log a success log type when success is called`, function () {
|
|
124
|
+
const logger = new Logger(sls, logOutput.log);
|
|
125
|
+
const spy = sinon.spy(logger, "log");
|
|
126
|
+
|
|
127
|
+
logger.success("Testing");
|
|
128
|
+
|
|
129
|
+
expect(spy.called).to.be.true;
|
|
130
|
+
|
|
131
|
+
spy.restore();
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
describe(`verbose`, function () {
|
|
136
|
+
it(`should log a verbose log type when verbose is called`, function () {
|
|
137
|
+
const logger = new Logger(sls, logOutput.log);
|
|
138
|
+
const spy = sinon.spy(logger, "log");
|
|
139
|
+
|
|
140
|
+
logger.verbose("Testing");
|
|
141
|
+
|
|
142
|
+
expect(spy.called).to.be.true;
|
|
143
|
+
|
|
144
|
+
spy.restore();
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
describe(`warning`, function () {
|
|
149
|
+
it(`should log a warning log type when warning is called`, function () {
|
|
150
|
+
const logger = new Logger(sls, logOutput.log);
|
|
151
|
+
const spy = sinon.spy(logger, "log");
|
|
152
|
+
|
|
153
|
+
logger.warning("Testing");
|
|
154
|
+
|
|
155
|
+
expect(spy.called).to.be.true;
|
|
156
|
+
|
|
157
|
+
spy.restore();
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
});
|