@aws-mdaa/dataops-job-l3-construct 1.4.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.
- package/.jsii +117 -121
- package/README.md +5 -0
- package/lib/dataops-job-l3-construct.d.ts +37 -240
- package/lib/dataops-job-l3-construct.js +61 -34
- package/node_modules/@aws-mdaa/config/.npmignore +34 -0
- package/node_modules/@aws-mdaa/config/README.md +3 -0
- package/node_modules/@aws-mdaa/config/jest.config.js +5 -0
- package/node_modules/@aws-mdaa/config/lib/blueprint-value-transformer.d.ts +20 -0
- package/node_modules/@aws-mdaa/config/lib/blueprint-value-transformer.js +70 -0
- package/node_modules/@aws-mdaa/config/lib/blueprint-value-transformer.ts +88 -0
- package/node_modules/@aws-mdaa/config/lib/config.d.ts +87 -0
- package/node_modules/@aws-mdaa/config/lib/config.js +7 -0
- package/node_modules/@aws-mdaa/config/lib/config.ts +92 -0
- package/node_modules/@aws-mdaa/config/lib/index.d.ts +11 -0
- package/node_modules/@aws-mdaa/config/lib/index.js +28 -0
- package/node_modules/@aws-mdaa/config/lib/index.ts +12 -0
- package/node_modules/@aws-mdaa/config/lib/param-transformer.d.ts +49 -0
- package/node_modules/@aws-mdaa/config/lib/param-transformer.js +160 -0
- package/node_modules/@aws-mdaa/config/lib/param-transformer.ts +159 -0
- package/node_modules/@aws-mdaa/config/lib/path-value-transformer.d.ts +10 -0
- package/node_modules/@aws-mdaa/config/lib/path-value-transformer.js +30 -0
- package/node_modules/@aws-mdaa/config/lib/path-value-transformer.ts +27 -0
- package/node_modules/@aws-mdaa/config/lib/ref-value-transformer.d.ts +44 -0
- package/node_modules/@aws-mdaa/config/lib/ref-value-transformer.js +243 -0
- package/node_modules/@aws-mdaa/config/lib/ref-value-transformer.ts +302 -0
- package/node_modules/@aws-mdaa/config/lib/ssm-ref-transformer.d.ts +8 -0
- package/node_modules/@aws-mdaa/config/lib/ssm-ref-transformer.js +22 -0
- package/node_modules/@aws-mdaa/config/lib/ssm-ref-transformer.ts +21 -0
- package/node_modules/@aws-mdaa/config/lib/transformer.d.ts +35 -0
- package/node_modules/@aws-mdaa/config/lib/transformer.js +66 -0
- package/node_modules/@aws-mdaa/config/lib/transformer.ts +74 -0
- package/node_modules/@aws-mdaa/{s3-bucketpolicy-helper → config}/package.json +17 -17
- package/node_modules/@aws-mdaa/config/test/blueprint-value-transformer.test.d.ts +5 -0
- package/node_modules/@aws-mdaa/config/test/blueprint-value-transformer.test.js +224 -0
- package/node_modules/@aws-mdaa/config/test/blueprint-value-transformer.test.ts +259 -0
- package/node_modules/@aws-mdaa/config/test/config-nt.test.d.ts +5 -0
- package/node_modules/@aws-mdaa/config/test/config-nt.test.js +129 -0
- package/node_modules/@aws-mdaa/config/test/config-nt.test.ts +163 -0
- package/node_modules/@aws-mdaa/config/test/config.test.d.ts +5 -0
- package/node_modules/@aws-mdaa/config/test/config.test.js +409 -0
- package/node_modules/@aws-mdaa/config/test/config.test.ts +517 -0
- package/node_modules/@aws-mdaa/config/test/param-transformer.test.d.ts +5 -0
- package/node_modules/@aws-mdaa/config/test/param-transformer.test.js +216 -0
- package/node_modules/@aws-mdaa/config/test/param-transformer.test.ts +234 -0
- package/node_modules/@aws-mdaa/config/test/path-value-transformer.test.d.ts +5 -0
- package/node_modules/@aws-mdaa/config/test/path-value-transformer.test.js +59 -0
- package/node_modules/@aws-mdaa/config/test/path-value-transformer.test.ts +68 -0
- package/node_modules/@aws-mdaa/config/test/ref-value-transformer.test.d.ts +5 -0
- package/node_modules/@aws-mdaa/config/test/ref-value-transformer.test.js +254 -0
- package/node_modules/@aws-mdaa/config/test/ref-value-transformer.test.ts +304 -0
- package/node_modules/@aws-mdaa/config/test/ssm-ref-transformer.test.d.ts +5 -0
- package/node_modules/@aws-mdaa/config/test/ssm-ref-transformer.test.js +66 -0
- package/node_modules/@aws-mdaa/config/test/ssm-ref-transformer.test.ts +79 -0
- package/node_modules/@aws-mdaa/config/tsconfig.json +40 -0
- package/node_modules/@aws-mdaa/config/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@aws-mdaa/config/typedoc.json +7 -0
- package/node_modules/lodash/README.md +2 -2
- package/node_modules/lodash/_baseOrderBy.js +1 -1
- package/node_modules/lodash/_baseUnset.js +7 -20
- package/node_modules/lodash/_setCacheHas.js +1 -1
- package/node_modules/lodash/compact.js +1 -1
- package/node_modules/lodash/core.js +3 -3
- package/node_modules/lodash/core.min.js +26 -25
- package/node_modules/lodash/fromPairs.js +3 -1
- package/node_modules/lodash/lodash.js +38 -27
- package/node_modules/lodash/lodash.min.js +125 -129
- package/node_modules/lodash/package.json +4 -2
- package/node_modules/lodash/random.js +9 -0
- package/node_modules/lodash/template.js +16 -4
- package/node_modules/lodash/templateSettings.js +4 -0
- package/package.json +27 -30
- package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/README.md +0 -185
- package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.d.ts +0 -57
- package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.js +0 -198
- package/node_modules/@aws-mdaa/s3-inventory-helper/README.md +0 -3
- package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.d.ts +0 -66
- package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.js +0 -222
- package/node_modules/@aws-mdaa/s3-inventory-helper/package.json +0 -42
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLW50LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25maWctbnQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQUVILDZDQUE4RDtBQUM5RCxnQ0FBcUc7QUFHckc7O0dBRUc7QUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNoRCxhQUFhLEVBQUUsY0FBYztRQUM3QixhQUFhLEVBQUUsR0FBRztRQUNsQixXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0tBQ2hDLENBQUMsQ0FBQztJQUNILEtBQUssRUFBRTtRQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE9BQU8sRUFBRSxjQUFjO1NBQ3hCLENBQUM7S0FDSDtDQUNGLENBQUMsQ0FBQyxDQUFDO0FBQ0osUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxNQUFNLHFCQUFzQixTQUFRLHdDQUFrQztRQUdwRSxZQUFZLEtBQStDO1lBQ3pELEtBQUs7Z0JBQ0gsS0FBSztvQkFDSjt3QkFDQyxLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLEVBQVU7eUJBQ0o7cUJBQzZCLENBQUM7WUFDaEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUM7UUFFTSw4QkFBOEIsQ0FDbkMsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsVUFBeUM7WUFFekMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRSxDQUFDO0tBQ0Y7SUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtRQUNsRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixDQUFDLEVBQXdELENBQUMsQ0FBQztRQUN0RyxlQUFlO1FBQ2YsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLCtEQUErRCxFQUFFLEdBQUcsRUFBRTtRQUN6RSxVQUFVO1FBQ1YsTUFBTSxVQUFVLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBRTlDLE1BQU07UUFDTixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsOEJBQThCLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVoRyxTQUFTO1FBQ1QsTUFBTSxDQUFDLDBCQUFZLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsOERBQThELEVBQUUsR0FBRyxFQUFFO1FBQ3hFLFVBQVU7UUFDVixNQUFNLFVBQVUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFFOUMsTUFBTTtRQUNOLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWhHLFNBQVM7UUFDVCxNQUFNLENBQUMsMEJBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0csTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7UUFDcEUsTUFBTSxTQUFTLEdBQUc7WUFDaEIsSUFBSSxFQUFFLEVBQVU7U0FDakIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUE2QyxDQUFDLENBQUM7UUFFN0csVUFBVTtRQUNWLE1BQU0sVUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBRTlDLE1BQU07UUFDTixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsOEJBQThCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU5RixTQUFTO1FBQ1QsTUFBTSxDQUFDLDBCQUFZLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUN0RSxHQUFHLFVBQVU7WUFDYixJQUFJLEVBQUUsb0JBQW9CO1NBQzNCLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1FBQzVFLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUU5QyxVQUFVO1FBQ1YsTUFBTSxVQUFVLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFFaEQsTUFBTTtRQUNOLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpGLFNBQVM7UUFDVCxNQUFNLENBQUMsMEJBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUU5QyxNQUFNO1FBQ04sTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFL0YsU0FBUztRQUNULE1BQU0sQ0FBQywwQkFBWSxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM1RixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFFOUMsNkRBQTZEO1FBQzdELE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFbkQsTUFBTTtRQUNOLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpGLDREQUE0RDtRQUM1RCxNQUFNLENBQUMsMEJBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BGLDRFQUE0RTtRQUM1RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFFOUMsK0RBQStEO1FBQy9ELE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUVyRSxNQUFNO1FBQ04sTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFaEcscURBQXFEO1FBQ3JELE1BQU0sQ0FBQywwQkFBWSxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBDZm5QYXJhbWV0ZXIsIENmblBhcmFtZXRlclByb3BzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTWRhYUNvbmZpZ1BhcmFtUmVmVmFsdWVUcmFuc2Zvcm1lciwgTWRhYUNvbmZpZ1BhcmFtUmVmVmFsdWVUcmFuc2Zvcm1lclByb3BzIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgTm9kZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFRoZXNlIHRlc3RzIGNvdmVyIGFsbCBsb2dpYyBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgVHJhbnNmb3JtZXJzXG4gKi9cbmplc3QubW9jaygnYXdzLWNkay1saWInLCAoKSA9PiAoe1xuICBDZm5QYXJhbWV0ZXI6IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICB2YWx1ZUFzU3RyaW5nOiAnc3RyaW5nLXZhbHVlJyxcbiAgICB2YWx1ZUFzTnVtYmVyOiAxMjMsXG4gICAgdmFsdWVBc0xpc3Q6IFsnaXRlbTEnLCAnaXRlbTInXSxcbiAgfSkpLFxuICBTdGFjazoge1xuICAgIG9mOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgIHBhcnRpdGlvbjogJ2F3cycsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsXG4gICAgfSksXG4gIH0sXG59KSk7XG5kZXNjcmliZSgnVGVzdCBjcmVhdGVQYXJhbVVzaW5nVHlwZUxhYmVscycsICgpID0+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
|
+
});
|