@digitraffic/common 2022.10.5

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 (199) hide show
  1. package/LICENSE +291 -0
  2. package/aws/infra/api/integration.d.ts +21 -0
  3. package/aws/infra/api/integration.js +52 -0
  4. package/aws/infra/api/response.d.ts +22 -0
  5. package/aws/infra/api/response.js +61 -0
  6. package/aws/infra/api/responses.d.ts +39 -0
  7. package/aws/infra/api/responses.js +79 -0
  8. package/aws/infra/api/static-integration.d.ts +15 -0
  9. package/aws/infra/api/static-integration.js +54 -0
  10. package/aws/infra/canaries/canary-alarm.d.ts +6 -0
  11. package/aws/infra/canaries/canary-alarm.js +26 -0
  12. package/aws/infra/canaries/canary-parameters.d.ts +18 -0
  13. package/aws/infra/canaries/canary-parameters.js +3 -0
  14. package/aws/infra/canaries/canary-role.d.ts +6 -0
  15. package/aws/infra/canaries/canary-role.js +46 -0
  16. package/aws/infra/canaries/canary.d.ts +8 -0
  17. package/aws/infra/canaries/canary.js +29 -0
  18. package/aws/infra/canaries/database-canary.d.ts +18 -0
  19. package/aws/infra/canaries/database-canary.js +55 -0
  20. package/aws/infra/canaries/database-checker.d.ts +21 -0
  21. package/aws/infra/canaries/database-checker.js +109 -0
  22. package/aws/infra/canaries/url-canary.d.ts +19 -0
  23. package/aws/infra/canaries/url-canary.js +46 -0
  24. package/aws/infra/canaries/url-checker.d.ts +46 -0
  25. package/aws/infra/canaries/url-checker.js +238 -0
  26. package/aws/infra/documentation.d.ts +56 -0
  27. package/aws/infra/documentation.js +95 -0
  28. package/aws/infra/scheduler.d.ts +12 -0
  29. package/aws/infra/scheduler.js +31 -0
  30. package/aws/infra/security-rule.d.ts +12 -0
  31. package/aws/infra/security-rule.js +39 -0
  32. package/aws/infra/sqs-integration.d.ts +7 -0
  33. package/aws/infra/sqs-integration.js +93 -0
  34. package/aws/infra/sqs-queue.d.ts +16 -0
  35. package/aws/infra/sqs-queue.js +130 -0
  36. package/aws/infra/stack/lambda-configs.d.ts +72 -0
  37. package/aws/infra/stack/lambda-configs.js +93 -0
  38. package/aws/infra/stack/monitoredfunction.d.ts +84 -0
  39. package/aws/infra/stack/monitoredfunction.js +135 -0
  40. package/aws/infra/stack/rest_apis.d.ts +40 -0
  41. package/aws/infra/stack/rest_apis.js +179 -0
  42. package/aws/infra/stack/stack-checking-aspect.d.ts +20 -0
  43. package/aws/infra/stack/stack-checking-aspect.js +163 -0
  44. package/aws/infra/stack/stack.d.ts +41 -0
  45. package/aws/infra/stack/stack.js +58 -0
  46. package/aws/infra/stack/subscription.d.ts +17 -0
  47. package/aws/infra/stack/subscription.js +41 -0
  48. package/aws/infra/usage-plans.d.ts +15 -0
  49. package/aws/infra/usage-plans.js +42 -0
  50. package/aws/runtime/apikey.d.ts +2 -0
  51. package/aws/runtime/apikey.js +13 -0
  52. package/aws/runtime/digitraffic-integration-response.d.ts +8 -0
  53. package/aws/runtime/digitraffic-integration-response.js +26 -0
  54. package/aws/runtime/messaging.d.ts +10 -0
  55. package/aws/runtime/messaging.js +31 -0
  56. package/aws/runtime/s3.d.ts +2 -0
  57. package/aws/runtime/s3.js +30 -0
  58. package/aws/runtime/secrets/dbsecret.d.ts +54 -0
  59. package/aws/runtime/secrets/dbsecret.js +96 -0
  60. package/aws/runtime/secrets/proxy-holder.d.ts +9 -0
  61. package/aws/runtime/secrets/proxy-holder.js +26 -0
  62. package/aws/runtime/secrets/rds-holder.d.ts +9 -0
  63. package/aws/runtime/secrets/rds-holder.js +26 -0
  64. package/aws/runtime/secrets/secret-holder.d.ts +26 -0
  65. package/aws/runtime/secrets/secret-holder.js +73 -0
  66. package/aws/runtime/secrets/secret.d.ts +8 -0
  67. package/aws/runtime/secrets/secret.js +43 -0
  68. package/aws/types/errors.d.ts +4 -0
  69. package/aws/types/errors.js +9 -0
  70. package/aws/types/lambda-response.d.ts +12 -0
  71. package/aws/types/lambda-response.js +28 -0
  72. package/aws/types/mediatypes.d.ts +10 -0
  73. package/aws/types/mediatypes.js +15 -0
  74. package/aws/types/model-with-reference.d.ts +7 -0
  75. package/aws/types/model-with-reference.js +3 -0
  76. package/aws/types/proxytypes.d.ts +26 -0
  77. package/aws/types/proxytypes.js +3 -0
  78. package/aws/types/tags.d.ts +2 -0
  79. package/aws/types/tags.js +7 -0
  80. package/database/cached.d.ts +7 -0
  81. package/database/cached.js +32 -0
  82. package/database/database.d.ts +19 -0
  83. package/database/database.js +62 -0
  84. package/database/last-updated.d.ts +16 -0
  85. package/database/last-updated.js +54 -0
  86. package/index.d.ts +1 -0
  87. package/index.js +18 -0
  88. package/marine/id_utils.d.ts +3 -0
  89. package/marine/id_utils.js +33 -0
  90. package/marine/rtz.d.ts +48 -0
  91. package/marine/rtz.js +3 -0
  92. package/package.json +55 -0
  93. package/src/aws/infra/api/integration.js +52 -0
  94. package/src/aws/infra/api/response.js +61 -0
  95. package/src/aws/infra/api/responses.js +79 -0
  96. package/src/aws/infra/api/static-integration.js +54 -0
  97. package/src/aws/infra/canaries/canary-alarm.js +26 -0
  98. package/src/aws/infra/canaries/canary-parameters.js +3 -0
  99. package/src/aws/infra/canaries/canary-role.js +46 -0
  100. package/src/aws/infra/canaries/canary.js +29 -0
  101. package/src/aws/infra/canaries/database-canary.js +55 -0
  102. package/src/aws/infra/canaries/database-checker.js +109 -0
  103. package/src/aws/infra/canaries/url-canary.js +46 -0
  104. package/src/aws/infra/canaries/url-checker.js +238 -0
  105. package/src/aws/infra/documentation.js +95 -0
  106. package/src/aws/infra/scheduler.js +31 -0
  107. package/src/aws/infra/security-rule.js +39 -0
  108. package/src/aws/infra/sqs-integration.js +93 -0
  109. package/src/aws/infra/sqs-queue.js +130 -0
  110. package/src/aws/infra/stack/lambda-configs.js +93 -0
  111. package/src/aws/infra/stack/monitoredfunction.js +135 -0
  112. package/src/aws/infra/stack/rest_apis.js +179 -0
  113. package/src/aws/infra/stack/stack-checking-aspect.js +163 -0
  114. package/src/aws/infra/stack/stack.js +58 -0
  115. package/src/aws/infra/stack/subscription.js +41 -0
  116. package/src/aws/infra/usage-plans.js +42 -0
  117. package/src/aws/runtime/apikey.js +13 -0
  118. package/src/aws/runtime/digitraffic-integration-response.js +26 -0
  119. package/src/aws/runtime/messaging.js +31 -0
  120. package/src/aws/runtime/s3.js +30 -0
  121. package/src/aws/runtime/secrets/dbsecret.js +96 -0
  122. package/src/aws/runtime/secrets/proxy-holder.js +26 -0
  123. package/src/aws/runtime/secrets/rds-holder.js +26 -0
  124. package/src/aws/runtime/secrets/secret-holder.js +73 -0
  125. package/src/aws/runtime/secrets/secret.js +43 -0
  126. package/src/aws/types/errors.js +9 -0
  127. package/src/aws/types/lambda-response.js +28 -0
  128. package/src/aws/types/mediatypes.js +15 -0
  129. package/src/aws/types/model-with-reference.js +3 -0
  130. package/src/aws/types/proxytypes.js +3 -0
  131. package/src/aws/types/tags.js +7 -0
  132. package/src/database/cached.js +32 -0
  133. package/src/database/database.js +62 -0
  134. package/src/database/last-updated.js +54 -0
  135. package/src/marine/id_utils.js +33 -0
  136. package/src/marine/rtz.js +3 -0
  137. package/src/test/asserter.js +45 -0
  138. package/src/test/db-testutils.js +31 -0
  139. package/src/test/httpserver.js +67 -0
  140. package/src/test/secret.js +25 -0
  141. package/src/test/secrets-manager.js +59 -0
  142. package/src/test/testutils.js +44 -0
  143. package/src/types/input-error.js +7 -0
  144. package/src/types/language.js +10 -0
  145. package/src/types/traffictype.js +13 -0
  146. package/src/types/validator.js +14 -0
  147. package/src/utils/api-model.js +129 -0
  148. package/src/utils/base64.js +21 -0
  149. package/src/utils/date-utils.js +34 -0
  150. package/src/utils/geojson-types.js +18 -0
  151. package/src/utils/geometry.js +140 -0
  152. package/src/utils/retry.js +50 -0
  153. package/src/utils/slack.js +25 -0
  154. package/src/utils/utils.js +40 -0
  155. package/test/asserter.d.ts +11 -0
  156. package/test/asserter.js +45 -0
  157. package/test/db-testutils.d.ts +2 -0
  158. package/test/db-testutils.js +31 -0
  159. package/test/httpserver.d.ts +18 -0
  160. package/test/httpserver.js +67 -0
  161. package/test/marine/id_utils.test.js +69 -0
  162. package/test/promise/promise.test.js +125 -0
  163. package/test/secret.d.ts +3 -0
  164. package/test/secret.js +25 -0
  165. package/test/secrets/dbsecret.test.js +71 -0
  166. package/test/secrets/secret-holder.test.js +124 -0
  167. package/test/secrets/secret.test.js +66 -0
  168. package/test/secrets-manager.d.ts +9 -0
  169. package/test/secrets-manager.js +59 -0
  170. package/test/test/httpserver.test.js +87 -0
  171. package/test/testutils.d.ts +12 -0
  172. package/test/testutils.js +44 -0
  173. package/test/utils/date-utils.test.js +51 -0
  174. package/test/utils/geometry.test.js +49 -0
  175. package/test/utils/utils.test.js +49 -0
  176. package/types/input-error.d.ts +2 -0
  177. package/types/input-error.js +7 -0
  178. package/types/language.d.ts +5 -0
  179. package/types/language.js +10 -0
  180. package/types/traffictype.d.ts +8 -0
  181. package/types/traffictype.js +13 -0
  182. package/types/validator.d.ts +4 -0
  183. package/types/validator.js +14 -0
  184. package/utils/api-model.d.ts +87 -0
  185. package/utils/api-model.js +129 -0
  186. package/utils/base64.d.ts +12 -0
  187. package/utils/base64.js +21 -0
  188. package/utils/date-utils.d.ts +17 -0
  189. package/utils/date-utils.js +34 -0
  190. package/utils/geojson-types.d.ts +14 -0
  191. package/utils/geojson-types.js +18 -0
  192. package/utils/geometry.d.ts +36 -0
  193. package/utils/geometry.js +140 -0
  194. package/utils/retry.d.ts +13 -0
  195. package/utils/retry.js +50 -0
  196. package/utils/slack.d.ts +5 -0
  197. package/utils/slack.js +25 -0
  198. package/utils/utils.d.ts +22 -0
  199. package/utils/utils.js +40 -0
