@aws-solutions-constructs/core 1.150.0 → 1.153.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 +146 -40
- package/index.d.ts +2 -0
- package/index.js +3 -1
- package/lib/elasticache-defaults.d.ts +21 -0
- package/lib/elasticache-defaults.js +32 -0
- package/lib/elasticache-helper.d.ts +25 -0
- package/lib/elasticache-helper.js +70 -0
- package/lib/kinesis-streams-helper.js +2 -2
- package/lib/lambda-helper.js +11 -2
- package/lib/security-group-helper.d.ts +1 -0
- package/lib/security-group-helper.js +29 -2
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +4 -4
- package/lib/vpc-helper.js +56 -40
- package/package.json +71 -70
- package/test/elasticache-defaults.test.d.ts +13 -0
- package/test/elasticache-defaults.test.js +32 -0
- package/test/elasticache-helper.test.d.ts +13 -0
- package/test/elasticache-helper.test.js +92 -0
- package/test/security-group-helper.test.js +26 -1
- package/test/test-helper.d.ts +4 -1
- package/test/test-helper.js +32 -2
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
+
* with the License. A copy of the License is located at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
+
* and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
require("@aws-cdk/assert/jest");
|
|
16
|
+
const test_helper_1 = require("./test-helper");
|
|
17
|
+
const cdk = require("@aws-cdk/core");
|
|
18
|
+
const ec2 = require("@aws-cdk/aws-ec2");
|
|
19
|
+
const elasticache_helper_1 = require("../lib/elasticache-helper");
|
|
20
|
+
const elasticache_defaults_1 = require("../lib/elasticache-defaults");
|
|
21
|
+
test("Test returning existing Cache", () => {
|
|
22
|
+
const stack = new cdk.Stack();
|
|
23
|
+
const testVpc = test_helper_1.getTestVpc(stack, false);
|
|
24
|
+
const existingCache = test_helper_1.CreateTestCache(stack, 'test', testVpc);
|
|
25
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'test-sg', {
|
|
26
|
+
vpc: testVpc
|
|
27
|
+
});
|
|
28
|
+
const obtainedCache = elasticache_helper_1.obtainMemcachedCluster(stack, 'test-cache', {
|
|
29
|
+
existingCache,
|
|
30
|
+
cacheSecurityGroupId: securityGroup.securityGroupId
|
|
31
|
+
});
|
|
32
|
+
expect(obtainedCache).toBe(existingCache);
|
|
33
|
+
});
|
|
34
|
+
test("Test create cache with no client props", () => {
|
|
35
|
+
const stack = new cdk.Stack();
|
|
36
|
+
const testVpc = test_helper_1.getTestVpc(stack, false);
|
|
37
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'test-sg', {
|
|
38
|
+
vpc: testVpc
|
|
39
|
+
});
|
|
40
|
+
elasticache_helper_1.obtainMemcachedCluster(stack, 'test-cache', {
|
|
41
|
+
vpc: testVpc,
|
|
42
|
+
cacheSecurityGroupId: securityGroup.securityGroupId,
|
|
43
|
+
cachePort: 11111,
|
|
44
|
+
});
|
|
45
|
+
expect(stack).toHaveResourceLike("AWS::ElastiCache::CacheCluster", {
|
|
46
|
+
Port: 11111,
|
|
47
|
+
AZMode: 'cross-az',
|
|
48
|
+
Engine: 'memcached',
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
test("Test create cache with client props", () => {
|
|
52
|
+
const stack = new cdk.Stack();
|
|
53
|
+
const testVpc = test_helper_1.getTestVpc(stack, false);
|
|
54
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'test-sg', {
|
|
55
|
+
vpc: testVpc
|
|
56
|
+
});
|
|
57
|
+
elasticache_helper_1.obtainMemcachedCluster(stack, 'test-cache', {
|
|
58
|
+
vpc: testVpc,
|
|
59
|
+
cacheSecurityGroupId: securityGroup.securityGroupId,
|
|
60
|
+
cachePort: 12321,
|
|
61
|
+
cacheProps: {
|
|
62
|
+
azMode: 'single-az',
|
|
63
|
+
clusterName: 'test-name'
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
expect(stack).toHaveResourceLike("AWS::ElastiCache::CacheCluster", {
|
|
67
|
+
Port: 12321,
|
|
68
|
+
AZMode: 'single-az',
|
|
69
|
+
Engine: 'memcached',
|
|
70
|
+
ClusterName: 'test-name'
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
test("Test GetCachePort() with existing cache", () => {
|
|
74
|
+
const stack = new cdk.Stack();
|
|
75
|
+
const testVpc = test_helper_1.getTestVpc(stack, false);
|
|
76
|
+
const existingCache = test_helper_1.CreateTestCache(stack, 'test', testVpc, 32123);
|
|
77
|
+
const port = elasticache_helper_1.getCachePort(undefined, existingCache);
|
|
78
|
+
// Since the port from the existing cache is a token,
|
|
79
|
+
// we can't check it directly, but we can ensure
|
|
80
|
+
// the default port was replaced
|
|
81
|
+
expect(port).not.toEqual(elasticache_defaults_1.GetDefaultCachePort());
|
|
82
|
+
});
|
|
83
|
+
test("Test GetCachePort() with clientCacheProps", () => {
|
|
84
|
+
const clientPort = 32123;
|
|
85
|
+
const port = elasticache_helper_1.getCachePort({ port: clientPort });
|
|
86
|
+
expect(port).toEqual(clientPort);
|
|
87
|
+
});
|
|
88
|
+
test("Test GetCachePort() with default port", () => {
|
|
89
|
+
const port = elasticache_helper_1.getCachePort();
|
|
90
|
+
expect(port).toEqual(elasticache_defaults_1.GetDefaultCachePort());
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY2FjaGUtaGVscGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbGFzdGljYWNoZS1oZWxwZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsZ0NBQThCO0FBQzlCLCtDQUE0RDtBQUM1RCxxQ0FBcUM7QUFDckMsd0NBQXdDO0FBQ3hDLGtFQUFpRjtBQUNqRixzRUFBa0U7QUFFbEUsSUFBSSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtJQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUU5QixNQUFNLE9BQU8sR0FBRyx3QkFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxNQUFNLGFBQWEsR0FBRyw2QkFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFOUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7UUFDNUQsR0FBRyxFQUFFLE9BQU87S0FDYixDQUFDLENBQUM7SUFDSCxNQUFNLGFBQWEsR0FBRywyQ0FBc0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO1FBQ2hFLGFBQWE7UUFDYixvQkFBb0IsRUFBRSxhQUFhLENBQUMsZUFBZTtLQUNwRCxDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUU5QixNQUFNLE9BQU8sR0FBRyx3QkFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV6QyxNQUFNLGFBQWEsR0FBRyxJQUFJ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bSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgXCJAYXdzLWNkay9hc3NlcnQvamVzdFwiO1xuaW1wb3J0IHsgQ3JlYXRlVGVzdENhY2hlLCBnZXRUZXN0VnBjIH0gZnJvbSBcIi4vdGVzdC1oZWxwZXJcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdAYXdzLWNkay9hd3MtZWMyJztcbmltcG9ydCB7IGdldENhY2hlUG9ydCwgb2J0YWluTWVtY2FjaGVkQ2x1c3RlciB9IGZyb20gXCIuLi9saWIvZWxhc3RpY2FjaGUtaGVscGVyXCI7XG5pbXBvcnQgeyBHZXREZWZhdWx0Q2FjaGVQb3J0IH0gZnJvbSBcIi4uL2xpYi9lbGFzdGljYWNoZS1kZWZhdWx0c1wiO1xuXG50ZXN0KFwiVGVzdCByZXR1cm5pbmcgZXhpc3RpbmcgQ2FjaGVcIiwgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICBjb25zdCB0ZXN0VnBjID0gZ2V0VGVzdFZwYyhzdGFjaywgZmFsc2UpO1xuICBjb25zdCBleGlzdGluZ0NhY2hlID0gQ3JlYXRlVGVzdENhY2hlKHN0YWNrLCAndGVzdCcsIHRlc3RWcGMpO1xuXG4gIGNvbnN0IHNlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAoc3RhY2ssICd0ZXN0LXNnJywge1xuICAgIHZwYzogdGVzdFZwY1xuICB9KTtcbiAgY29uc3Qgb2J0YWluZWRDYWNoZSA9IG9idGFpbk1lbWNhY2hlZENsdXN0ZXIoc3RhY2ssICd0ZXN0LWNhY2hlJywge1xuICAgIGV4aXN0aW5nQ2FjaGUsXG4gICAgY2FjaGVTZWN1cml0eUdyb3VwSWQ6IHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkXG4gIH0pO1xuXG4gIGV4cGVjdChvYnRhaW5lZENhY2hlKS50b0JlKGV4aXN0aW5nQ2FjaGUpO1xufSk7XG5cbnRlc3QoXCJUZXN0IGNyZWF0ZSBjYWNoZSB3aXRoIG5vIGNsaWVudCBwcm9wc1wiLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gIGNvbnN0IHRlc3RWcGMgPSBnZXRUZXN0VnBjKHN0YWNrLCBmYWxzZSk7XG5cbiAgY29uc3Qgc2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChzdGFjaywgJ3Rlc3Qtc2cnLCB7XG4gICAgdnBjOiB0ZXN0VnBjXG4gIH0pO1xuICBvYnRhaW5NZW1jYWNoZWRDbHVzdGVyKHN0YWNrLCAndGVzdC1jYWNoZScsIHtcbiAgICB2cGM6IHRlc3RWcGMsXG4gICAgY2FjaGVTZWN1cml0eUdyb3VwSWQ6IHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkLFxuICAgIGNhY2hlUG9ydDogMTExMTEsXG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpFbGFzdGlDYWNoZTo6Q2FjaGVDbHVzdGVyXCIsIHtcbiAgICBQb3J0OiAxMTExMSxcbiAgICBBWk1vZGU6ICdjcm9zcy1heicsXG4gICAgRW5naW5lOiAnbWVtY2FjaGVkJyxcbiAgfSk7XG59KTtcblxudGVzdChcIlRlc3QgY3JlYXRlIGNhY2hlIHdpdGggY2xpZW50IHByb3BzXCIsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG5cbiAgY29uc3QgdGVzdFZwYyA9IGdldFRlc3RWcGMoc3RhY2ssIGZhbHNlKTtcblxuICBjb25zdCBzZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHN0YWNrLCAndGVzdC1zZycsIHtcbiAgICB2cGM6IHRlc3RWcGNcbiAgfSk7XG4gIG9idGFpbk1lbWNhY2hlZENsdXN0ZXIoc3RhY2ssICd0ZXN0LWNhY2hlJywge1xuICAgIHZwYzogdGVzdFZwYyxcbiAgICBjYWNoZVNlY3VyaXR5R3JvdXBJZDogc2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgY2FjaGVQb3J0OiAxMjMyMSxcbiAgICBjYWNoZVByb3BzOiB7XG4gICAgICBhek1vZGU6ICdzaW5nbGUtYXonLFxuICAgICAgY2x1c3Rlck5hbWU6ICd0ZXN0LW5hbWUnXG4gICAgfVxuICB9KTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlTGlrZShcIkFXUzo6RWxhc3RpQ2FjaGU6OkNhY2hlQ2x1c3RlclwiLCB7XG4gICAgUG9ydDogMTIzMjEsXG4gICAgQVpNb2RlOiAnc2luZ2xlLWF6JyxcbiAgICBFbmdpbmU6ICdtZW1jYWNoZWQnLFxuICAgIENsdXN0ZXJOYW1lOiAndGVzdC1uYW1lJ1xuICB9KTtcbn0pO1xuXG50ZXN0KFwiVGVzdCBHZXRDYWNoZVBvcnQoKSB3aXRoIGV4aXN0aW5nIGNhY2hlXCIsICgpID0+IHtcblxuICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICBjb25zdCB0ZXN0VnBjID0gZ2V0VGVzdFZwYyhzdGFjaywgZmFsc2UpO1xuICBjb25zdCBleGlzdGluZ0NhY2hlID0gQ3JlYXRlVGVzdENhY2hlKHN0YWNrLCAndGVzdCcsIHRlc3RWcGMsIDMyMTIzKTtcblxuICBjb25zdCBwb3J0ID0gZ2V0Q2FjaGVQb3J0KHVuZGVmaW5lZCwgZXhpc3RpbmdDYWNoZSk7XG5cbiAgLy8gU2luY2UgdGhlIHBvcnQgZnJvbSB0aGUgZXhpc3RpbmcgY2FjaGUgaXMgYSB0b2tlbixcbiAgLy8gd2UgY2FuJ3QgY2hlY2sgaXQgZGlyZWN0bHksIGJ1dCB3ZSBjYW4gZW5zdXJlXG4gIC8vIHRoZSBkZWZhdWx0IHBvcnQgd2FzIHJlcGxhY2VkXG4gIGV4cGVjdChwb3J0KS5ub3QudG9FcXVhbChHZXREZWZhdWx0Q2FjaGVQb3J0KCkpO1xufSk7XG5cbnRlc3QoXCJUZXN0IEdldENhY2hlUG9ydCgpIHdpdGggY2xpZW50Q2FjaGVQcm9wc1wiLCAoKSA9PiB7XG4gIGNvbnN0IGNsaWVudFBvcnQgPSAzMjEyMztcblxuICBjb25zdCBwb3J0ID0gZ2V0Q2FjaGVQb3J0KHsgcG9ydDogY2xpZW50UG9ydCB9KTtcbiAgZXhwZWN0KHBvcnQpLnRvRXF1YWwoY2xpZW50UG9ydCk7XG59KTtcbnRlc3QoXCJUZXN0IEdldENhY2hlUG9ydCgpIHdpdGggZGVmYXVsdCBwb3J0XCIsICgpID0+IHtcblxuICBjb25zdCBwb3J0ID0gZ2V0Q2FjaGVQb3J0KCk7XG4gIGV4cGVjdChwb3J0KS50b0VxdWFsKEdldERlZmF1bHRDYWNoZVBvcnQoKSk7XG59KTtcbiJdfQ==
|
|
@@ -90,4 +90,29 @@ test("Test deployment with egress rule", () => {
|
|
|
90
90
|
],
|
|
91
91
|
});
|
|
92
92
|
});
|
|
93
|
-
|
|
93
|
+
test("Test self referencing security group", () => {
|
|
94
|
+
const testPort = 33333;
|
|
95
|
+
// Stack
|
|
96
|
+
const stack = new core_1.Stack();
|
|
97
|
+
const vpc = new ec2.Vpc(stack, "test-vpc", {});
|
|
98
|
+
// Helper declaration
|
|
99
|
+
defaults.CreateSelfReferencingSecurityGroup(stack, "testsg", vpc, testPort);
|
|
100
|
+
expect(stack).toHaveResourceLike("AWS::EC2::SecurityGroupIngress", {
|
|
101
|
+
IpProtocol: "TCP",
|
|
102
|
+
FromPort: testPort,
|
|
103
|
+
ToPort: testPort,
|
|
104
|
+
GroupId: {
|
|
105
|
+
"Fn::GetAtt": [
|
|
106
|
+
"testsgcachesg72A723EA",
|
|
107
|
+
"GroupId"
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
SourceSecurityGroupId: {
|
|
111
|
+
"Fn::GetAtt": [
|
|
112
|
+
"testsgcachesg72A723EA",
|
|
113
|
+
"GroupId"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtaGVscGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZWN1cml0eS1ncm91cC1oZWxwZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsd0NBQXNDO0FBQ3RDLGdDQUFnQztBQUNoQyxnQ0FBOEI7QUFDOUIsd0NBQXdDO0FBRXhDLGlFQUFpRTtBQUNqRSw2Q0FBNkM7QUFDN0MsaUVBQWlFO0FBQ2pFLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7SUFDdEQsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFL0MscUJBQXFCO0lBQ3JCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FDekIsS0FBSyxFQUNMLGVBQWUsRUFDZjtRQUNFLEdBQUc7UUFDSCxnQkFBZ0IsRUFBRSxJQUFJO0tBQ3ZCLEVBQ0QsRUFBRSxFQUNGLEVBQUUsQ0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRTtRQUN0RCxtQkFBbUIsRUFBRTtZQUNuQjtnQkFDRSxNQUFNLEVBQUUsV0FBVztnQkFDbkIsV0FBVyxFQUFFLHVDQUF1QztnQkFDcEQsVUFBVSxFQUFFLElBQUk7YUFDakI7U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtJQUM5QyxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxZQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMs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QUNQLFlBQVksRUFBRTtnQkFDWix1QkFBdUI7Z0JBQ3ZCLFNBQVM7YUFDVjtTQUNGO1FBQ0QscUJBQXFCLEVBQUU7WUFDckIsWUFBWSxFQUFFO2dCQUNaLHVCQUF1QjtnQkFDdkIsU0FBUzthQUNWO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFFTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAyMDIyIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiQGF3cy1jZGsvY29yZVwiO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSBcIi4uL1wiO1xuaW1wb3J0IFwiQGF3cy1jZGsvYXNzZXJ0L2plc3RcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiQGF3cy1jZGsvYXdzLWVjMlwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdCBtaW5pbWFsIGRlcGxveW1lbnQgd2l0aCBubyBwcm9wZXJ0aWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdChcIlRlc3QgbWluaW1hbCBkZXBsb3ltZW50IHdpdGggbm8gcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGMoc3RhY2ssIFwidGVzdC12cGNcIiwge30pO1xuXG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZFNlY3VyaXR5R3JvdXAoXG4gICAgc3RhY2ssXG4gICAgXCJwcmltYXJ5LXF1ZXVlXCIsXG4gICAge1xuICAgICAgdnBjLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9LFxuICAgIFtdLFxuICAgIFtdXG4gICk7XG5cbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZShcIkFXUzo6RUMyOjpTZWN1cml0eUdyb3VwXCIsIHtcbiAgICBTZWN1cml0eUdyb3VwRWdyZXNzOiBbXG4gICAgICB7XG4gICAgICAgIENpZHJJcDogXCIwLjAuMC4wLzBcIixcbiAgICAgICAgRGVzY3JpcHRpb246IFwiQWxsb3cgYWxsIG91dGJvdW5kIHRyYWZmaWMgYnkgZGVmYXVsdFwiLFxuICAgICAgICBJcFByb3RvY29sOiBcIi0xXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xufSk7XG5cbnRlc3QoXCJUZXN0IGRlcGxveW1lbnQgd2l0aCBpbmdyZXNzIHJ1bGVzXCIsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwYyhzdGFjaywgXCJ0ZXN0LXZwY1wiLCB7fSk7XG5cbiAgLy8gSGVscGVyIGRlY2xhcmF0aW9uXG4gIGRlZmF1bHRzLmJ1aWxkU2VjdXJpdHlHcm91cChcbiAgICBzdGFjayxcbiAgICBcInByaW1hcnktcXVldWVcIixcbiAgICB7XG4gICAgICB2cGMsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0sXG4gICAgW3sgcGVlcjogZWMyLlBlZXIuaXB2NChcIjEuMS4xLjEvMTZcIiksIGNvbm5lY3Rpb246IGVjMi5Qb3J0LnRjcCgxMDApIH1dLFxuICAgIFtdXG4gICk7XG5cbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZShcIkFXUzo6RUMyOjpTZWN1cml0eUdyb3VwXCIsIHtcbiAgICBTZWN1cml0eUdyb3VwSW5ncmVzczogW1xuICAgICAge1xuICAgICAgICBDaWRySXA6IFwiMS4xLjEuMS8xNlwiLFxuICAgICAgICBEZXNjcmlwdGlvbjogXCJmcm9tIDEuMS4xLjEvMTY6MTAwXCIsXG4gICAgICAgIEZyb21Qb3J0OiAxMDAsXG4gICAgICAgIElwUHJvdG9jb2w6IFwidGNwXCIsXG4gICAgICAgIFRvUG9ydDogMTAwLFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcbn0pO1xuXG50ZXN0KFwiVGVzdCBkZXBsb3ltZW50IHdpdGggZWdyZXNzIHJ1bGVcIiwgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjKHN0YWNrLCBcInRlc3QtdnBjXCIsIHt9KTtcblxuICAvLyBIZWxwZXIgZGVjbGFyYXRpb25cbiAgZGVmYXVsdHMuYnVpbGRTZWN1cml0eUdyb3VwKFxuICAgIHN0YWNrLFxuICAgIFwicHJpbWFyeS1xdWV1ZVwiLFxuICAgIHtcbiAgICAgIHZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IGZhbHNlLFxuICAgIH0sXG4gICAgW10sXG4gICAgW1xuICAgICAgeyBwZWVyOiBlYzIuUGVlci5pcHY0KFwiMS4xLjEuMS8xNlwiKSwgY29ubmVjdGlvbjogZWMyLlBvcnQudGNwKDEwMCkgfSxcbiAgICAgIHsgcGVlcjogZWMyLlBlZXIuaXB2NChcIjIuMi4yLjIvMjRcIiksIGNvbm5lY3Rpb246IGVjMi5Qb3J0LnRjcCgyMDApIH0sXG4gICAgXVxuICApO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OkVDMjo6U2VjdXJpdHlHcm91cFwiLCB7XG4gICAgU2VjdXJpdHlHcm91cEVncmVzczogW1xuICAgICAge1xuICAgICAgICBDaWRySXA6IFwiMS4xLjEuMS8xNlwiLFxuICAgICAgICBEZXNjcmlwdGlvbjogXCJmcm9tIDEuMS4xLjEvMTY6MTAwXCIsXG4gICAgICAgIEZyb21Qb3J0OiAxMDAsXG4gICAgICAgIElwUHJvdG9jb2w6IFwidGNwXCIsXG4gICAgICAgIFRvUG9ydDogMTAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgQ2lkcklwOiBcIjIuMi4yLjIvMjRcIixcbiAgICAgICAgRGVzY3JpcHRpb246IFwiZnJvbSAyLjIuMi4yLzI0OjIwMFwiLFxuICAgICAgICBGcm9tUG9ydDogMjAwLFxuICAgICAgICBJcFByb3RvY29sOiBcInRjcFwiLFxuICAgICAgICBUb1BvcnQ6IDIwMCxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG59KTtcblxudGVzdChcIlRlc3Qgc2VsZiByZWZlcmVuY2luZyBzZWN1cml0eSBncm91cFwiLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3RQb3J0ID0gMzMzMzM7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGMoc3RhY2ssIFwidGVzdC12cGNcIiwge30pO1xuXG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5DcmVhdGVTZWxmUmVmZXJlbmNpbmdTZWN1cml0eUdyb3VwKFxuICAgIHN0YWNrLFxuICAgIFwidGVzdHNnXCIsXG4gICAgdnBjLFxuICAgIHRlc3RQb3J0LFxuICApO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpFQzI6OlNlY3VyaXR5R3JvdXBJbmdyZXNzXCIsIHtcbiAgICBJcFByb3RvY29sOiBcIlRDUFwiLFxuICAgIEZyb21Qb3J0OiB0ZXN0UG9ydCxcbiAgICBUb1BvcnQ6IHRlc3RQb3J0LFxuICAgIEdyb3VwSWQ6IHtcbiAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgIFwidGVzdHNnY2FjaGVzZzcyQTcyM0VBXCIsXG4gICAgICAgIFwiR3JvdXBJZFwiXG4gICAgICBdXG4gICAgfSxcbiAgICBTb3VyY2VTZWN1cml0eUdyb3VwSWQ6IHtcbiAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgIFwidGVzdHNnY2FjaGVzZzcyQTcyM0VBXCIsXG4gICAgICAgIFwiR3JvdXBJZFwiXG4gICAgICBdXG4gICAgfSxcbiAgfSk7XG5cbn0pO1xuIl19
|
package/test/test-helper.d.ts
CHANGED
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { Bucket, BucketProps } from "@aws-cdk/aws-s3";
|
|
14
14
|
import { Construct, Stack } from "@aws-cdk/core";
|
|
15
|
+
import * as cache from '@aws-cdk/aws-elasticache';
|
|
16
|
+
import * as ec2 from '@aws-cdk/aws-ec2';
|
|
15
17
|
import * as acm from '@aws-cdk/aws-certificatemanager';
|
|
16
18
|
export declare const fakeEcrRepoArn = "arn:aws:ecr:us-east-1:123456789012:repository/fake-repo";
|
|
17
19
|
export declare function CreateScrapBucket(scope: Construct, props?: BucketProps | any): Bucket;
|
|
@@ -22,6 +24,7 @@ export declare function CreateScrapBucket(scope: Construct, props?: BucketProps
|
|
|
22
24
|
* e.g. 'integ.apigateway-dynamodb-CRUD.js' will return 'apigateway-dynamodb-CRUD'
|
|
23
25
|
*/
|
|
24
26
|
export declare function generateIntegStackName(filename: string): string;
|
|
25
|
-
export declare function getTestVpc(stack: Stack, publicFacing?: boolean):
|
|
27
|
+
export declare function getTestVpc(stack: Stack, publicFacing?: boolean): ec2.IVpc;
|
|
26
28
|
export declare function getFakeCertificate(scope: Construct, id: string): acm.ICertificate;
|
|
27
29
|
export declare function suppressAutoDeleteHandlerWarnings(stack: Stack): void;
|
|
30
|
+
export declare function CreateTestCache(scope: Construct, id: string, vpc: ec2.IVpc, port?: number): cache.CfnCacheCluster;
|
package/test/test-helper.js
CHANGED
|
@@ -12,15 +12,19 @@
|
|
|
12
12
|
* and limitations under the License.
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.suppressAutoDeleteHandlerWarnings = exports.getFakeCertificate = exports.getTestVpc = exports.generateIntegStackName = exports.CreateScrapBucket = exports.fakeEcrRepoArn = void 0;
|
|
15
|
+
exports.CreateTestCache = exports.suppressAutoDeleteHandlerWarnings = exports.getFakeCertificate = exports.getTestVpc = exports.generateIntegStackName = exports.CreateScrapBucket = exports.fakeEcrRepoArn = void 0;
|
|
16
16
|
// Imports
|
|
17
17
|
const aws_s3_1 = require("@aws-cdk/aws-s3");
|
|
18
18
|
const core_1 = require("@aws-cdk/core");
|
|
19
19
|
const vpc_helper_1 = require("../lib/vpc-helper");
|
|
20
20
|
const vpc_defaults_1 = require("../lib/vpc-defaults");
|
|
21
21
|
const utils_1 = require("../lib/utils");
|
|
22
|
+
const elasticache_helper_1 = require("../lib/elasticache-helper");
|
|
22
23
|
const path = require("path");
|
|
24
|
+
const cache = require("@aws-cdk/aws-elasticache");
|
|
25
|
+
const ec2 = require("@aws-cdk/aws-ec2");
|
|
23
26
|
const acm = require("@aws-cdk/aws-certificatemanager");
|
|
27
|
+
const elasticache_defaults_1 = require("../lib/elasticache-defaults");
|
|
24
28
|
exports.fakeEcrRepoArn = 'arn:aws:ecr:us-east-1:123456789012:repository/fake-repo';
|
|
25
29
|
// Creates a bucket used for testing - minimal properties, destroyed after test
|
|
26
30
|
function CreateScrapBucket(scope, props) {
|
|
@@ -95,4 +99,30 @@ function suppressAutoDeleteHandlerWarnings(stack) {
|
|
|
95
99
|
});
|
|
96
100
|
}
|
|
97
101
|
exports.suppressAutoDeleteHandlerWarnings = suppressAutoDeleteHandlerWarnings;
|
|
98
|
-
|
|
102
|
+
function CreateTestCache(scope, id, vpc, port) {
|
|
103
|
+
const cachePort = port !== null && port !== void 0 ? port : elasticache_defaults_1.GetDefaultCachePort();
|
|
104
|
+
// Create the subnet group from all the isolated subnets in the VPC
|
|
105
|
+
const subnetGroup = elasticache_helper_1.createCacheSubnetGroup(scope, vpc, id);
|
|
106
|
+
const emptySG = new ec2.SecurityGroup(scope, `${id}-cachesg`, {
|
|
107
|
+
vpc,
|
|
108
|
+
allowAllOutbound: true,
|
|
109
|
+
});
|
|
110
|
+
utils_1.addCfnSuppressRules(emptySG, [{ id: "W40", reason: "Test Resource" }]);
|
|
111
|
+
utils_1.addCfnSuppressRules(emptySG, [{ id: "W5", reason: "Test Resource" }]);
|
|
112
|
+
utils_1.addCfnSuppressRules(emptySG, [{ id: "W36", reason: "Test Resource" }]);
|
|
113
|
+
const cacheProps = {
|
|
114
|
+
clusterName: `${id}-cdk-cluster`,
|
|
115
|
+
cacheNodeType: "cache.t3.medium",
|
|
116
|
+
engine: "memcached",
|
|
117
|
+
numCacheNodes: 2,
|
|
118
|
+
port: cachePort,
|
|
119
|
+
azMode: "cross-az",
|
|
120
|
+
vpcSecurityGroupIds: [emptySG.securityGroupId],
|
|
121
|
+
cacheSubnetGroupName: subnetGroup.cacheSubnetGroupName,
|
|
122
|
+
};
|
|
123
|
+
const newCache = new cache.CfnCacheCluster(scope, `${id}-cluster`, cacheProps);
|
|
124
|
+
newCache.addDependsOn(subnetGroup);
|
|
125
|
+
return newCache;
|
|
126
|
+
}
|
|
127
|
+
exports.CreateTestCache = CreateTestCache;
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILFVBQVU7QUFDViw0Q0FBd0U7QUFDeEUsd0NBQWdFO0FBQ2hFLGtEQUE2QztBQUM3QyxzREFBNEY7QUFDNUYsd0NBQWtFO0FBQ2xFLGtFQUFvRTtBQUNwRSw2QkFBNkI7QUFDN0Isa0RBQWtEO0FBQ2xELHdDQUF3QztBQUN4Qyx1REFBdUQ7QUFFdkQsc0VBQWtFO0FBRXJELFFBQUEsY0FBYyxHQUFHLHlEQUF5RCxDQUFDO0FBRXhGLCtFQUErRTtBQUMvRSxTQUFnQixpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEtBQXlCO0lBQzNFLE1BQU0sWUFBWSxHQUFHO1FBQ25CLFNBQVMsRUFBRSxJQUFJO1FBQ2YsYUFBYSxFQUFFLG9CQUFhLENBQUMsT0FBTztRQUNwQyxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtLQUN4QyxDQUFDO0lBRUYsSUFBSSxnQkFBNkIsQ0FBQztJQUNsQyxJQUFJLEtBQUssRUFBRTtRQUNULGdCQUFnQixHQUFHLHFCQUFhLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3ZEO1NBQU07UUFDTCxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7S0FDakM7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLGVBQU0sQ0FDN0IsS0FBSyxFQUNMLHdCQUF3QixFQUN4QixnQkFBZ0IsQ0FDakIsQ0FBQztJQUVGLDJCQUFtQixDQUFDLFlBQVksRUFBRTtRQUNoQztZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLGlJQUFpSTtTQUMxSTtRQUNEO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsaUlBQWlJO1NBQzFJO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFBRSxrSEFBa0g7U0FDM0g7S0FDRixDQUFDLENB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RSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLDJCQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZFLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLFdBQVcsRUFBRSxHQUFHLEVBQUUsY0FBYztRQUNoQyxhQUFhLEVBQUUsaUJBQWlCO1FBQ2hDLE1BQU0sRUFBRSxXQUFXO1FBQ25CLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsbUJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQzlDLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxvQkFBb0I7S0FDdkQsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FDeEMsS0FBSyxFQUNMLEdBQUcsRUFBRSxVQUFVLEVBQ2YsVUFBVSxDQUNYLENBQUM7SUFDRixRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUEvQkQsMENBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IDIwMjIgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBCdWNrZXQsIEJ1Y2tldFByb3BzLCBCdWNrZXRFbmNyeXB0aW9uIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gXCJAYXdzLWNkay9jb3JlXCI7XG5pbXBvcnQgeyBidWlsZFZwYyB9IGZyb20gJy4uL2xpYi92cGMtaGVscGVyJztcbmltcG9ydCB7IERlZmF1bHRQdWJsaWNQcml2YXRlVnBjUHJvcHMsIERlZmF1bHRJc29sYXRlZFZwY1Byb3BzIH0gZnJvbSAnLi4vbGliL3ZwYy1kZWZhdWx0cyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ2FjaGVTdWJuZXRHcm91cCAgfSBmcm9tIFwiLi4vbGliL2VsYXN0aWNhY2hlLWhlbHBlclwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNhY2hlIGZyb20gJ0Bhd3MtY2RrL2F3cy1lbGFzdGljYWNoZSc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnQGF3cy1jZGsvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBhY20gZnJvbSAnQGF3cy1jZGsvYXdzLWNlcnRpZmljYXRlbWFuYWdlcic7XG5pbXBvcnQgeyBDZm5GdW5jdGlvbiB9IGZyb20gXCJAYXdzLWNkay9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBHZXREZWZhdWx0Q2FjaGVQb3J0IH0gZnJvbSBcIi4uL2xpYi9lbGFzdGljYWNoZS1kZWZhdWx0c1wiO1xuXG5leHBvcnQgY29uc3QgZmFrZUVjclJlcG9Bcm4gPSAnYXJuOmF3czplY3I6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjpyZXBvc2l0b3J5L2Zha2UtcmVwbyc7XG5cbi8vIENyZWF0ZXMgYSBidWNrZXQgdXNlZCBmb3IgdGVzdGluZyAtIG1pbmltYWwgcHJvcGVydGllcywgZGVzdHJveWVkIGFmdGVyIHRlc3RcbmV4cG9ydCBmdW5jdGlvbiBDcmVhdGVTY3JhcEJ1Y2tldChzY29wZTogQ29uc3RydWN0LCBwcm9wcz86IEJ1Y2tldFByb3BzIHwgYW55KSB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgfTtcblxuICBsZXQgc3ludGhlc2l6ZWRQcm9wczogQnVja2V0UHJvcHM7XG4gIGlmIChwcm9wcykge1xuICAgIHN5bnRoZXNpemVkUHJvcHMgPSBvdmVycmlkZVByb3BzKGRlZmF1bHRQcm9wcywgcHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIHN5bnRoZXNpemVkUHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4gIH1cblxuICBjb25zdCBzY3JpcHRCdWNrZXQgPSBuZXcgQnVja2V0KFxuICAgIHNjb3BlLFxuICAgIFwiZXhpc3RpbmdTY3JpcHRMb2NhdGlvblwiLFxuICAgIHN5bnRoZXNpemVkUHJvcHNcbiAgKTtcblxuICBhZGRDZm5TdXBwcmVzc1J1bGVzKHNjcmlwdEJ1Y2tldCwgW1xuICAgIHtcbiAgICAgIGlkOiBcIlc1MVwiLFxuICAgICAgcmVhc29uOiBcIlRoaXMgUzMgYnVja2V0IGlzIGNyZWF0ZWQgZm9yIHVuaXQvIGludGVncmF0aW9uIHRlc3RpbmcgcHVycG9zZXMgb25seSBhbmQgbm90IHBhcnQgb2YgICAgICAgdGhlIGFjdHVhbCBjb25zdHJ1Y3QgaW1wbGVtZW50YXRpb25cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBcIlczNVwiLFxuICAgICAgcmVhc29uOiBcIlRoaXMgUzMgYnVja2V0IGlzIGNyZWF0ZWQgZm9yIHVuaXQvIGludGVncmF0aW9uIHRlc3RpbmcgcHVycG9zZXMgb25seSBhbmQgbm90IHBhcnQgb2YgICAgICAgdGhlIGFjdHVhbCBjb25zdHJ1Y3QgaW1wbGVtZW50YXRpb25cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBcIlc0MVwiLFxuICAgICAgcmVhc29uOiBcIlRoaXMgUzMgYnVja2V0IGlzIGNyZWF0ZWQgZm9yIHVuaXQvIGludGVncmF0aW9uIHRlc3RpbmcgcHVycG9zZXMgb25seSBhbmQgbm90IHBhcnQgb2YgICAgICAgdGhlIGFjdHVhbCBjb25zdHJ1Y3RcIixcbiAgICB9XG4gIF0pO1xuXG4gIHJldHVybiBzY3JpcHRCdWNrZXQ7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgQ3JlYXRlcyBhIHN0YWNrIG5hbWUgZm9yIEludGVncmF0aW9uIHRlc3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWUgLSB0aGUgZmlsZW5hbWUgb2YgdGhlIGludGVnIHRlc3RcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gYSBzdHJpbmcgd2l0aCBjdXJyZW50IGZpbGVuYW1lIGFmdGVyIHJlbW92aW5nIGFueXRoaW5nIGJlZm9yZSB0aGUgcHJlZml4ICcuJyBhbmQgc3VmZml4ICcuanMnXG4gKiBlLmcuICdpbnRlZy5hcGlnYXRld2F5LWR5bmFtb2RiLUNSVUQuanMnIHdpbGwgcmV0dXJuICdhcGlnYXRld2F5LWR5bmFtb2RiLUNSVUQnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBmaWxlID0gcGF0aC5iYXNlbmFtZShmaWxlbmFtZSwgcGF0aC5leHRuYW1lKGZpbGVuYW1lKSk7XG4gIGNvbnN0IHN0YWNrbmFtZSA9IGZpbGUuc2xpY2UoZmlsZS5sYXN0SW5kZXhPZignLicpICsgMSkucmVwbGFjZSgvXy9nLCAnLScpO1xuICByZXR1cm4gc3RhY2tuYW1lO1xufVxuXG4vLyBIZWxwZXIgRnVuY3Rpb25zXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVzdFZwYyhzdGFjazogU3RhY2ssIHB1YmxpY0ZhY2luZzogYm9vbGVhbiA9IHRydWUpIHtcbiAgcmV0dXJuIGJ1aWxkVnBjKHN0YWNrLCB7XG4gICAgZGVmYXVsdFZwY1Byb3BzOiBwdWJsaWNGYWNpbmcgP1xuICAgICAgRGVmYXVsdFB1YmxpY1ByaXZhdGVWcGNQcm9wcygpIDpcbiAgICAgIERlZmF1bHRJc29sYXRlZFZwY1Byb3BzKCksXG4gICAgY29uc3RydWN0VnBjUHJvcHM6IHtcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdHJ1ZSxcbiAgICAgIGVuYWJsZURuc1N1cHBvcnQ6IHRydWUsXG4gICAgICBjaWRyOiAnMTcyLjE2OC4wLjAvMTYnLFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmFrZUNlcnRpZmljYXRlKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBhY20uSUNlcnRpZmljYXRlIHtcbiAgcmV0dXJuIGFjbS5DZXJ0aWZpY2F0ZS5mcm9tQ2VydGlmaWNhdGVBcm4oXG4gICAgc2NvcGUsXG4gICAgaWQsXG4gICAgXCJhcm46YXdzOmFjbTp1cy1lYXN0LTE6MTIzNDU2Nzg5MDEyOmNlcnRpZmljYXRlLzExMTEyMjIyLTMzMzMtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMlwiXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3Moc3RhY2s6IFN0YWNrKSB7XG4gIFN0YWNrLm9mKHN0YWNrKS5ub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgIGlmIChjaGlsZC5ub2RlLmlkID09PSAnQ3VzdG9tOjpTM0F1dG9EZWxldGVPYmplY3RzQ3VzdG9tUmVzb3VyY2VQcm92aWRlcicpIHtcbiAgICAgIGNvbnN0IGhhbmRsZXJGdW5jdGlvbiA9IGNoaWxkLm5vZGUuZmluZENoaWxkKCdIYW5kbGVyJykgYXMgQ2ZuRnVuY3Rpb247XG4gICAgICBhZGRDZm5TdXBwcmVzc1J1bGVzKGhhbmRsZXJGdW5jdGlvbiwgW3sgaWQ6IFwiVzU4XCIsIHJlYXNvbjogXCJDREsgZ2VuZXJhdGVkIGN1c3RvbSByZXNvdXJjZVwifV0pO1xuICAgICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhoYW5kbGVyRnVuY3Rpb24sIFt7IGlkOiBcIlc4OVwiLCByZWFzb246IFwiQ0RLIGdlbmVyYXRlZCBjdXN0b20gcmVzb3VyY2VcIn1dKTtcbiAgICAgIGFkZENmblN1cHByZXNzUnVsZXMoaGFuZGxlckZ1bmN0aW9uLCBbeyBpZDogXCJXOTJcIiwgcmVhc29uOiBcIkNESyBnZW5lcmF0ZWQgY3VzdG9tIHJlc291cmNlXCJ9XSk7XG4gICAgfVxuICB9KTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3JlYXRlVGVzdENhY2hlKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHZwYzogZWMyLklWcGMsIHBvcnQ/OiBudW1iZXIpIHtcbiAgY29uc3QgY2FjaGVQb3J0ID0gcG9ydCA/PyBHZXREZWZhdWx0Q2FjaGVQb3J0KCk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBzdWJuZXQgZ3JvdXAgZnJvbSBhbGwgdGhlIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhlIFZQQ1xuICBjb25zdCBzdWJuZXRHcm91cCA9IGNyZWF0ZUNhY2hlU3VibmV0R3JvdXAoc2NvcGUsIHZwYywgaWQpO1xuICBjb25zdCBlbXB0eVNHID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHNjb3BlLCBgJHtpZH0tY2FjaGVzZ2AsIHtcbiAgICB2cGMsXG4gICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgfSk7XG4gIGFkZENmblN1cHByZXNzUnVsZXMoZW1wdHlTRywgW3sgaWQ6IFwiVzQwXCIsIHJlYXNvbjogXCJUZXN0IFJlc291cmNlXCIgfV0pO1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGVtcHR5U0csIFt7IGlkOiBcIlc1XCIsIHJlYXNvbjogXCJUZXN0IFJlc291cmNlXCIgfV0pO1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGVtcHR5U0csIFt7IGlkOiBcIlczNlwiLCByZWFzb246IFwiVGVzdCBSZXNvdXJjZVwiIH1dKTtcblxuICBjb25zdCBjYWNoZVByb3BzID0ge1xuICAgIGNsdXN0ZXJOYW1lOiBgJHtpZH0tY2RrLWNsdXN0ZXJgLFxuICAgIGNhY2hlTm9kZVR5cGU6IFwiY2FjaGUudDMubWVkaXVtXCIsXG4gICAgZW5naW5lOiBcIm1lbWNhY2hlZFwiLFxuICAgIG51bUNhY2hlTm9kZXM6IDIsXG4gICAgcG9ydDogY2FjaGVQb3J0LFxuICAgIGF6TW9kZTogXCJjcm9zcy1helwiLFxuICAgIHZwY1NlY3VyaXR5R3JvdXBJZHM6IFtlbXB0eVNHLnNlY3VyaXR5R3JvdXBJZF0sXG4gICAgY2FjaGVTdWJuZXRHcm91cE5hbWU6IHN1Ym5ldEdyb3VwLmNhY2hlU3VibmV0R3JvdXBOYW1lLFxuICB9O1xuXG4gIGNvbnN0IG5ld0NhY2hlID0gbmV3IGNhY2hlLkNmbkNhY2hlQ2x1c3RlcihcbiAgICBzY29wZSxcbiAgICBgJHtpZH0tY2x1c3RlcmAsXG4gICAgY2FjaGVQcm9wc1xuICApO1xuICBuZXdDYWNoZS5hZGREZXBlbmRzT24oc3VibmV0R3JvdXApO1xuICByZXR1cm4gbmV3Q2FjaGU7XG59XG4iXX0=
|