@aws-mdaa/dataops-job-l3-construct 1.5.0 → 1.6.0

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 (90) hide show
  1. package/.jsii +38 -28
  2. package/README.md +5 -0
  3. package/lib/dataops-job-l3-construct.d.ts +8 -1
  4. package/lib/dataops-job-l3-construct.js +40 -13
  5. package/node_modules/@aws-mdaa/config/README.md +3 -0
  6. package/node_modules/@aws-mdaa/config/lib/blueprint-value-transformer.d.ts +20 -0
  7. package/node_modules/@aws-mdaa/config/lib/blueprint-value-transformer.js +70 -0
  8. package/node_modules/@aws-mdaa/config/lib/blueprint-value-transformer.ts +88 -0
  9. package/node_modules/@aws-mdaa/config/lib/config.d.ts +87 -0
  10. package/node_modules/@aws-mdaa/config/lib/config.js +7 -0
  11. package/node_modules/@aws-mdaa/config/lib/config.ts +92 -0
  12. package/node_modules/@aws-mdaa/config/lib/index.d.ts +11 -0
  13. package/node_modules/@aws-mdaa/config/lib/index.js +28 -0
  14. package/node_modules/@aws-mdaa/config/lib/index.ts +12 -0
  15. package/node_modules/@aws-mdaa/config/lib/param-transformer.d.ts +49 -0
  16. package/node_modules/@aws-mdaa/config/lib/param-transformer.js +160 -0
  17. package/node_modules/@aws-mdaa/config/lib/param-transformer.ts +159 -0
  18. package/node_modules/@aws-mdaa/config/lib/path-value-transformer.d.ts +10 -0
  19. package/node_modules/@aws-mdaa/config/lib/path-value-transformer.js +30 -0
  20. package/node_modules/@aws-mdaa/config/lib/path-value-transformer.ts +27 -0
  21. package/node_modules/@aws-mdaa/config/lib/ref-value-transformer.d.ts +44 -0
  22. package/node_modules/@aws-mdaa/config/lib/ref-value-transformer.js +243 -0
  23. package/node_modules/@aws-mdaa/config/lib/ref-value-transformer.ts +302 -0
  24. package/node_modules/@aws-mdaa/config/lib/ssm-ref-transformer.d.ts +8 -0
  25. package/node_modules/@aws-mdaa/config/lib/ssm-ref-transformer.js +22 -0
  26. package/node_modules/@aws-mdaa/config/lib/ssm-ref-transformer.ts +21 -0
  27. package/node_modules/@aws-mdaa/config/lib/transformer.d.ts +35 -0
  28. package/node_modules/@aws-mdaa/config/lib/transformer.js +66 -0
  29. package/node_modules/@aws-mdaa/config/lib/transformer.ts +74 -0
  30. package/node_modules/@aws-mdaa/config/package.json +42 -0
  31. package/node_modules/@aws-mdaa/config/test/blueprint-value-transformer.test.js +224 -0
  32. package/node_modules/@aws-mdaa/config/test/blueprint-value-transformer.test.ts +259 -0
  33. package/node_modules/@aws-mdaa/config/test/config-nt.test.d.ts +5 -0
  34. package/node_modules/@aws-mdaa/config/test/config-nt.test.js +129 -0
  35. package/node_modules/@aws-mdaa/config/test/config-nt.test.ts +163 -0
  36. package/node_modules/@aws-mdaa/config/test/config.test.d.ts +5 -0
  37. package/node_modules/@aws-mdaa/config/test/config.test.js +409 -0
  38. package/node_modules/@aws-mdaa/config/test/config.test.ts +517 -0
  39. package/node_modules/@aws-mdaa/config/test/param-transformer.test.d.ts +5 -0
  40. package/node_modules/@aws-mdaa/config/test/param-transformer.test.js +216 -0
  41. package/node_modules/@aws-mdaa/config/test/param-transformer.test.ts +234 -0
  42. package/node_modules/@aws-mdaa/config/test/path-value-transformer.test.d.ts +5 -0
  43. package/node_modules/@aws-mdaa/config/test/path-value-transformer.test.js +59 -0
  44. package/node_modules/@aws-mdaa/config/test/path-value-transformer.test.ts +68 -0
  45. package/node_modules/@aws-mdaa/config/test/ref-value-transformer.test.d.ts +5 -0
  46. package/node_modules/@aws-mdaa/config/test/ref-value-transformer.test.js +254 -0
  47. package/node_modules/@aws-mdaa/config/test/ref-value-transformer.test.ts +304 -0
  48. package/node_modules/@aws-mdaa/config/test/ssm-ref-transformer.test.d.ts +5 -0
  49. package/node_modules/@aws-mdaa/config/test/ssm-ref-transformer.test.js +66 -0
  50. package/node_modules/@aws-mdaa/config/test/ssm-ref-transformer.test.ts +79 -0
  51. package/node_modules/@aws-mdaa/config/tsconfig.tsbuildinfo +1 -0
  52. package/node_modules/lodash/README.md +2 -2
  53. package/node_modules/lodash/_baseOrderBy.js +1 -1
  54. package/node_modules/lodash/_baseUnset.js +7 -20
  55. package/node_modules/lodash/_setCacheHas.js +1 -1
  56. package/node_modules/lodash/compact.js +1 -1
  57. package/node_modules/lodash/core.js +3 -3
  58. package/node_modules/lodash/core.min.js +26 -25
  59. package/node_modules/lodash/fromPairs.js +3 -1
  60. package/node_modules/lodash/lodash.js +38 -27
  61. package/node_modules/lodash/lodash.min.js +125 -129
  62. package/node_modules/lodash/package.json +4 -2
  63. package/node_modules/lodash/random.js +9 -0
  64. package/node_modules/lodash/template.js +16 -4
  65. package/node_modules/lodash/templateSettings.js +4 -0
  66. package/package.json +27 -32
  67. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/README.md +0 -185
  68. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.d.ts +0 -57
  69. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.js +0 -198
  70. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.ts +0 -241
  71. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/package.json +0 -44
  72. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/test/bucketpolicy-helper.test.js +0 -200
  73. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/test/bucketpolicy-helper.test.ts +0 -215
  74. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/tsconfig.tsbuildinfo +0 -1
  75. package/node_modules/@aws-mdaa/s3-inventory-helper/.npmignore +0 -34
  76. package/node_modules/@aws-mdaa/s3-inventory-helper/README.md +0 -3
  77. package/node_modules/@aws-mdaa/s3-inventory-helper/jest.config.js +0 -5
  78. package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.d.ts +0 -48
  79. package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.js +0 -213
  80. package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.ts +0 -241
  81. package/node_modules/@aws-mdaa/s3-inventory-helper/package.json +0 -44
  82. package/node_modules/@aws-mdaa/s3-inventory-helper/test/TODO +0 -0
  83. package/node_modules/@aws-mdaa/s3-inventory-helper/tsconfig.json +0 -40
  84. package/node_modules/@aws-mdaa/s3-inventory-helper/tsconfig.tsbuildinfo +0 -1
  85. package/node_modules/@aws-mdaa/s3-inventory-helper/typedoc.json +0 -7
  86. /package/node_modules/@aws-mdaa/{s3-bucketpolicy-helper → config}/.npmignore +0 -0
  87. /package/node_modules/@aws-mdaa/{s3-bucketpolicy-helper → config}/jest.config.js +0 -0
  88. /package/node_modules/@aws-mdaa/{s3-bucketpolicy-helper/test/bucketpolicy-helper.test.d.ts → config/test/blueprint-value-transformer.test.d.ts} +0 -0
  89. /package/node_modules/@aws-mdaa/{s3-bucketpolicy-helper → config}/tsconfig.json +0 -0
  90. /package/node_modules/@aws-mdaa/{s3-bucketpolicy-helper → config}/typedoc.json +0 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