@@ -0,0 +1,69 @@
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 __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const IdUtils = __importStar(require("../../src/marine/id_utils"));
27
+ const testutils_1 = require("../../src/test/testutils");
28
+ describe('IdUtils tests', () => {
29
+ test('isValidLOCODE - success', () => {
30
+ expect(IdUtils.isValidLOCODE('FILOL')).toBe(true);
31
+ });
32
+ test('isValidLOCODE - fail with non-finnish prefix', () => {
33
+ expect(IdUtils.isValidLOCODE('SEABS')).toBe(false);
34
+ });
35
+ test('isValidLOCODE - fail with numbers', () => {
36
+ expect(IdUtils.isValidLOCODE('FIAA1')).toBe(false);
37
+ });
38
+ test('isValidIMO - successful checksum - ship TRANSMAR', () => {
39
+ expect(IdUtils.isValidIMO(9167332)).toBe(true);
40
+ });
41
+ test('isValidIMO - successful checksum - ship ANNIKA B', () => {
42
+ expect(IdUtils.isValidIMO(9213715)).toBe(true);
43
+ });
44
+ test('isValidIMO - successful checksum - ship X PRESS ELBE', () => {
45
+ expect(IdUtils.isValidIMO(9483669)).toBe(true);
46
+ });
47
+ test('isValidIMO - successful checksum - ship SILVERFORS', () => {
48
+ expect(IdUtils.isValidIMO(8322765)).toBe(true);
49
+ });
50
+ test('isValidIMO - invalid checksum', () => {
51
+ expect(IdUtils.isValidIMO(8322766)).toBe(false);
52
+ });
53
+ test('isValidIMO - fail with number smaller than 1000000', () => {
54
+ expect(IdUtils.isValidIMO((0, testutils_1.getRandomNumber)(0, 1000000 - 1))).toBe(false);
55
+ });
56
+ test('isValidIMO - fail with number larger than 9999999', () => {
57
+ expect(IdUtils.isValidIMO((0, testutils_1.getRandomNumber)(9999999 + 1, 99999999))).toBe(false);
58
+ });
59
+ test('isValidMMSI - success', () => {
60
+ expect(IdUtils.isValidMMSI(230927000)).toBe(true);
61
+ });
62
+ test('isValidMMSI - fail with number smaller than 100000000', () => {
63
+ expect(IdUtils.isValidMMSI((0, testutils_1.getRandomNumber)(0, 100000000 - 1))).toBe(false);
64
+ });
65
+ test('isValidMMSI - fail with number larger than 999999999', () => {
66
+ expect(IdUtils.isValidMMSI((0, testutils_1.getRandomNumber)(999999999 + 1, 9999999999))).toBe(false);
67
+ });
68
+ });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRfdXRpbHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvbWFyaW5lL2lkX3V0aWxzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUFxRDtBQUNyRCx3REFBeUQ7QUFFekQsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFFM0IsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1FBQzNDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7UUFDMUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsc0RBQXNELEVBQUUsR0FBRyxFQUFFO1FBQzlELE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtRQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1FBQzVELE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUEsMkJBQWUsRUFBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1FBQzNELE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUEsMkJBQWUsRUFBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkYsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLEdBQUcsRUFBRTtRQUMvRCxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFBLDJCQUFlLEVBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHNEQUFzRCxFQUFFLEdBQUcsRUFBRTtRQUM5RCxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFBLDJCQUFlLEVBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hGLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBJZFV0aWxzIGZyb20gJy4uLy4uL3NyYy9tYXJpbmUvaWRfdXRpbHMnO1xuaW1wb3J0IHtnZXRSYW5kb21OdW1iZXJ9IGZyb20gXCIuLi8uLi9zcmMvdGVzdC90ZXN0dXRpbHNcIjtcblxuZGVzY3JpYmUoJ0lkVXRpbHMgdGVzdHMnLCAoKSA9PiB7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkTE9DT0RFIC0gc3VjY2VzcycsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KElkVXRpbHMuaXNWYWxpZExPQ09ERSgnRklMT0wnKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2lzVmFsaWRMT0NPREUgLSBmYWlsIHdpdGggbm9uLWZpbm5pc2ggcHJlZml4JywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoSWRVdGlscy5pc1ZhbGlkTE9DT0RFKCdTRUFCUycpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2lzVmFsaWRMT0NPREUgLSBmYWlsIHdpdGggbnVtYmVycycsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KElkVXRpbHMuaXNWYWxpZExPQ09ERSgnRklBQTEnKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkSU1PIC0gc3VjY2Vzc2Z1bCBjaGVja3N1bSAtIHNoaXAgVFJBTlNNQVInLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChJZFV0aWxzLmlzVmFsaWRJTU8oOTE2NzMzMikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkSU1PIC0gc3VjY2Vzc2Z1bCBjaGVja3N1bSAtIHNoaXAgQU5OSUtBIEInLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChJZFV0aWxzLmlzVmFsaWRJTU8oOTIxMzcxNSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkSU1PIC0gc3VjY2Vzc2Z1bCBjaGVja3N1bSAtIHNoaXAgWCBQUkVTUyBFTEJFJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoSWRVdGlscy5pc1ZhbGlkSU1PKDk0ODM2NjkpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnaXNWYWxpZElNTyAtIHN1Y2Nlc3NmdWwgY2hlY2tzdW0gLSBzaGlwIFNJTFZFUkZPUlMnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChJZFV0aWxzLmlzVmFsaWRJTU8oODMyMjc2NSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkSU1PIC0gaW52YWxpZCBjaGVja3N1bScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KElkVXRpbHMuaXNWYWxpZElNTyg4MzIyNzY2KSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkSU1PIC0gZmFpbCB3aXRoIG51bWJlciBzbWFsbGVyIHRoYW4gMTAwMDAwMCcsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KElkVXRpbHMuaXNWYWxpZElNTyhnZXRSYW5kb21OdW1iZXIoMCwgMTAwMDAwMCAtIDEpKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkSU1PIC0gZmFpbCB3aXRoIG51bWJlciBsYXJnZXIgdGhhbiA5OTk5OTk5JywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoSWRVdGlscy5pc1ZhbGlkSU1PKGdldFJhbmRvbU51bWJlcig5OTk5OTk5ICsgMSwgOTk5OTk5OTkpKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkTU1TSSAtIHN1Y2Nlc3MnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChJZFV0aWxzLmlzVmFsaWRNTVNJKDIzMDkyNzAwMCkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkTU1TSSAtIGZhaWwgd2l0aCBudW1iZXIgc21hbGxlciB0aGFuIDEwMDAwMDAwMCcsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KElkVXRpbHMuaXNWYWxpZE1NU0koZ2V0UmFuZG9tTnVtYmVyKDAsIDEwMDAwMDAwMCAtIDEpKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpc1ZhbGlkTU1TSSAtIGZhaWwgd2l0aCBudW1iZXIgbGFyZ2VyIHRoYW4gOTk5OTk5OTk5JywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoSWRVdGlscy5pc1ZhbGlkTU1TSShnZXRSYW5kb21OdW1iZXIoOTk5OTk5OTk5ICsgMSwgOTk5OTk5OTk5OSkpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testutils_1 = require("../../src/test/testutils");
4
+ const retry_1 = require("../../src/utils/retry");
5
+ describe('Promise utils tests', () => {
6
+ test('retry - no retries', async () => {
7
+ const fn = jest.fn().mockResolvedValue(1);
8
+ const ret = await (0, retry_1.retry)(fn, 0, retry_1.RetryLogError.NO_LOGGING);
9
+ expect(ret).toBe(1);
10
+ expect(fn.mock.calls.length).toBe(1);
11
+ });
12
+ test('retry - error with n+1 retries', async () => {
13
+ const fn = jest.fn().mockRejectedValue('error');
14
+ const retries = (0, testutils_1.getRandomInteger)(1, 10);
15
+ try {
16
+ await (0, retry_1.retry)(fn, retries, retry_1.RetryLogError.NO_LOGGING);
17
+ }
18
+ catch {
19
+ // ignore
20
+ }
21
+ finally {
22
+ expect(fn.mock.calls.length).toBe(retries + 1);
23
+ }
24
+ });
25
+ test('retry - no error with n+1 retries', async () => {
26
+ const fn = jest.fn().mockResolvedValue(1);
27
+ const retries = (0, testutils_1.getRandomInteger)(1, 10);
28
+ const ret = await (0, retry_1.retry)(fn, retries, retry_1.RetryLogError.NO_LOGGING);
29
+ expect(ret).toBe(1);
30
+ expect(fn.mock.calls.length).toBe(1);
31
+ });
32
+ test('retry - errors with no error logging', async () => {
33
+ const fn = jest.fn().mockRejectedValue('error');
34
+ const consoleErrorSpy = jest.spyOn(global.console, 'error').mockImplementation();
35
+ try {
36
+ await (0, retry_1.retry)(fn, (0, testutils_1.getRandomInteger)(0, 10), retry_1.RetryLogError.NO_LOGGING);
37
+ }
38
+ catch {
39
+ // ignore
40
+ }
41
+ finally {
42
+ expect(consoleErrorSpy).toHaveBeenCalledTimes(0);
43
+ consoleErrorSpy.mockRestore();
44
+ }
45
+ });
46
+ test('retry - no retries with error logging', async () => {
47
+ const fn = jest.fn().mockRejectedValue('error');
48
+ const consoleErrorSpy = jest.spyOn(global.console, 'error').mockImplementation();
49
+ try {
50
+ await (0, retry_1.retry)(fn, 0, retry_1.RetryLogError.LOG_ALL_AS_ERRORS);
51
+ }
52
+ catch {
53
+ // ignore
54
+ }
55
+ finally {
56
+ expect(consoleErrorSpy).toHaveBeenCalledTimes(1);
57
+ consoleErrorSpy.mockRestore();
58
+ }
59
+ });
60
+ test('retry - retries with error logging', async () => {
61
+ const fn = jest.fn().mockRejectedValue('error');
62
+ const retries = (0, testutils_1.getRandomInteger)(1, 10);
63
+ const consoleErrorSpy = jest.spyOn(global.console, 'error').mockImplementation();
64
+ try {
65
+ await (0, retry_1.retry)(fn, retries, retry_1.RetryLogError.LOG_ALL_AS_ERRORS);
66
+ }
67
+ catch {
68
+ // ignore
69
+ }
70
+ finally {
71
+ expect(consoleErrorSpy).toHaveBeenCalledTimes(retries + 1);
72
+ consoleErrorSpy.mockRestore();
73
+ }
74
+ });
75
+ test('retry - exceeded retry count throws error', async () => {
76
+ const fn = jest.fn().mockRejectedValue('error');
77
+ await expect(() => (0, retry_1.retry)(fn, 3, retry_1.RetryLogError.LOG_ALL_AS_ERRORS)).rejects.toThrow();
78
+ });
79
+ test('retry - defaults', async () => {
80
+ const fn = jest.fn().mockRejectedValue('error');
81
+ const consoleErrorSpy = jest.spyOn(global.console, 'error').mockImplementation();
82
+ try {
83
+ await (0, retry_1.retry)(fn);
84
+ }
85
+ catch {
86
+ // ignore
87
+ }
88
+ finally {
89
+ expect(fn.mock.calls.length).toBe(3 + 1);
90
+ expect(consoleErrorSpy).toHaveBeenCalledTimes(1); // last retry
91
+ }
92
+ });
93
+ test('retry - NaN throws error', async () => {
94
+ const fn = jest.fn();
95
+ await expect(() => (0, retry_1.retry)(fn, NaN, retry_1.RetryLogError.NO_LOGGING)).rejects.toThrow();
96
+ });
97
+ test('retry - Infinity throws error', async () => {
98
+ const fn = jest.fn();
99
+ await expect(() => (0, retry_1.retry)(fn, Infinity, retry_1.RetryLogError.NO_LOGGING)).rejects.toThrow();
100
+ });
101
+ test('retry - exceeded maximum retry count throws error', async () => {
102
+ const fn = jest.fn();
103
+ await expect(() => (0, retry_1.retry)(fn, (0, testutils_1.getRandomInteger)(101, 1000000), retry_1.RetryLogError.NO_LOGGING)).rejects.toThrow();
104
+ });
105
+ test('retry - use without mocks without retry', async () => {
106
+ const val = 1;
107
+ const fn = () => Promise.resolve(val);
108
+ const ret = await (0, retry_1.retry)(fn);
109
+ expect(ret).toBe(val);
110
+ });
111
+ test('retry - use without mocks with retry', async () => {
112
+ let i = 0;
113
+ const val = 1;
114
+ const fn = () => {
115
+ if (i < 3) {
116
+ i++;
117
+ throw new Error('not yet');
118
+ }
119
+ return Promise.resolve(val);
120
+ };
121
+ const ret = await (0, retry_1.retry)(fn);
122
+ expect(ret).toBe(val);
123
+ });
124
+ });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9wcm9taXNlL3Byb21pc2UudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdEQUEwRDtBQUMxRCxpREFBMkQ7QUFFM0QsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtJQUVqQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxhQUFLLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxxQkFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM5QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsSUFBQSw0QkFBZ0IsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFeEMsSUFBSTtZQUNBLE1BQU0sSUFBQSxhQUFLLEVBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxxQkFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3REO1FBQUMsTUFBTTtZQUNKLFNBQVM7U0FDWjtnQkFBUztZQUNOLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FB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QSxhQUFLLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDZCxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsQ0FBQyxFQUFFLENBQUM7Z0JBQ0osTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUM5QjtZQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUEsYUFBSyxFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2V0UmFuZG9tSW50ZWdlcn0gZnJvbSBcIi4uLy4uL3NyYy90ZXN0L3Rlc3R1dGlsc1wiO1xuaW1wb3J0IHtyZXRyeSwgUmV0cnlMb2dFcnJvcn0gZnJvbSBcIi4uLy4uL3NyYy91dGlscy9yZXRyeVwiO1xuXG5kZXNjcmliZSgnUHJvbWlzZSB1dGlscyB0ZXN0cycsICgpID0+IHtcblxuICAgIHRlc3QoJ3JldHJ5IC0gbm8gcmV0cmllcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgZm4gPSBqZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoMSk7XG5cbiAgICAgICAgY29uc3QgcmV0ID0gYXdhaXQgcmV0cnkoZm4sIDAsIFJldHJ5TG9nRXJyb3IuTk9fTE9HR0lORyk7XG5cbiAgICAgICAgZXhwZWN0KHJldCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGZuLm1vY2suY2FsbHMubGVuZ3RoKS50b0JlKDEpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmV0cnkgLSBlcnJvciB3aXRoIG4rMSByZXRyaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBmbiA9IGplc3QuZm4oKS5tb2NrUmVqZWN0ZWRWYWx1ZSgnZXJyb3InKTtcbiAgICAgICAgY29uc3QgcmV0cmllcyA9IGdldFJhbmRvbUludGVnZXIoMSwgMTApO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCByZXRyeShmbiwgcmV0cmllcywgUmV0cnlMb2dFcnJvci5OT19MT0dHSU5HKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGV4cGVjdChmbi5tb2NrLmNhbGxzLmxlbmd0aCkudG9CZShyZXRyaWVzICsgMSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gbm8gZXJyb3Igd2l0aCBuKzEgcmV0cmllcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgZm4gPSBqZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoMSk7XG4gICAgICAgIGNvbnN0IHJldHJpZXMgPSBnZXRSYW5kb21JbnRlZ2VyKDEsIDEwKTtcblxuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCByZXRyeShmbiwgcmV0cmllcywgUmV0cnlMb2dFcnJvci5OT19MT0dHSU5HKTtcblxuICAgICAgICBleHBlY3QocmV0KS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZm4ubW9jay5jYWxscy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdyZXRyeSAtIGVycm9ycyB3aXRoIG5vIGVycm9yIGxvZ2dpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gamVzdC5mbigpLm1vY2tSZWplY3RlZFZhbHVlKCdlcnJvcicpO1xuICAgICAgICBjb25zdCBjb25zb2xlRXJyb3JTcHkgPSBqZXN0LnNweU9uKGdsb2JhbC5jb25zb2xlLCAnZXJyb3InKS5tb2NrSW1wbGVtZW50YXRpb24oKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcmV0cnkoZm4sIGdldFJhbmRvbUludGVnZXIoMCwgMTApLCBSZXRyeUxvZ0Vycm9yLk5PX0xPR0dJTkcpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZXhwZWN0KGNvbnNvbGVFcnJvclNweSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDApO1xuICAgICAgICAgICAgY29uc29sZUVycm9yU3B5Lm1vY2tSZXN0b3JlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gbm8gcmV0cmllcyB3aXRoIGVycm9yIGxvZ2dpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gamVzdC5mbigpLm1vY2tSZWplY3RlZFZhbHVlKCdlcnJvcicpO1xuICAgICAgICBjb25zdCBjb25zb2xlRXJyb3JTcHkgPSBqZXN0LnNweU9uKGdsb2JhbC5jb25zb2xlLCAnZXJyb3InKS5tb2NrSW1wbGVtZW50YXRpb24oKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcmV0cnkoZm4sIDAsIFJldHJ5TG9nRXJyb3IuTE9HX0FMTF9BU19FUlJPUlMpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZXhwZWN0KGNvbnNvbGVFcnJvclNweSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICAgICAgY29uc29sZUVycm9yU3B5Lm1vY2tSZXN0b3JlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gcmV0cmllcyB3aXRoIGVycm9yIGxvZ2dpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gamVzdC5mbigpLm1vY2tSZWplY3RlZFZhbHVlKCdlcnJvcicpO1xuICAgICAgICBjb25zdCByZXRyaWVzID0gZ2V0UmFuZG9tSW50ZWdlcigxLCAxMCk7XG4gICAgICAgIGNvbnN0IGNvbnNvbGVFcnJvclNweSA9IGplc3Quc3B5T24oZ2xvYmFsLmNvbnNvbGUsICdlcnJvcicpLm1vY2tJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCByZXRyeShmbiwgcmV0cmllcywgUmV0cnlMb2dFcnJvci5MT0dfQUxMX0FTX0VSUk9SUyk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBleHBlY3QoY29uc29sZUVycm9yU3B5KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMocmV0cmllcyArIDEpO1xuICAgICAgICAgICAgY29uc29sZUVycm9yU3B5Lm1vY2tSZXN0b3JlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gZXhjZWVkZWQgcmV0cnkgY291bnQgdGhyb3dzIGVycm9yJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBmbiA9IGplc3QuZm4oKS5tb2NrUmVqZWN0ZWRWYWx1ZSgnZXJyb3InKTtcblxuICAgICAgICBhd2FpdCBleHBlY3QoKCkgPT4gcmV0cnkoZm4sIDMsIFJldHJ5TG9nRXJyb3IuTE9HX0FMTF9BU19FUlJPUlMpKS5yZWplY3RzLnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gZGVmYXVsdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gamVzdC5mbigpLm1vY2tSZWplY3RlZFZhbHVlKCdlcnJvcicpO1xuICAgICAgICBjb25zdCBjb25zb2xlRXJyb3JTcHkgPSBqZXN0LnNweU9uKGdsb2JhbC5jb25zb2xlLCAnZXJyb3InKS5tb2NrSW1wbGVtZW50YXRpb24oKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcmV0cnkoZm4pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZXhwZWN0KGZuLm1vY2suY2FsbHMubGVuZ3RoKS50b0JlKDMgKyAxKTtcbiAgICAgICAgICAgIGV4cGVjdChjb25zb2xlRXJyb3JTcHkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTsgLy8gbGFzdCByZXRyeVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdyZXRyeSAtIE5hTiB0aHJvd3MgZXJyb3InLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gamVzdC5mbigpO1xuXG4gICAgICAgIGF3YWl0IGV4cGVjdCgoKSA9PiByZXRyeShmbiwgTmFOLCBSZXRyeUxvZ0Vycm9yLk5PX0xPR0dJTkcpKS5yZWplY3RzLnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gSW5maW5pdHkgdGhyb3dzIGVycm9yJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBmbiA9IGplc3QuZm4oKTtcblxuICAgICAgICBhd2FpdCBleHBlY3QoKCkgPT4gcmV0cnkoZm4sIEluZmluaXR5LCBSZXRyeUxvZ0Vycm9yLk5PX0xPR0dJTkcpKS5yZWplY3RzLnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gZXhjZWVkZWQgbWF4aW11bSByZXRyeSBjb3VudCB0aHJvd3MgZXJyb3InLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gamVzdC5mbigpO1xuXG4gICAgICAgIGF3YWl0IGV4cGVjdCgoKSA9PiByZXRyeShmbiwgZ2V0UmFuZG9tSW50ZWdlcigxMDEsIDEwMDAwMDApLCBSZXRyeUxvZ0Vycm9yLk5PX0xPR0dJTkcpKS5yZWplY3RzLnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3JldHJ5IC0gdXNlIHdpdGhvdXQgbW9ja3Mgd2l0aG91dCByZXRyeScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gMTtcbiAgICAgICAgY29uc3QgZm4gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUodmFsKTtcblxuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCByZXRyeShmbik7XG5cbiAgICAgICAgZXhwZWN0KHJldCkudG9CZSh2YWwpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmV0cnkgLSB1c2Ugd2l0aG91dCBtb2NrcyB3aXRoIHJldHJ5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGNvbnN0IHZhbCA9IDE7XG4gICAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgPCAzKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHlldCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHJldHJ5KGZuKTtcblxuICAgICAgICBleHBlY3QocmV0KS50b0JlKHZhbCk7XG4gICAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { EmptySecretFunction, SecretFunction } from "../aws/runtime/secrets/dbsecret";
2
+ export declare function createSecretFunction<Secret, Response>(secret: Secret): SecretFunction<Secret, Response>;
3
+ export declare function createEmptySecretFunction<Response>(): EmptySecretFunction<Response>;
package/test/secret.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEmptySecretFunction = exports.createSecretFunction = void 0;
4
+ const EMPTY_DB_SECRET = {
5
+ username: '',
6
+ password: '',
7
+ host: '',
8
+ // eslint-disable-next-line camelcase
9
+ ro_host: '',
10
+ };
11
+ function createSecretFunction(secret) {
12
+ // eslint-disable-next-line require-await
13
+ return async (secretId, fn) => {
14
+ return fn(secret);
15
+ };
16
+ }
17
+ exports.createSecretFunction = createSecretFunction;
18
+ function createEmptySecretFunction() {
19
+ // eslint-disable-next-line require-await
20
+ return async (secretId, fn) => {
21
+ return fn(EMPTY_DB_SECRET);
22
+ };
23
+ }
24
+ exports.createEmptySecretFunction = createEmptySecretFunction;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQU0sZUFBZSxHQUFhO0lBQzlCLFFBQVEsRUFBRSxFQUFFO0lBQ1osUUFBUSxFQUFFLEVBQUU7SUFDWixJQUFJLEVBQUUsRUFBRTtJQUNSLHFDQUFxQztJQUNyQyxPQUFPLEVBQUUsRUFBRTtDQUNkLENBQUM7QUFFRixTQUFnQixvQkFBb0IsQ0FBbUIsTUFBYztJQUNqRSx5Q0FBeUM7SUFDekMsT0FBTyxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxFQUE2QyxFQUFFLEVBQUU7UUFDN0UsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUxELG9EQUtDO0FBRUQsU0FBZ0IseUJBQXlCO0lBQ3JDLHlDQUF5QztJQUN6QyxPQUFPLEtBQUssRUFBRSxRQUFnQixFQUFFLEVBQStDLEVBQUUsRUFBRTtRQUMvRSxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQixDQUFDLENBQUM7QUFDTixDQUFDO0FBTEQsOERBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RiU2VjcmV0LCBFbXB0eVNlY3JldEZ1bmN0aW9uLCBTZWNyZXRGdW5jdGlvbiwgU2VjcmV0VG9Qcm9taXNlRnVuY3Rpb259IGZyb20gXCIuLi9hd3MvcnVudGltZS9zZWNyZXRzL2Ric2VjcmV0XCI7XG5cbmNvbnN0IEVNUFRZX0RCX1NFQ1JFVDogRGJTZWNyZXQgPSB7XG4gICAgdXNlcm5hbWU6ICcnLFxuICAgIHBhc3N3b3JkOiAnJyxcbiAgICBob3N0OiAnJyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG4gICAgcm9faG9zdDogJycsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VjcmV0RnVuY3Rpb248U2VjcmV0LCBSZXNwb25zZT4oc2VjcmV0OiBTZWNyZXQpOiBTZWNyZXRGdW5jdGlvbjxTZWNyZXQsIFJlc3BvbnNlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICByZXR1cm4gYXN5bmMgKHNlY3JldElkOiBzdHJpbmcsIGZuOiBTZWNyZXRUb1Byb21pc2VGdW5jdGlvbjxTZWNyZXQsIFJlc3BvbnNlPikgPT4ge1xuICAgICAgICByZXR1cm4gZm4oc2VjcmV0KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW1wdHlTZWNyZXRGdW5jdGlvbjxSZXNwb25zZT4oKTogRW1wdHlTZWNyZXRGdW5jdGlvbjxSZXNwb25zZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgcmV0dXJuIGFzeW5jIChzZWNyZXRJZDogc3RyaW5nLCBmbjogU2VjcmV0VG9Qcm9taXNlRnVuY3Rpb248RGJTZWNyZXQsIFJlc3BvbnNlPikgPT4ge1xuICAgICAgICByZXR1cm4gZm4oRU1QVFlfREJfU0VDUkVUKTtcbiAgICB9O1xufVxuIl19
@@ -0,0 +1,71 @@
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 __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const secrets_manager_1 = require("../../src/test/secrets-manager");
27
+ const sinon = __importStar(require("sinon"));
28
+ const SECRET_ID = "test_secret";
29
+ const SECRET_WITH_PREFIX = {
30
+ "prefix.value": "value",
31
+ "prefix.name": "name",
32
+ "wrong.value": "value",
33
+ };
34
+ const SECRET_EMPTY = {};
35
+ (0, secrets_manager_1.stubSecretsManager)();
36
+ const secret_1 = require("../../src/aws/runtime/secrets/secret");
37
+ describe('secret - test', () => {
38
+ afterEach(() => {
39
+ sinon.restore();
40
+ });
41
+ test('getSecret - no secret', async () => {
42
+ (0, secrets_manager_1.mockSecret)(null);
43
+ await expect(async () => {
44
+ await (0, secret_1.withSecret)(SECRET_ID, () => {
45
+ // do nothing
46
+ });
47
+ }).rejects.toThrowError("No secret found!");
48
+ });
49
+ test('getSecret - empty secret', async () => {
50
+ (0, secrets_manager_1.mockSecret)(SECRET_EMPTY);
51
+ await (0, secret_1.withSecret)(SECRET_ID, (secret) => {
52
+ expect(secret).toEqual(SECRET_EMPTY);
53
+ });
54
+ });
55
+ test('getSecret - no prefix', async () => {
56
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
57
+ await (0, secret_1.withSecret)(SECRET_ID, (secret) => {
58
+ expect(secret).toEqual(SECRET_WITH_PREFIX);
59
+ });
60
+ });
61
+ test('getSecret - with prefix', async () => {
62
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
63
+ await (0, secret_1.withSecretAndPrefix)(SECRET_ID, 'prefix', (secret) => {
64
+ expect(secret).toEqual({
65
+ value: "value",
66
+ name: "name",
67
+ });
68
+ });
69
+ });
70
+ });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJzZWNyZXQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qvc2VjcmV0cy9kYnNlY3JldC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvRUFBOEU7QUFFOUUsNkNBQStCO0FBRS9CLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQztBQUNoQyxNQUFNLGtCQUFrQixHQUFHO0lBQ3ZCLGNBQWMsRUFBRyxPQUFPO0lBQ3hCLGFBQWEsRUFBRyxNQUFNO0lBQ3RCLGFBQWEsRUFBRyxPQUFPO0NBQzFCLENBQUM7QUFDRixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFFeEIsSUFBQSxvQ0FBa0IsR0FBRSxDQUFDO0FBRXJCLGlFQUFvRztBQUVwRyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUMzQixTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ1gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JDLElBQUEsNEJBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUVqQixNQUFNLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixNQUFNLElBQUEsbUJBQVUsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUM3QixhQUFhO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3hDLElBQUEsNEJBQVUsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUV6QixNQUFNLElBQUEsbUJBQVUsRUFBQyxTQUFTLEVBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7WUFDbkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JDLElBQUEsNEJBQVUsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sSUFBQSxtQkFBVSxFQUFDLFNBQVMsRUFBRyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtZQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2QyxJQUFBLDRCQUFVLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUvQixNQUFNLElBQUEsNEJBQW1CLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtZQUN0RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNuQixLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsTUFBTTthQUNmLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBRVAsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bW9ja1NlY3JldCwgc3R1YlNlY3JldHNNYW5hZ2VyfSBmcm9tIFwiLi4vLi4vc3JjL3Rlc3Qvc2VjcmV0cy1tYW5hZ2VyXCI7XG5cbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcblxuY29uc3QgU0VDUkVUX0lEID0gXCJ0ZXN0X3NlY3JldFwiO1xuY29uc3QgU0VDUkVUX1dJVEhfUFJFRklYID0ge1xuICAgIFwicHJlZml4LnZhbHVlXCIgOiBcInZhbHVlXCIsXG4gICAgXCJwcmVmaXgubmFtZVwiIDogXCJuYW1lXCIsXG4gICAgXCJ3cm9uZy52YWx1ZVwiIDogXCJ2YWx1ZVwiLFxufTtcbmNvbnN0IFNFQ1JFVF9FTVBUWSA9IHt9O1xuXG5zdHViU2VjcmV0c01hbmFnZXIoKTtcblxuaW1wb3J0IHtHZW5lcmljU2VjcmV0LCB3aXRoU2VjcmV0LCB3aXRoU2VjcmV0QW5kUHJlZml4fSBmcm9tIFwiLi4vLi4vc3JjL2F3cy9ydW50aW1lL3NlY3JldHMvc2VjcmV0XCI7XG5cbmRlc2NyaWJlKCdzZWNyZXQgLSB0ZXN0JywgKCkgPT4ge1xuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldFNlY3JldCAtIG5vIHNlY3JldCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbW9ja1NlY3JldChudWxsKTtcblxuICAgICAgICBhd2FpdCBleHBlY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgd2l0aFNlY3JldChTRUNSRVRfSUQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkucmVqZWN0cy50b1Rocm93RXJyb3IoXCJObyBzZWNyZXQgZm91bmQhXCIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0U2VjcmV0IC0gZW1wdHkgc2VjcmV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBtb2NrU2VjcmV0KFNFQ1JFVF9FTVBUWSk7XG5cbiAgICAgICAgYXdhaXQgd2l0aFNlY3JldChTRUNSRVRfSUQsICAoc2VjcmV0OiBHZW5lcmljU2VjcmV0KSA9PiB7XG4gICAgICAgICAgICBleHBlY3Qoc2VjcmV0KS50b0VxdWFsKFNFQ1JFVF9FTVBUWSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0U2VjcmV0IC0gbm8gcHJlZml4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBtb2NrU2VjcmV0KFNFQ1JFVF9XSVRIX1BSRUZJWCk7XG5cbiAgICAgICAgYXdhaXQgd2l0aFNlY3JldChTRUNSRVRfSUQsICAoc2VjcmV0OiBHZW5lcmljU2VjcmV0KSA9PiB7XG4gICAgICAgICAgICBleHBlY3Qoc2VjcmV0KS50b0VxdWFsKFNFQ1JFVF9XSVRIX1BSRUZJWCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0U2VjcmV0IC0gd2l0aCBwcmVmaXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIG1vY2tTZWNyZXQoU0VDUkVUX1dJVEhfUFJFRklYKTtcblxuICAgICAgICBhd2FpdCB3aXRoU2VjcmV0QW5kUHJlZml4KFNFQ1JFVF9JRCwgJ3ByZWZpeCcsICAoc2VjcmV0OiBHZW5lcmljU2VjcmV0KSA9PiB7XG4gICAgICAgICAgICBleHBlY3Qoc2VjcmV0KS50b0VxdWFsKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJ2YWx1ZVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,124 @@
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 __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const secrets_manager_1 = require("../../src/test/secrets-manager");
27
+ const sinon = __importStar(require("sinon"));
28
+ const SECRET_WITH_PREFIX = {
29
+ "prefix.value": "value",
30
+ "prefix.name": "name",
31
+ "wrong.value": "value",
32
+ "username": "DB_USER",
33
+ };
34
+ const SECRET_EMPTY = {};
35
+ const stubSM = (0, secrets_manager_1.stubSecretsManager)();
36
+ const secret_holder_1 = require("../../src/aws/runtime/secrets/secret-holder");
37
+ const dbsecret_1 = require("../../src/aws/runtime/secrets/dbsecret");
38
+ describe('SecretHolder - tests', () => {
39
+ afterEach(() => {
40
+ sinon.restore();
41
+ sinon.reset();
42
+ delete process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER];
43
+ });
44
+ test('get - no secret', async () => {
45
+ (0, secrets_manager_1.mockSecret)(null);
46
+ const holder = secret_holder_1.SecretHolder.create();
47
+ await expect(async () => {
48
+ await holder.get();
49
+ }).rejects.toThrowError("No secret found!");
50
+ });
51
+ test('get - empty secret', async () => {
52
+ (0, secrets_manager_1.mockSecret)(SECRET_EMPTY);
53
+ const holder = secret_holder_1.SecretHolder.create();
54
+ const secret = await holder.get();
55
+ expect(secret).toEqual(SECRET_EMPTY);
56
+ });
57
+ test('get - no prefix', async () => {
58
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
59
+ const holder = secret_holder_1.SecretHolder.create();
60
+ const secret = await holder.get();
61
+ expect(secret).toEqual(SECRET_WITH_PREFIX);
62
+ });
63
+ test('get - check keys - not found', async () => {
64
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
65
+ const holder = secret_holder_1.SecretHolder.create('', ['not_found']);
66
+ await expect(async () => {
67
+ await holder.get();
68
+ }).rejects.toThrow();
69
+ });
70
+ test('get - check keys - found', async () => {
71
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
72
+ const holder = secret_holder_1.SecretHolder.create('', ['prefix.value', 'username']);
73
+ await holder.get();
74
+ });
75
+ test('setDatabaseCredentials - no prefix', async () => {
76
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
77
+ const holder = secret_holder_1.SecretHolder.create();
78
+ expect(process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER]).toBeUndefined();
79
+ await holder.setDatabaseCredentials();
80
+ expect(process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER]).toEqual(SECRET_WITH_PREFIX.username);
81
+ });
82
+ test('setDatabaseCredentials - with prefix', async () => {
83
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
84
+ const holder = secret_holder_1.SecretHolder.create('prefix');
85
+ expect(process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER]).toBeUndefined();
86
+ await holder.setDatabaseCredentials();
87
+ expect(process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER]).toEqual(SECRET_WITH_PREFIX.username);
88
+ });
89
+ test('getSecret - with prefix', async () => {
90
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
91
+ const holder = secret_holder_1.SecretHolder.create('prefix');
92
+ const secret = await holder.get();
93
+ expect(secret).toEqual({
94
+ value: "value",
95
+ name: "name",
96
+ });
97
+ });
98
+ test('get - ttl - do not fetch', async () => {
99
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
100
+ const holder = secret_holder_1.SecretHolder.create();
101
+ const callCount = stubSM.callCount;
102
+ await holder.get();
103
+ expect(stubSM.callCount).toEqual(callCount + 1);
104
+ // gets cached secret
105
+ await holder.get();
106
+ expect(stubSM.callCount).toEqual(callCount + 1);
107
+ });
108
+ test('get - ttl - fetch', async () => {
109
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
110
+ const holder = new secret_holder_1.SecretHolder('', '', [], {
111
+ ttl: 1,
112
+ });
113
+ const callCount = stubSM.callCount;
114
+ await holder.get();
115
+ expect(stubSM.callCount).toEqual(callCount + 1);
116
+ // cache expires, fetches secret again
117
+ const start = Date.now();
118
+ while (Date.now() < start + 2000)
119
+ ;
120
+ await holder.get();
121
+ expect(stubSM.callCount).toEqual(callCount + 2);
122
+ });
123
+ });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LWhvbGRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9zZWNyZXRzL3NlY3JldC1ob2xkZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0VBQThFO0FBRTlFLDZDQUErQjtBQUUvQixNQUFNLGtCQUFrQixHQUFHO0lBQ3ZCLGNBQWMsRUFBRyxPQUFPO0lBQ3hCLGFBQWEsRUFBRyxNQUFNO0lBQ3RCLGFBQWEsRUFBRyxPQUFPO0lBQ3ZCLFVBQVUsRUFBRSxTQUFTO0NBQ3hCLENBQUM7QUFDRixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFFeEIsTUFBTSxNQUFNLEdBQUcsSUFBQSxvQ0FBa0IsR0FBRSxDQUFDO0FBRXBDLCtFQUF5RTtBQUN6RSxxRUFBK0U7QUFFL0UsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ1gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMvQixJQUFBLDRCQUFVLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQUcsNEJBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQyxNQUFNLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixNQUFNLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENB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QUVILE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFFbkMsTUFBTSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWhELHNDQUFzQztRQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFDLElBQUk7WUFBQyxDQUFDO1FBRWhDLE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttb2NrU2VjcmV0LCBzdHViU2VjcmV0c01hbmFnZXJ9IGZyb20gXCIuLi8uLi9zcmMvdGVzdC9zZWNyZXRzLW1hbmFnZXJcIjtcblxuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuXG5jb25zdCBTRUNSRVRfV0lUSF9QUkVGSVggPSB7XG4gICAgXCJwcmVmaXgudmFsdWVcIiA6IFwidmFsdWVcIixcbiAgICBcInByZWZpeC5uYW1lXCIgOiBcIm5hbWVcIixcbiAgICBcIndyb25nLnZhbHVlXCIgOiBcInZhbHVlXCIsXG4gICAgXCJ1c2VybmFtZVwiOiBcIkRCX1VTRVJcIixcbn07XG5jb25zdCBTRUNSRVRfRU1QVFkgPSB7fTtcblxuY29uc3Qgc3R1YlNNID0gc3R1YlNlY3JldHNNYW5hZ2VyKCk7XG5cbmltcG9ydCB7U2VjcmV0SG9sZGVyfSBmcm9tIFwiLi4vLi4vc3JjL2F3cy9ydW50aW1lL3NlY3JldHMvc2VjcmV0LWhvbGRlclwiO1xuaW1wb3J0IHtEYXRhYmFzZUVudmlyb25tZW50S2V5c30gZnJvbSBcIi4uLy4uL3NyYy9hd3MvcnVudGltZS9zZWNyZXRzL2Ric2VjcmV0XCI7XG5cbmRlc2NyaWJlKCdTZWNyZXRIb2xkZXIgLSB0ZXN0cycsICgpID0+IHtcbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgICAgIHNpbm9uLnJlc2V0KCk7XG4gICAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VU0VSXTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldCAtIG5vIHNlY3JldCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbW9ja1NlY3JldChudWxsKTtcblxuICAgICAgICBjb25zdCBob2xkZXIgPSBTZWNyZXRIb2xkZXIuY3JlYXRlKCk7XG4gICAgICAgIGF3YWl0IGV4cGVjdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBob2xkZXIuZ2V0KCk7XG4gICAgICAgIH0pLnJlamVjdHMudG9UaHJvd0Vycm9yKFwiTm8gc2VjcmV0IGZvdW5kIVwiKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldCAtIGVtcHR5IHNlY3JldCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbW9ja1NlY3JldChTRUNSRVRfRU1QVFkpO1xuXG4gICAgICAgIGNvbnN0IGhvbGRlciA9IFNlY3JldEhvbGRlci5jcmVhdGUoKTtcbiAgICAgICAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgaG9sZGVyLmdldCgpO1xuXG4gICAgICAgIGV4cGVjdChzZWNyZXQpLnRvRXF1YWwoU0VDUkVUX0VNUFRZKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldCAtIG5vIHByZWZpeCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbW9ja1NlY3JldChTRUNSRVRfV0lUSF9QUkVGSVgpO1xuXG4gICAgICAgIGNvbnN0IGhvbGRlciA9IFNlY3JldEhvbGRlci5jcmVhdGUoKTtcbiAgICAgICAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgaG9sZGVyLmdldCgpO1xuXG4gICAgICAgIGV4cGVjdChzZWNyZXQpLnRvRXF1YWwoU0VDUkVUX1dJVEhfUFJFRklYKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldCAtIGNoZWNrIGtleXMgLSBub3QgZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIG1vY2tTZWNyZXQoU0VDUkVUX1dJVEhfUFJFRklYKTtcblxuICAgICAgICBjb25zdCBob2xkZXIgPSBTZWNyZXRIb2xkZXIuY3JlYXRlKCcnLCBbJ25vdF9mb3VuZCddKTtcbiAgICAgICAgYXdhaXQgZXhwZWN0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGhvbGRlci5nZXQoKTtcbiAgICAgICAgfSkucmVqZWN0cy50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdnZXQgLSBjaGVjayBrZXlzIC0gZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIG1vY2tTZWNyZXQoU0VDUkVUX1dJVEhfUFJFRklYKTtcblxuICAgICAgICBjb25zdCBob2xkZXIgPSBTZWNyZXRIb2xkZXIuY3JlYXRlKCcnLCBbJ3ByZWZpeC52YWx1ZScsICd1c2VybmFtZSddKTtcblxuICAgICAgICBhd2FpdCBob2xkZXIuZ2V0KCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdzZXREYXRhYmFzZUNyZWRlbnRpYWxzIC0gbm8gcHJlZml4JywgYXN5bmMoKSA9PiB7XG4gICAgICAgIG1vY2tTZWNyZXQoU0VDUkVUX1dJVEhfUFJFRklYKTtcblxuICAgICAgICBjb25zdCBob2xkZXIgPSBTZWNyZXRIb2xkZXIuY3JlYXRlKCk7XG4gICAgICAgIGV4cGVjdChwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VU0VSXSkudG9CZVVuZGVmaW5lZCgpO1xuXG4gICAgICAgIGF3YWl0IGhvbGRlci5zZXREYXRhYmFzZUNyZWRlbnRpYWxzKCk7XG4gICAgICAgIGV4cGVjdChwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VU0VSXSkudG9FcXVhbChTRUNSRVRfV0lUSF9QUkVGSVgudXNlcm5hbWUpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnc2V0RGF0YWJhc2VDcmVkZW50aWFscyAtIHdpdGggcHJlZml4JywgYXN5bmMoKSA9PiB7XG4gICAgICAgIG1vY2tTZWNyZXQoU0VDUkVUX1dJVEhfUFJFRklYKTtcblxuICAgICAgICBjb25zdCBob2xkZXIgPSBTZWNyZXRIb2xkZXIuY3JlYXRlKCdwcmVmaXgnKTtcbiAgICAgICAgZXhwZWN0KHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1VTRVJdKS50b0JlVW5kZWZpbmVkKCk7XG5cbiAgICAgICAgYXdhaXQgaG9sZGVyLnNldERhdGFiYXNlQ3JlZGVudGlhbHMoKTtcbiAgICAgICAgZXhwZWN0KHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1VTRVJdKS50b0VxdWFsKFNFQ1JFVF9XSVRIX1BSRUZJWC51c2VybmFtZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdnZXRTZWNyZXQgLSB3aXRoIHByZWZpeCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbW9ja1NlY3JldChTRUNSRVRfV0lUSF9QUkVGSVgpO1xuXG4gICAgICAgIGNvbnN0IGhvbGRlciA9IFNlY3JldEhvbGRlci5jcmVhdGUoJ3ByZWZpeCcpO1xuICAgICAgICBjb25zdCBzZWNyZXQgPSBhd2FpdCBob2xkZXIuZ2V0KCk7XG5cbiAgICAgICAgZXhwZWN0KHNlY3JldCkudG9FcXVhbCh7XG4gICAgICAgICAgICB2YWx1ZTogXCJ2YWx1ZVwiLFxuICAgICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0IC0gdHRsIC0gZG8gbm90IGZldGNoJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBtb2NrU2VjcmV0KFNFQ1JFVF9XSVRIX1BSRUZJWCk7XG5cbiAgICAgICAgY29uc3QgaG9sZGVyID0gU2VjcmV0SG9sZGVyLmNyZWF0ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNhbGxDb3VudCA9IHN0dWJTTS5jYWxsQ291bnQ7XG5cbiAgICAgICAgYXdhaXQgaG9sZGVyLmdldCgpO1xuICAgICAgICBleHBlY3Qoc3R1YlNNLmNhbGxDb3VudCkudG9FcXVhbChjYWxsQ291bnQgKyAxKTtcblxuICAgICAgICAvLyBnZXRzIGNhY2hlZCBzZWNyZXRcbiAgICAgICAgYXdhaXQgaG9sZGVyLmdldCgpO1xuICAgICAgICBleHBlY3Qoc3R1YlNNLmNhbGxDb3VudCkudG9FcXVhbChjYWxsQ291bnQgKyAxKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldCAtIHR0bCAtIGZldGNoJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBtb2NrU2VjcmV0KFNFQ1JFVF9XSVRIX1BSRUZJWCk7XG5cbiAgICAgICAgY29uc3QgaG9sZGVyID0gbmV3IFNlY3JldEhvbGRlcignJywgJycsIFtdLCB7XG4gICAgICAgICAgICB0dGw6IDEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNhbGxDb3VudCA9IHN0dWJTTS5jYWxsQ291bnQ7XG5cbiAgICAgICAgYXdhaXQgaG9sZGVyLmdldCgpO1xuICAgICAgICBleHBlY3Qoc3R1YlNNLmNhbGxDb3VudCkudG9FcXVhbChjYWxsQ291bnQgKyAxKTtcblxuICAgICAgICAvLyBjYWNoZSBleHBpcmVzLCBmZXRjaGVzIHNlY3JldCBhZ2FpblxuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIHdoaWxlIChEYXRlLm5vdygpIDwgc3RhcnQrMjAwMCk7XG5cbiAgICAgICAgYXdhaXQgaG9sZGVyLmdldCgpO1xuICAgICAgICBleHBlY3Qoc3R1YlNNLmNhbGxDb3VudCkudG9FcXVhbChjYWxsQ291bnQgKyAyKTtcbiAgICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,66 @@
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 __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const secrets_manager_1 = require("../../src/test/secrets-manager");
27
+ const sinon = __importStar(require("sinon"));
28
+ const SECRET_ID = "test_secret";
29
+ const SECRET_WITH_PREFIX = {
30
+ "prefix.value": "value",
31
+ "prefix.name": "name",
32
+ "wrong.value": "value",
33
+ };
34
+ const SECRET_EMPTY = {};
35
+ (0, secrets_manager_1.stubSecretsManager)();
36
+ const secret_1 = require("../../src/aws/runtime/secrets/secret");
37
+ describe('secret - test', () => {
38
+ afterEach(() => {
39
+ sinon.restore();
40
+ });
41
+ test('getSecret - no secret', async () => {
42
+ (0, secrets_manager_1.mockSecret)(null);
43
+ await expect(async () => {
44
+ await (0, secret_1.getSecret)(SECRET_ID, '');
45
+ }).rejects.toThrowError("No secret found!");
46
+ });
47
+ test('getSecret - empty secret', async () => {
48
+ (0, secrets_manager_1.mockSecret)(SECRET_EMPTY);
49
+ const secret = await (0, secret_1.getSecret)(SECRET_ID, '');
50
+ expect(secret).toEqual(SECRET_EMPTY);
51
+ });
52
+ test('getSecret - no prefix', async () => {
53
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
54
+ const secret = await (0, secret_1.getSecret)(SECRET_ID, '');
55
+ expect(secret).toEqual(SECRET_WITH_PREFIX);
56
+ });
57
+ test('getSecret - with prefix', async () => {
58
+ (0, secrets_manager_1.mockSecret)(SECRET_WITH_PREFIX);
59
+ const secret = await (0, secret_1.getSecret)(SECRET_ID, 'prefix');
60
+ expect(secret).toEqual({
61
+ value: "value",
62
+ name: "name",
63
+ });
64
+ });
65
+ });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3NlY3JldHMvc2VjcmV0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9FQUE4RTtBQUU5RSw2Q0FBK0I7QUFFL0IsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDO0FBQ2hDLE1BQU0sa0JBQWtCLEdBQUc7SUFDdkIsY0FBYyxFQUFHLE9BQU87SUFDeEIsYUFBYSxFQUFHLE1BQU07SUFDdEIsYUFBYSxFQUFHLE9BQU87Q0FDMUIsQ0FBQztBQUNGLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUV4QixJQUFBLG9DQUFrQixHQUFFLENBQUM7QUFFckIsaUVBQStEO0FBRS9ELFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzNCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDWCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckMsSUFBQSw0QkFBVSxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BCLE1BQU0sSUFBQSxrQkFBUyxFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDeEMsSUFBQSw0QkFBVSxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQkFBUyxFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JDLElBQUEsNEJBQVUsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQkFBUyxFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMseUJBQXlCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdkMsSUFBQSw0QkFBVSxFQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLGtCQUFTLEVBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkIsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsTUFBTTtTQUNmLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge21vY2tTZWNyZXQsIHN0dWJTZWNyZXRzTWFuYWdlcn0gZnJvbSBcIi4uLy4uL3NyYy90ZXN0L3NlY3JldHMtbWFuYWdlclwiO1xuXG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5cbmNvbnN0IFNFQ1JFVF9JRCA9IFwidGVzdF9zZWNyZXRcIjtcbmNvbnN0IFNFQ1JFVF9XSVRIX1BSRUZJWCA9IHtcbiAgICBcInByZWZpeC52YWx1ZVwiIDogXCJ2YWx1ZVwiLFxuICAgIFwicHJlZml4Lm5hbWVcIiA6IFwibmFtZVwiLFxuICAgIFwid3JvbmcudmFsdWVcIiA6IFwidmFsdWVcIixcbn07XG5jb25zdCBTRUNSRVRfRU1QVFkgPSB7fTtcblxuc3R1YlNlY3JldHNNYW5hZ2VyKCk7XG5cbmltcG9ydCB7Z2V0U2VjcmV0fSBmcm9tIFwiLi4vLi4vc3JjL2F3cy9ydW50aW1lL3NlY3JldHMvc2VjcmV0XCI7XG5cbmRlc2NyaWJlKCdzZWNyZXQgLSB0ZXN0JywgKCkgPT4ge1xuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldFNlY3JldCAtIG5vIHNlY3JldCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbW9ja1NlY3JldChudWxsKTtcbiAgICAgICAgYXdhaXQgZXhwZWN0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGdldFNlY3JldChTRUNSRVRfSUQsICcnKTtcbiAgICAgICAgfSkucmVqZWN0cy50b1Rocm93RXJyb3IoXCJObyBzZWNyZXQgZm91bmQhXCIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0U2VjcmV0IC0gZW1wdHkgc2VjcmV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBtb2NrU2VjcmV0KFNFQ1JFVF9FTVBUWSk7XG4gICAgICAgIGNvbnN0IHNlY3JldCA9IGF3YWl0IGdldFNlY3JldChTRUNSRVRfSUQsICcnKTtcbiAgICAgICAgZXhwZWN0KHNlY3JldCkudG9FcXVhbChTRUNSRVRfRU1QVFkpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0U2VjcmV0IC0gbm8gcHJlZml4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBtb2NrU2VjcmV0KFNFQ1JFVF9XSVRIX1BSRUZJWCk7XG4gICAgICAgIGNvbnN0IHNlY3JldCA9IGF3YWl0IGdldFNlY3JldChTRUNSRVRfSUQsICcnKTtcbiAgICAgICAgZXhwZWN0KHNlY3JldCkudG9FcXVhbChTRUNSRVRfV0lUSF9QUkVGSVgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0U2VjcmV0IC0gd2l0aCBwcmVmaXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIG1vY2tTZWNyZXQoU0VDUkVUX1dJVEhfUFJFRklYKTtcbiAgICAgICAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgZ2V0U2VjcmV0KFNFQ1JFVF9JRCwgJ3ByZWZpeCcpO1xuICAgICAgICBleHBlY3Qoc2VjcmV0KS50b0VxdWFsKHtcbiAgICAgICAgICAgIHZhbHVlOiBcInZhbHVlXCIsXG4gICAgICAgICAgICBuYW1lOiBcIm5hbWVcIixcbiAgICAgICAgfSk7XG4gICAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import * as sinon from "sinon";
2
+ /**
3
+ * Stub Secrets Manager for tests. You must call this
4
+ * before you instantiate Secrets Manager(this might happen when you import the function that uses Secrets Manager).
5
+ *
6
+ * To mock the actual secret, call mockSecret()
7
+ */
8
+ export declare function stubSecretsManager(): sinon.SinonStub<any[], any>;
9
+ export declare function mockSecret<Secret>(secret: Secret): void;
@@ -0,0 +1,59 @@
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 __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.mockSecret = exports.stubSecretsManager = void 0;
27
+ const AWS = require("aws-sdk");
28
+ const sinon = __importStar(require("sinon"));
29
+ const secretValue = sinon.stub();
30
+ /**
31
+ * Stub Secrets Manager for tests. You must call this
32
+ * before you instantiate Secrets Manager(this might happen when you import the function that uses Secrets Manager).
33
+ *
34
+ * To mock the actual secret, call mockSecret()
35
+ */
36
+ function stubSecretsManager() {
37
+ const smStub = {
38
+ getSecretValue: secretValue,
39
+ };
40
+ sinon.stub(AWS, 'SecretsManager').returns(smStub);
41
+ return smStub.getSecretValue;
42
+ }
43
+ exports.stubSecretsManager = stubSecretsManager;
44
+ function mockSecret(secret) {
45
+ if (!secret) {
46
+ secretValue.returns({
47
+ promise: sinon.stub().returns({}),
48
+ });
49
+ }
50
+ else {
51
+ secretValue.returns({
52
+ promise: sinon.stub().returns({
53
+ SecretString: JSON.stringify(secret),
54
+ }),
55
+ });
56
+ }
57
+ }
58
+ exports.mockSecret = mockSecret;
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvc2VjcmV0cy1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQWdDO0FBQ2hDLDZDQUErQjtBQUUvQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFakM7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQkFBa0I7SUFDOUIsTUFBTSxNQUFNLEdBQUc7UUFDWCxjQUFjLEVBQUUsV0FBVztLQUM5QixDQUFDO0lBRUYsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ2pDLENBQUM7QUFSRCxnREFRQztBQUVELFNBQWdCLFVBQVUsQ0FBUyxNQUFjO0lBQzdDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDVCxXQUFXLENBQUMsT0FBTyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNwQyxDQUFDLENBQUM7S0FDTjtTQUFNO1FBQ0gsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUNoQixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDMUIsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQ3ZDLENBQUM7U0FDTCxDQUFDLENBQUM7S0FDTjtBQUNMLENBQUM7QUFaRCxnQ0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBV1MgPSByZXF1aXJlKCdhd3Mtc2RrJyk7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tIFwic2lub25cIjtcblxuY29uc3Qgc2VjcmV0VmFsdWUgPSBzaW5vbi5zdHViKCk7XG5cbi8qKlxuICogU3R1YiBTZWNyZXRzIE1hbmFnZXIgZm9yIHRlc3RzLiAgWW91IG11c3QgY2FsbCB0aGlzXG4gKiBiZWZvcmUgeW91IGluc3RhbnRpYXRlIFNlY3JldHMgTWFuYWdlcih0aGlzIG1pZ2h0IGhhcHBlbiB3aGVuIHlvdSBpbXBvcnQgdGhlIGZ1bmN0aW9uIHRoYXQgdXNlcyBTZWNyZXRzIE1hbmFnZXIpLlxuICpcbiAqIFRvIG1vY2sgdGhlIGFjdHVhbCBzZWNyZXQsIGNhbGwgbW9ja1NlY3JldCgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHViU2VjcmV0c01hbmFnZXIoKSB7XG4gICAgY29uc3Qgc21TdHViID0ge1xuICAgICAgICBnZXRTZWNyZXRWYWx1ZTogc2VjcmV0VmFsdWUsXG4gICAgfTtcblxuICAgIHNpbm9uLnN0dWIoQVdTLCAnU2VjcmV0c01hbmFnZXInKS5yZXR1cm5zKHNtU3R1Yik7XG5cbiAgICByZXR1cm4gc21TdHViLmdldFNlY3JldFZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1NlY3JldDxTZWNyZXQ+KHNlY3JldDogU2VjcmV0KSB7XG4gICAgaWYgKCFzZWNyZXQpIHtcbiAgICAgICAgc2VjcmV0VmFsdWUucmV0dXJucyh7XG4gICAgICAgICAgICBwcm9taXNlOiBzaW5vbi5zdHViKCkucmV0dXJucyh7fSksXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNlY3JldFZhbHVlLnJldHVybnMoe1xuICAgICAgICAgICAgcHJvbWlzZTogc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICAgICAgICAgIFNlY3JldFN0cmluZzogSlNPTi5zdHJpbmdpZnkoc2VjcmV0KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=