+ const lib_1 = require("../lib");
9
+ /**
10
+ * These tests cover all logic not directly related to the Transformers
11
+ */
12
+ jest.mock('aws-cdk-lib', () => ({
13
+ CfnParameter: jest.fn().mockImplementation(() => ({
14
+ valueAsString: 'string-value',
15
+ valueAsNumber: 123,
16
+ valueAsList: ['item1', 'item2'],
17
+ })),
18
+ Stack: {
19
+ of: jest.fn().mockReturnValue({
20
+ partition: 'aws',
21
+ region: 'us-east-1',
22
+ account: '123456789012',
23
+ }),
24
+ },
25
+ }));
26
+ describe('Test createParamUsingTypeLabels', () => {
27
+ class TestConfigTransformer extends lib_1.MdaaConfigParamRefValueTransformer {
28
+ constructor(props) {
29
+ props =
30
+ props ||
31
+ {
32
+ scope: {
33
+ node: {},
34
+ },
35
+ };
36
+ super(props);
37
+ this.scope = props.scope;
38
+ }
39
+ testCreateParamUsingTypeLabels(paramBase, paramName, paramProps) {
40
+ return this.createParamUsingTypeLabels(paramBase, paramName, paramProps);
41
+ }
42
+ }
43
+ beforeEach(() => {
44
+ jest.clearAllMocks();
45
+ });
46
+ test('throws error when scope is not defined', () => {
47
+ const testClass = new TestConfigTransformer({});
48
+ // Act & Assert
49
+ expect(() => {
50
+ testClass.testCreateParamUsingTypeLabels('string:test', 'TestParam', {});
51
+ }).toThrow('Unable to create params outside of a Construct');
52
+ });
53
+ test('creates string parameter when paramBase starts with "string:"', () => {
54
+ // Arrange
55
+ const paramProps = { default: 'default-value' };
56
+ const testClass = new TestConfigTransformer();
57
+ // Act
58
+ const result = testClass.testCreateParamUsingTypeLabels('string:test', 'TestParam', paramProps);
59
+ // Assert
60
+ expect(aws_cdk_lib_1.CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { ...paramProps, type: 'String' });
61
+ expect(result).toBe('string-value');
62
+ });
63
+ test('creates number parameter when paramBase starts with "number"', () => {
64
+ // Arrange
65
+ const paramProps = { default: 42 };
66
+ const testClass = new TestConfigTransformer();
67
+ // Act
68
+ const result = testClass.testCreateParamUsingTypeLabels('number:test', 'TestParam', paramProps);
69
+ // Assert
70
+ expect(aws_cdk_lib_1.CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { ...paramProps, type: 'Number' });
71
+ expect(result).toBe(123);
72
+ });
73
+ test('creates list parameter when paramBase starts with "list"', () => {
74
+ const mockScope = {
75
+ node: {},
76
+ };
77
+ const testClass = new TestConfigTransformer({ scope: mockScope });
78
+ // Arrange
79
+ const paramProps = { default: 'item1,item2' };
80
+ // Act
81
+ const result = testClass.testCreateParamUsingTypeLabels('list:test', 'TestParam', paramProps);
82
+ // Assert
83
+ expect(aws_cdk_lib_1.CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', {
84
+ ...paramProps,
85
+ type: 'CommaDelimitedList',
86
+ });
87
+ expect(result).toBe('item1,item2');
88
+ });
89
+ test('creates default string parameter when no type prefix is provided', () => {
90
+ const testClass = new TestConfigTransformer();
91
+ // Arrange
92
+ const paramProps = { default: 'default-value' };
93
+ // Act
94
+ const result = testClass.testCreateParamUsingTypeLabels('test', 'TestParam', paramProps);
95
+ // Assert
96
+ expect(aws_cdk_lib_1.CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', paramProps);
97
+ expect(result).toBe('string-value');
98
+ });
99
+ test('handles undefined paramProps', () => {
100
+ const testClass = new TestConfigTransformer();
101
+ // Act
102
+ const result = testClass.testCreateParamUsingTypeLabels('string:test', 'TestParam', undefined);
103
+ // Assert
104
+ expect(aws_cdk_lib_1.CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { type: 'String' });
105
+ expect(result).toBe('string-value');
106
+ });
107
+ test('uses paramProps type when no prefix provided', () => {
108
+ const testClass = new TestConfigTransformer();
109
+ // Arrange - paramProps has type, but paramBase has no prefix
110
+ const paramProps = { type: 'Number', default: 42 };
111
+ // Act
112
+ const result = testClass.testCreateParamUsingTypeLabels('test', 'TestParam', paramProps);
113
+ // Assert - Should use paramProps as-is (including the type)
114
+ expect(aws_cdk_lib_1.CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', paramProps);
115
+ // But returns valueAsString because no prefix means default string behavior
116
+ expect(result).toBe('string-value');
117
+ });
118
+ test('prefix overrides paramProps type', () => {
119
+ const testClass = new TestConfigTransformer();
120
+ // Arrange - paramProps has type String, but prefix says number
121
+ const paramProps = { type: 'String', default: 'will-be-overridden' };
122
+ // Act
123
+ const result = testClass.testCreateParamUsingTypeLabels('number:test', 'TestParam', paramProps);
124
+ // Assert - Prefix wins, type is overridden to Number
125
+ expect(aws_cdk_lib_1.CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { ...paramProps, type: 'Number' });
126
+ expect(result).toBe(123);
127
+ });
128
+ });
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLW50LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25maWctbnQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQUVILDZDQUE4RDtBQUM5RCxnQ0FBcUc7QUFHckc7O0dBRUc7QUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNoRCxhQUFhLEVBQUUsY0FBYztRQUM3QixhQUFhLEVBQUUsR0FBRztRQUNsQixXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0tBQ2hDLENBQUMsQ0FBQztJQUNILEtBQUssRUFBRTtRQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE9BQU8sRUFBRSxjQUFjO1NBQ3hCLENBQUM7S0FDSDtDQUNGLENBQUMsQ0FBQyxDQUFDO0FBQ0osUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxNQUFNLHFCQUFzQixTQUFRLHdDQUFrQztRQUdwRSxZQUFZLEtBQStDO1lBQ3pELEtBQUs7Z0JBQ0gsS0FBSztvQkFDSjt3QkFDQyxLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLEVBQVU7eUJBQ0o7cUJBQzZCLENBQUM7WUFDaEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUM7UUFFTSw4QkFBOEIsQ0FDbkMsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsVUFBeUM7WUFFekMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLFNB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RSxFQUFFLENBQUM7UUFFbkQsTUFBTTtRQUNOLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpGLDREQUE0RDtRQUM1RCxNQUFNLENBQUMsMEJBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BGLDRFQUE0RTtRQUM1RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFFOUMsK0RBQStEO1FBQy9ELE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUVyRSxNQUFNO1FBQ04sTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFaEcscURBQXFEO1FBQ3JELE1BQU0sQ0FBQywwQkFBWSxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBDZm5QYXJhbWV0ZXIsIENmblBhcmFtZXRlclByb3BzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTWRhYUNvbmZpZ1BhcmFtUmVmVmFsdWVUcmFuc2Zvcm1lciwgTWRhYUNvbmZpZ1BhcmFtUmVmVmFsdWVUcmFuc2Zvcm1lclByb3BzIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgTm9kZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFRoZXNlIHRlc3RzIGNvdmVyIGFsbCBsb2dpYyBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgVHJhbnNmb3JtZXJzXG4gKi9cbmplc3QubW9jaygnYXdzLWNkay1saWInLCAoKSA9PiAoe1xuICBDZm5QYXJhbWV0ZXI6IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICB2YWx1ZUFzU3RyaW5nOiAnc3RyaW5nLXZhbHVlJyxcbiAgICB2YWx1ZUFzTnVtYmVyOiAxMjMsXG4gICAgdmFsdWVBc0xpc3Q6IFsnaXRlbTEnLCAnaXRlbTInXSxcbiAgfSkpLFxuICBTdGFjazoge1xuICAgIG9mOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgIHBhcnRpdGlvbjogJ2F3cycsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsXG4gICAgfSksXG4gIH0sXG59KSk7XG5kZXNjcmliZSgnVGVzdCBjcmVhdGVQYXJhbVVzaW5nVHlwZUxhYmVscycsICgpID0+IHtcbiAgY2xhc3MgVGVzdENvbmZpZ1RyYW5zZm9ybWVyIGV4dGVuZHMgTWRhYUNvbmZpZ1BhcmFtUmVmVmFsdWVUcmFuc2Zvcm1lciB7XG4gICAgcHVibGljIHNjb3BlOiBDb25zdHJ1Y3QgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcz86IE1kYWFDb25maWdQYXJhbVJlZlZhbHVlVHJhbnNmb3JtZXJQcm9wcykge1xuICAgICAgcHJvcHMgPVxuICAgICAgICBwcm9wcyB8fFxuICAgICAgICAoe1xuICAgICAgICAgIHNjb3BlOiB7XG4gICAgICAgICAgICBub2RlOiB7fSBhcyBOb2RlLFxuICAgICAgICAgIH0gYXMgQ29uc3RydWN0LFxuICAgICAgICB9IGFzIE1kYWFDb25maWdQYXJhbVJlZlZhbHVlVHJhbnNmb3JtZXJQcm9wcyk7XG4gICAgICBzdXBlcihwcm9wcyk7XG4gICAgICB0aGlzLnNjb3BlID0gcHJvcHMuc2NvcGU7XG4gICAgfVxuXG4gICAgcHVibGljIHRlc3RDcmVhdGVQYXJhbVVzaW5nVHlwZUxhYmVscyhcbiAgICAgIHBhcmFtQmFzZTogc3RyaW5nLFxuICAgICAgcGFyYW1OYW1lOiBzdHJpbmcsXG4gICAgICBwYXJhbVByb3BzOiBDZm5QYXJhbWV0ZXJQcm9wcyB8IHVuZGVmaW5lZCxcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVBhcmFtVXNpbmdUeXBlTGFiZWxzKHBhcmFtQmFzZSwgcGFyYW1OYW1lLCBwYXJhbVByb3BzKTtcbiAgICB9XG4gIH1cblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgfSk7XG5cbiAgdGVzdCgndGhyb3dzIGVycm9yIHdoZW4gc2NvcGUgaXMgbm90IGRlZmluZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENsYXNzID0gbmV3IFRlc3RDb25maWdUcmFuc2Zvcm1lcih7fSBhcyB1bmtub3duIGFzIE1kYWFDb25maWdQYXJhbVJlZlZhbHVlVHJhbnNmb3JtZXJQcm9wcyk7XG4gICAgLy8gQWN0ICYgQXNzZXJ0XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIHRlc3RDbGFzcy50ZXN0Q3JlYXRlUGFyYW1Vc2luZ1R5cGVMYWJlbHMoJ3N0cmluZzp0ZXN0JywgJ1Rlc3RQYXJhbScsIHt9KTtcbiAgICB9KS50b1Rocm93KCdVbmFibGUgdG8gY3JlYXRlIHBhcmFtcyBvdXRzaWRlIG9mIGEgQ29uc3RydWN0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NyZWF0ZXMgc3RyaW5nIHBhcmFtZXRlciB3aGVuIHBhcmFtQmFzZSBzdGFydHMgd2l0aCBcInN0cmluZzpcIicsICgpID0+IHtcbiAgICAvLyBBcnJhbmdlXG4gICAgY29uc3QgcGFyYW1Qcm9wcyA9IHsgZGVmYXVsdDogJ2RlZmF1bHQtdmFsdWUnIH07XG4gICAgY29uc3QgdGVzdENsYXNzID0gbmV3IFRlc3RDb25maWdUcmFuc2Zvcm1lcigpO1xuXG4gICAgLy8gQWN0XG4gICAgY29uc3QgcmVzdWx0ID0gdGVzdENsYXNzLnRlc3RDcmVhdGVQYXJhbVVzaW5nVHlwZUxhYmVscygnc3RyaW5nOnRlc3QnLCAnVGVzdFBhcmFtJywgcGFyYW1Qcm9wcyk7XG5cbiAgICAvLyBBc3NlcnRcbiAgICBleHBlY3QoQ2ZuUGFyYW1ldGVyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh0ZXN0Q2xhc3Muc2NvcGUsICdUZXN0UGFyYW0nLCB7IC4uLnBhcmFtUHJvcHMsIHR5cGU6ICdTdHJpbmcnIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3N0cmluZy12YWx1ZScpO1xuICB9KTtcblxuICB0ZXN0KCdjcmVhdGVzIG51bWJlciBwYXJhbWV0ZXIgd2hlbiBwYXJhbUJhc2Ugc3RhcnRzIHdpdGggXCJudW1iZXJcIicsICgpID0+IHtcbiAgICAvLyBBcnJhbmdlXG4gICAgY29uc3QgcGFyYW1Qcm9wcyA9IHsgZGVmYXVsdDogNDIgfTtcbiAgICBjb25zdCB0ZXN0Q2xhc3MgPSBuZXcgVGVzdENvbmZpZ1RyYW5zZm9ybWVyKCk7XG5cbiAgICAvLyBBY3RcbiAgICBjb25zdCByZXN1bHQgPSB0ZXN0Q2xhc3MudGVzdENyZWF0ZVBhcmFtVXNpbmdUeXBlTGFiZWxzKCdudW1iZXI6dGVzdCcsICdUZXN0UGFyYW0nLCBwYXJhbVByb3BzKTtcblxuICAgIC8vIEFzc2VydFxuICAgIGV4cGVjdChDZm5QYXJhbWV0ZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRlc3RDbGFzcy5zY29wZSwgJ1Rlc3RQYXJhbScsIHsgLi4ucGFyYW1Qcm9wcywgdHlwZTogJ051bWJlcicgfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZSgxMjMpO1xuICB9KTtcblxuICB0ZXN0KCdjcmVhdGVzIGxpc3QgcGFyYW1ldGVyIHdoZW4gcGFyYW1CYXNlIHN0YXJ0cyB3aXRoIFwibGlzdFwiJywgKCkgPT4ge1xuICAgIGNvbnN0IG1vY2tTY29wZSA9IHtcbiAgICAgIG5vZGU6IHt9IGFzIE5vZGUsXG4gICAgfTtcbiAgICBjb25zdCB0ZXN0Q2xhc3MgPSBuZXcgVGVzdENvbmZpZ1RyYW5zZm9ybWVyKHsgc2NvcGU6IG1vY2tTY29wZSB9IGFzIE1kYWFDb25maWdQYXJhbVJlZlZhbHVlVHJhbnNmb3JtZXJQcm9wcyk7XG5cbiAgICAvLyBBcnJhbmdlXG4gICAgY29uc3QgcGFyYW1Qcm9wcyA9IHsgZGVmYXVsdDogJ2l0ZW0xLGl0ZW0yJyB9O1xuXG4gICAgLy8gQWN0XG4gICAgY29uc3QgcmVzdWx0ID0gdGVzdENsYXNzLnRlc3RDcmVhdGVQYXJhbVVzaW5nVHlwZUxhYmVscygnbGlzdDp0ZXN0JywgJ1Rlc3RQYXJhbScsIHBhcmFtUHJvcHMpO1xuXG4gICAgLy8gQXNzZXJ0XG4gICAgZXhwZWN0KENmblBhcmFtZXRlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgodGVzdENsYXNzLnNjb3BlLCAnVGVzdFBhcmFtJywge1xuICAgICAgLi4ucGFyYW1Qcm9wcyxcbiAgICAgIHR5cGU6ICdDb21tYURlbGltaXRlZExpc3QnLFxuICAgIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2l0ZW0xLGl0ZW0yJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NyZWF0ZXMgZGVmYXVsdCBzdHJpbmcgcGFyYW1ldGVyIHdoZW4gbm8gdHlwZSBwcmVmaXggaXMgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENsYXNzID0gbmV3IFRlc3RDb25maWdUcmFuc2Zvcm1lcigpO1xuXG4gICAgLy8gQXJyYW5nZVxuICAgIGNvbnN0IHBhcmFtUHJvcHMgPSB7IGRlZmF1bHQ6ICdkZWZhdWx0LXZhbHVlJyB9O1xuXG4gICAgLy8gQWN0XG4gICAgY29uc3QgcmVzdWx0ID0gdGVzdENsYXNzLnRlc3RDcmVhdGVQYXJhbVVzaW5nVHlwZUxhYmVscygndGVzdCcsICdUZXN0UGFyYW0nLCBwYXJhbVByb3BzKTtcblxuICAgIC8vIEFzc2VydFxuICAgIGV4cGVjdChDZm5QYXJhbWV0ZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRlc3RDbGFzcy5zY29wZSwgJ1Rlc3RQYXJhbScsIHBhcmFtUHJvcHMpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3N0cmluZy12YWx1ZScpO1xuICB9KTtcblxuICB0ZXN0KCdoYW5kbGVzIHVuZGVmaW5lZCBwYXJhbVByb3BzJywgKCkgPT4ge1xuICAgIGNvbnN0IHRlc3RDbGFzcyA9IG5ldyBUZXN0Q29uZmlnVHJhbnNmb3JtZXIoKTtcblxuICAgIC8vIEFjdFxuICAgIGNvbnN0IHJlc3VsdCA9IHRlc3RDbGFzcy50ZXN0Q3JlYXRlUGFyYW1Vc2luZ1R5cGVMYWJlbHMoJ3N0cmluZzp0ZXN0JywgJ1Rlc3RQYXJhbScsIHVuZGVmaW5lZCk7XG5cbiAgICAvLyBBc3NlcnRcbiAgICBleHBlY3QoQ2ZuUGFyYW1ldGVyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh0ZXN0Q2xhc3Muc2NvcGUsICdUZXN0UGFyYW0nLCB7IHR5cGU6ICdTdHJpbmcnIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3N0cmluZy12YWx1ZScpO1xuICB9KTtcblxuICB0ZXN0KCd1c2VzIHBhcmFtUHJvcHMgdHlwZSB3aGVuIG5vIHByZWZpeCBwcm92aWRlZCcsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q2xhc3MgPSBuZXcgVGVzdENvbmZpZ1RyYW5zZm9ybWVyKCk7XG5cbiAgICAvLyBBcnJhbmdlIC0gcGFyYW1Qcm9wcyBoYXMgdHlwZSwgYnV0IHBhcmFtQmFzZSBoYXMgbm8gcHJlZml4XG4gICAgY29uc3QgcGFyYW1Qcm9wcyA9IHsgdHlwZTogJ051bWJlcicsIGRlZmF1bHQ6IDQyIH07XG5cbiAgICAvLyBBY3RcbiAgICBjb25zdCByZXN1bHQgPSB0ZXN0Q2xhc3MudGVzdENyZWF0ZVBhcmFtVXNpbmdUeXBlTGFiZWxzKCd0ZXN0JywgJ1Rlc3RQYXJhbScsIHBhcmFtUHJvcHMpO1xuXG4gICAgLy8gQXNzZXJ0IC0gU2hvdWxkIHVzZSBwYXJhbVByb3BzIGFzLWlzIChpbmNsdWRpbmcgdGhlIHR5cGUpXG4gICAgZXhwZWN0KENmblBhcmFtZXRlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgodGVzdENsYXNzLnNjb3BlLCAnVGVzdFBhcmFtJywgcGFyYW1Qcm9wcyk7XG4gICAgLy8gQnV0IHJldHVybnMgdmFsdWVBc1N0cmluZyBiZWNhdXNlIG5vIHByZWZpeCBtZWFucyBkZWZhdWx0IHN0cmluZyBiZWhhdmlvclxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3N0cmluZy12YWx1ZScpO1xuICB9KTtcblxuICB0ZXN0KCdwcmVmaXggb3ZlcnJpZGVzIHBhcmFtUHJvcHMgdHlwZScsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q2xhc3MgPSBuZXcgVGVzdENvbmZpZ1RyYW5zZm9ybWVyKCk7XG5cbiAgICAvLyBBcnJhbmdlIC0gcGFyYW1Qcm9wcyBoYXMgdHlwZSBTdHJpbmcsIGJ1dCBwcmVmaXggc2F5cyBudW1iZXJcbiAgICBjb25zdCBwYXJhbVByb3BzID0geyB0eXBlOiAnU3RyaW5nJywgZGVmYXVsdDogJ3dpbGwtYmUtb3ZlcnJpZGRlbicgfTtcblxuICAgIC8vIEFjdFxuICAgIGNvbnN0IHJlc3VsdCA9IHRlc3RDbGFzcy50ZXN0Q3JlYXRlUGFyYW1Vc2luZ1R5cGVMYWJlbHMoJ251bWJlcjp0ZXN0JywgJ1Rlc3RQYXJhbScsIHBhcmFtUHJvcHMpO1xuXG4gICAgLy8gQXNzZXJ0IC0gUHJlZml4IHdpbnMsIHR5cGUgaXMgb3ZlcnJpZGRlbiB0byBOdW1iZXJcbiAgICBleHBlY3QoQ2ZuUGFyYW1ldGVyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh0ZXN0Q2xhc3Muc2NvcGUsICdUZXN0UGFyYW0nLCB7IC4uLnBhcmFtUHJvcHMsIHR5cGU6ICdOdW1iZXInIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoMTIzKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,163 @@
1
+ /*!
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ import { CfnParameter, CfnParameterProps } from 'aws-cdk-lib';
7
+ import { MdaaConfigParamRefValueTransformer, MdaaConfigParamRefValueTransformerProps } from '../lib';
8
+ import { Construct, Node } from 'constructs';
9
+
10
+ /**
11
+ * These tests cover all logic not directly related to the Transformers
12
+ */
13
+ jest.mock('aws-cdk-lib', () => ({
14
+ CfnParameter: jest.fn().mockImplementation(() => ({
15
+ valueAsString: 'string-value',
16
+ valueAsNumber: 123,
17
+ valueAsList: ['item1', 'item2'],
18
+ })),
19
+ Stack: {
20
+ of: jest.fn().mockReturnValue({
21
+ partition: 'aws',
22
+ region: 'us-east-1',
23
+ account: '123456789012',
24
+ }),
25
+ },
26
+ }));
27
+ describe('Test createParamUsingTypeLabels', () => {
28
+ class TestConfigTransformer extends MdaaConfigParamRefValueTransformer {
29
+ public scope: Construct | undefined;
30
+
31
+ constructor(props?: MdaaConfigParamRefValueTransformerProps) {
32
+ props =
33
+ props ||
34
+ ({
35
+ scope: {
36
+ node: {} as Node,
37
+ } as Construct,
38
+ } as MdaaConfigParamRefValueTransformerProps);
39
+ super(props);
40
+ this.scope = props.scope;
41
+ }
42
+
43
+ public testCreateParamUsingTypeLabels(
44
+ paramBase: string,
45
+ paramName: string,
46
+ paramProps: CfnParameterProps | undefined,
47
+ ) {
48
+ return this.createParamUsingTypeLabels(paramBase, paramName, paramProps);
49
+ }
50
+ }
51
+
52
+ beforeEach(() => {
53
+ jest.clearAllMocks();
54
+ });
55
+
56
+ test('throws error when scope is not defined', () => {
57
+ const testClass = new TestConfigTransformer({} as unknown as MdaaConfigParamRefValueTransformerProps);
58
+ // Act & Assert
59
+ expect(() => {
60
+ testClass.testCreateParamUsingTypeLabels('string:test', 'TestParam', {});
61
+ }).toThrow('Unable to create params outside of a Construct');
62
+ });
63
+
64
+ test('creates string parameter when paramBase starts with "string:"', () => {
65
+ // Arrange
66
+ const paramProps = { default: 'default-value' };
67
+ const testClass = new TestConfigTransformer();
68
+
69
+ // Act
70
+ const result = testClass.testCreateParamUsingTypeLabels('string:test', 'TestParam', paramProps);
71
+
72
+ // Assert
73
+ expect(CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { ...paramProps, type: 'String' });
74
+ expect(result).toBe('string-value');
75
+ });
76
+
77
+ test('creates number parameter when paramBase starts with "number"', () => {
78
+ // Arrange
79
+ const paramProps = { default: 42 };
80
+ const testClass = new TestConfigTransformer();
81
+
82
+ // Act
83
+ const result = testClass.testCreateParamUsingTypeLabels('number:test', 'TestParam', paramProps);
84
+
85
+ // Assert
86
+ expect(CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { ...paramProps, type: 'Number' });
87
+ expect(result).toBe(123);
88
+ });
89
+
90
+ test('creates list parameter when paramBase starts with "list"', () => {
91
+ const mockScope = {
92
+ node: {} as Node,
93
+ };
94
+ const testClass = new TestConfigTransformer({ scope: mockScope } as MdaaConfigParamRefValueTransformerProps);
95
+
96
+ // Arrange
97
+ const paramProps = { default: 'item1,item2' };
98
+
99
+ // Act
100
+ const result = testClass.testCreateParamUsingTypeLabels('list:test', 'TestParam', paramProps);
101
+
102
+ // Assert
103
+ expect(CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', {
104
+ ...paramProps,
105
+ type: 'CommaDelimitedList',
106
+ });
107
+ expect(result).toBe('item1,item2');
108
+ });
109
+
110
+ test('creates default string parameter when no type prefix is provided', () => {
111
+ const testClass = new TestConfigTransformer();
112
+
113
+ // Arrange
114
+ const paramProps = { default: 'default-value' };
115
+
116
+ // Act
117
+ const result = testClass.testCreateParamUsingTypeLabels('test', 'TestParam', paramProps);
118
+
119
+ // Assert
120
+ expect(CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', paramProps);
121
+ expect(result).toBe('string-value');
122
+ });
123
+
124
+ test('handles undefined paramProps', () => {
125
+ const testClass = new TestConfigTransformer();
126
+
127
+ // Act
128
+ const result = testClass.testCreateParamUsingTypeLabels('string:test', 'TestParam', undefined);
129
+
130
+ // Assert
131
+ expect(CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { type: 'String' });
132
+ expect(result).toBe('string-value');
133
+ });
134
+
135
+ test('uses paramProps type when no prefix provided', () => {
136
+ const testClass = new TestConfigTransformer();
137
+
138
+ // Arrange - paramProps has type, but paramBase has no prefix
139
+ const paramProps = { type: 'Number', default: 42 };
140
+
141
+ // Act
142
+ const result = testClass.testCreateParamUsingTypeLabels('test', 'TestParam', paramProps);
143
+
144
+ // Assert - Should use paramProps as-is (including the type)
145
+ expect(CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', paramProps);
146
+ // But returns valueAsString because no prefix means default string behavior
147
+ expect(result).toBe('string-value');
148
+ });
149
+
150
+ test('prefix overrides paramProps type', () => {
151
+ const testClass = new TestConfigTransformer();
152
+
153
+ // Arrange - paramProps has type String, but prefix says number
154
+ const paramProps = { type: 'String', default: 'will-be-overridden' };
155
+
156
+ // Act
157
+ const result = testClass.testCreateParamUsingTypeLabels('number:test', 'TestParam', paramProps);
158
+
159
+ // Assert - Prefix wins, type is overridden to Number
160
+ expect(CfnParameter).toHaveBeenCalledWith(testClass.scope, 'TestParam', { ...paramProps, type: 'Number' });
161
+ expect(result).toBe(123);
162
+ });
163
+ });
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export {};