@aws-cdk-testing/cli-integ 3.29.1 → 3.30.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/.yarnrc.yml +3 -0
- package/README.md +1 -1
- package/lib/regions.d.ts +4 -0
- package/lib/regions.js +11 -2
- package/lib/shell.d.ts +5 -0
- package/lib/shell.js +20 -7
- package/npm-shrinkwrap.json +1730 -2463
- package/package.json +55 -45
- package/resources/cdk-apps/app/app.js +57 -0
- package/resources/cdk-apps/import-existing-resources-app/app.js +26 -0
- package/resources/cdk-apps/import-existing-resources-app/cdk.json +3 -0
- package/resources/cdk-apps/nested-stack-with-fn-join-export/app.js +0 -2
- package/tests/cli-integ-tests/deploy/cdk-deploy-skips-unnecessary-updates-for-nested-stacks.integtest.js +10 -8
- package/tests/cli-integ-tests/deploy/cdk-deploy-with-any-change-approval-shows-diff.integtest.js +1 -2
- package/tests/cli-integ-tests/deploy/cdk-deploy-with-change-set-approval-diff.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/deploy/cdk-deploy-with-change-set-approval-diff.integtest.js +44 -0
- package/tests/cli-integ-tests/deploy/cdk-import-existing-resources-error-message-includes-construct-paths.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/deploy/cdk-import-existing-resources-error-message-includes-construct-paths.integtest.js +43 -0
- package/tests/cli-integ-tests/hotswap/cdk-hotswap-deployment-supports-cloudcontrol-based-resources.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/hotswap/cdk-hotswap-deployment-supports-cloudcontrol-based-resources.integtest.js +41 -0
- package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-detect-changes.integtest.js +3 -2
- package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-filter-by-patterns.integtest.js +3 -2
- package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-no-changes.integtest.js +3 -2
- package/tests/cli-integ-tests/refactor/cdk-refactor-large-template.integtest.js +3 -2
- package/tests/cli-integ-tests/refactor/cdk-refactor-move-same-to-different-stacks.integtest.js +3 -2
- package/tests/cli-integ-tests/refactor/cdk-refactor-no-ambiguities-execution.integtest.js +3 -2
- package/tests/cli-integ-tests/refactor/cdk-refactor-with-ambiguities-execution.integtest.js +3 -2
package/package.json
CHANGED
|
@@ -15,23 +15,23 @@
|
|
|
15
15
|
"test-root": "bin/test-root"
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "
|
|
19
|
-
"bump": "
|
|
20
|
-
"check-for-updates": "
|
|
21
|
-
"check-licenses": "
|
|
22
|
-
"compile": "
|
|
23
|
-
"default": "
|
|
24
|
-
"eslint": "
|
|
25
|
-
"gather-versions": "
|
|
26
|
-
"nx": "
|
|
27
|
-
"package": "
|
|
28
|
-
"post-compile": "
|
|
29
|
-
"pre-compile": "
|
|
30
|
-
"test": "
|
|
31
|
-
"test:watch": "
|
|
32
|
-
"unbump": "
|
|
33
|
-
"watch": "
|
|
34
|
-
"projen": "
|
|
18
|
+
"build": "projen build",
|
|
19
|
+
"bump": "projen bump",
|
|
20
|
+
"check-for-updates": "projen check-for-updates",
|
|
21
|
+
"check-licenses": "projen check-licenses",
|
|
22
|
+
"compile": "projen compile",
|
|
23
|
+
"default": "projen default",
|
|
24
|
+
"eslint": "projen eslint",
|
|
25
|
+
"gather-versions": "projen gather-versions",
|
|
26
|
+
"nx": "projen nx",
|
|
27
|
+
"package": "projen package",
|
|
28
|
+
"post-compile": "projen post-compile",
|
|
29
|
+
"pre-compile": "projen pre-compile",
|
|
30
|
+
"test": "projen test",
|
|
31
|
+
"test:watch": "projen test:watch",
|
|
32
|
+
"unbump": "projen unbump",
|
|
33
|
+
"watch": "projen watch",
|
|
34
|
+
"projen": "projen"
|
|
35
35
|
},
|
|
36
36
|
"author": {
|
|
37
37
|
"name": "Amazon Web Services",
|
|
@@ -39,13 +39,13 @@
|
|
|
39
39
|
"organization": true
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@aws-cdk/toolkit-lib": "1.
|
|
42
|
+
"@aws-cdk/toolkit-lib": "1.22.0",
|
|
43
43
|
"@aws-cdk/yarn-cling": "0.0.0",
|
|
44
|
-
"@cdklabs/eslint-plugin": "^
|
|
44
|
+
"@cdklabs/eslint-plugin": "^2.0.0",
|
|
45
45
|
"@stylistic/eslint-plugin": "^3",
|
|
46
|
-
"@types/fs-extra": "^
|
|
46
|
+
"@types/fs-extra": "^11",
|
|
47
47
|
"@types/jest": "^29.5.14",
|
|
48
|
-
"@types/node": "^
|
|
48
|
+
"@types/node": "^20",
|
|
49
49
|
"@types/semver": "^7",
|
|
50
50
|
"@types/yargs": "^16",
|
|
51
51
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
@@ -53,40 +53,42 @@
|
|
|
53
53
|
"commit-and-tag-version": "^12",
|
|
54
54
|
"constructs": "^10.0.0",
|
|
55
55
|
"eslint": "^9",
|
|
56
|
-
"eslint-config-prettier": "^
|
|
57
|
-
"eslint-import-resolver-typescript": "^
|
|
56
|
+
"eslint-config-prettier": "^10.1.8",
|
|
57
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
58
58
|
"eslint-plugin-import": "^2.32.0",
|
|
59
|
-
"eslint-plugin-jest": "^29.15.
|
|
60
|
-
"eslint-plugin-jsdoc": "^62.
|
|
61
|
-
"eslint-plugin-prettier": "^
|
|
59
|
+
"eslint-plugin-jest": "^29.15.2",
|
|
60
|
+
"eslint-plugin-jsdoc": "^62.9.0",
|
|
61
|
+
"eslint-plugin-prettier": "^4.2.5",
|
|
62
62
|
"jest": "^29.7.0",
|
|
63
63
|
"jest-junit": "^16",
|
|
64
64
|
"license-checker": "^25.0.1",
|
|
65
|
+
"nx": "^22.6.4",
|
|
65
66
|
"prettier": "^2.8",
|
|
67
|
+
"projen": "^0.99.48",
|
|
66
68
|
"ts-jest": "^29.2.5",
|
|
67
69
|
"typescript": "5.9"
|
|
68
70
|
},
|
|
69
71
|
"dependencies": {
|
|
70
|
-
"@aws-sdk/client-cloudformation": "^3.
|
|
71
|
-
"@aws-sdk/client-codeartifact": "^3.
|
|
72
|
-
"@aws-sdk/client-ecr": "^3.
|
|
73
|
-
"@aws-sdk/client-ecr-public": "^3.
|
|
74
|
-
"@aws-sdk/client-ecs": "^3.
|
|
75
|
-
"@aws-sdk/client-iam": "^3.
|
|
76
|
-
"@aws-sdk/client-lambda": "^3.
|
|
77
|
-
"@aws-sdk/client-s3": "^3.
|
|
78
|
-
"@aws-sdk/client-secrets-manager": "^3.
|
|
79
|
-
"@aws-sdk/client-sns": "^3.
|
|
80
|
-
"@aws-sdk/client-sso": "^3.
|
|
81
|
-
"@aws-sdk/client-sts": "^3.
|
|
82
|
-
"@aws-sdk/credential-providers": "^3.
|
|
83
|
-
"@cdklabs/cdk-atmosphere-client": "^0.0.
|
|
72
|
+
"@aws-sdk/client-cloudformation": "^3.1028.0",
|
|
73
|
+
"@aws-sdk/client-codeartifact": "^3.1029.0",
|
|
74
|
+
"@aws-sdk/client-ecr": "^3.1028.0",
|
|
75
|
+
"@aws-sdk/client-ecr-public": "^3.1028.0",
|
|
76
|
+
"@aws-sdk/client-ecs": "^3.1028.0",
|
|
77
|
+
"@aws-sdk/client-iam": "^3.1028.0",
|
|
78
|
+
"@aws-sdk/client-lambda": "^3.1028.0",
|
|
79
|
+
"@aws-sdk/client-s3": "^3.1028.0",
|
|
80
|
+
"@aws-sdk/client-secrets-manager": "^3.1028.0",
|
|
81
|
+
"@aws-sdk/client-sns": "^3.1028.0",
|
|
82
|
+
"@aws-sdk/client-sso": "^3.1028.0",
|
|
83
|
+
"@aws-sdk/client-sts": "^3.1028.0",
|
|
84
|
+
"@aws-sdk/credential-providers": "^3.1029.0",
|
|
85
|
+
"@cdklabs/cdk-atmosphere-client": "^0.0.96",
|
|
84
86
|
"@octokit/rest": "^20",
|
|
85
|
-
"@smithy/types": "^4.
|
|
86
|
-
"@smithy/util-retry": "^4.
|
|
87
|
+
"@smithy/types": "^4.14.0",
|
|
88
|
+
"@smithy/util-retry": "^4.3.1",
|
|
87
89
|
"chalk": "^4",
|
|
88
90
|
"fast-glob": "^3.3.3",
|
|
89
|
-
"fs-extra": "^
|
|
91
|
+
"fs-extra": "^11",
|
|
90
92
|
"jest": "^29",
|
|
91
93
|
"jest-junit": "^16",
|
|
92
94
|
"make-runnable": "^1",
|
|
@@ -109,13 +111,21 @@
|
|
|
109
111
|
"engines": {
|
|
110
112
|
"node": ">= 18.0.0"
|
|
111
113
|
},
|
|
114
|
+
"devEngines": {
|
|
115
|
+
"packageManager": {
|
|
116
|
+
"name": "yarn",
|
|
117
|
+
"version": ">=4",
|
|
118
|
+
"onFail": "ignore"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
112
121
|
"main": "lib/index.js",
|
|
113
122
|
"license": "Apache-2.0",
|
|
114
123
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
115
124
|
"publishConfig": {
|
|
116
125
|
"access": "public"
|
|
117
126
|
},
|
|
118
|
-
"version": "3.
|
|
127
|
+
"version": "3.30.0",
|
|
128
|
+
"packageManager": "yarn@4.13.0",
|
|
119
129
|
"types": "lib/index.d.ts",
|
|
120
|
-
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"
|
|
130
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"yarn projen\"."
|
|
121
131
|
}
|
|
@@ -33,6 +33,9 @@ if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
|
|
|
33
33
|
aws_ecr_assets: docker,
|
|
34
34
|
aws_appsync: appsync,
|
|
35
35
|
aws_bedrockagentcore: bedrockagentcore,
|
|
36
|
+
aws_events: events,
|
|
37
|
+
aws_dynamodb: dynamodb,
|
|
38
|
+
aws_bedrock: bedrock,
|
|
36
39
|
Stack
|
|
37
40
|
} = require('aws-cdk-lib');
|
|
38
41
|
}
|
|
@@ -711,6 +714,59 @@ class AgentCoreHotswapStack extends cdk.Stack {
|
|
|
711
714
|
}
|
|
712
715
|
}
|
|
713
716
|
|
|
717
|
+
class CloudControlHotswapStack extends cdk.Stack {
|
|
718
|
+
constructor(parent, id, props) {
|
|
719
|
+
super(parent, id, props);
|
|
720
|
+
|
|
721
|
+
// DynamoDB table — a dependency that other resources reference
|
|
722
|
+
const table = new dynamodb.Table(this, 'Table', {
|
|
723
|
+
partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
|
|
724
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
725
|
+
});
|
|
726
|
+
|
|
727
|
+
// ElastiCache serverless cache — another dependency resource
|
|
728
|
+
const cache = new cdk.CfnResource(this, 'Cache', {
|
|
729
|
+
type: 'AWS::ElastiCache::ServerlessCache',
|
|
730
|
+
properties: {
|
|
731
|
+
Engine: 'valkey',
|
|
732
|
+
ServerlessCacheName: `${cdk.Stack.of(this).stackName}-cache`.substring(0, 40).toLowerCase(),
|
|
733
|
+
},
|
|
734
|
+
});
|
|
735
|
+
|
|
736
|
+
// SQS Queue — hotswapped via CCAPI, references the DynamoDB table ARN in its tag
|
|
737
|
+
const queue = new sqs.Queue(this, 'Queue', {
|
|
738
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
739
|
+
});
|
|
740
|
+
cdk.Tags.of(queue).add('DynamoTableArn', table.tableArn);
|
|
741
|
+
cdk.Tags.of(queue).add('DynamicTag', process.env.DYNAMIC_CC_PROPERTY_VALUE ?? 'original');
|
|
742
|
+
|
|
743
|
+
// Bedrock Agent — hotswapped via CCAPI, references the DynamoDB table name
|
|
744
|
+
const agentRole = new iam.Role(this, 'AgentRole', {
|
|
745
|
+
assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'),
|
|
746
|
+
});
|
|
747
|
+
const agent = new bedrock.CfnAgent(this, 'Agent', {
|
|
748
|
+
agentName: `${cdk.Stack.of(this).stackName}-agent`.substring(0, 40),
|
|
749
|
+
agentResourceRoleArn: agentRole.roleArn,
|
|
750
|
+
instruction: process.env.DYNAMIC_CC_PROPERTY_VALUE
|
|
751
|
+
? `You help query the table ${table.tableName}. ${process.env.DYNAMIC_CC_PROPERTY_VALUE}`
|
|
752
|
+
: `You help query the table ${table.tableName}. original`,
|
|
753
|
+
foundationModel: 'anthropic.claude-instant-v1',
|
|
754
|
+
});
|
|
755
|
+
|
|
756
|
+
// Events Rule — hotswapped via CCAPI, references the ElastiCache cache ARN
|
|
757
|
+
const rule = new events.Rule(this, 'Rule', {
|
|
758
|
+
schedule: events.Schedule.rate(cdk.Duration.hours(1)),
|
|
759
|
+
description: process.env.DYNAMIC_CC_PROPERTY_VALUE
|
|
760
|
+
? `Rule for cache ${cache.getAtt('ARN')}. ${process.env.DYNAMIC_CC_PROPERTY_VALUE}`
|
|
761
|
+
: `Rule for cache ${cache.getAtt('ARN')}. original`,
|
|
762
|
+
});
|
|
763
|
+
|
|
764
|
+
new cdk.CfnOutput(this, 'QueueUrl', { value: queue.queueUrl });
|
|
765
|
+
new cdk.CfnOutput(this, 'AgentName', { value: agent.ref });
|
|
766
|
+
new cdk.CfnOutput(this, 'RuleName', { value: rule.ruleName });
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
|
|
714
770
|
class DockerStack extends cdk.Stack {
|
|
715
771
|
constructor(parent, id, props) {
|
|
716
772
|
super(parent, id, props);
|
|
@@ -990,6 +1046,7 @@ switch (stackSet) {
|
|
|
990
1046
|
new LambdaHotswapStack(app, `${stackPrefix}-lambda-hotswap`);
|
|
991
1047
|
new EcsHotswapStack(app, `${stackPrefix}-ecs-hotswap`);
|
|
992
1048
|
new AgentCoreHotswapStack(app, `${stackPrefix}-agentcore-hotswap`);
|
|
1049
|
+
new CloudControlHotswapStack(app, `${stackPrefix}-cc-hotswap`);
|
|
993
1050
|
new AppSyncHotswapStack(app, `${stackPrefix}-appsync-hotswap`);
|
|
994
1051
|
new DockerStack(app, `${stackPrefix}-docker`);
|
|
995
1052
|
new DockerInUseStack(app, `${stackPrefix}-docker-in-use`);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const cdk = require('aws-cdk-lib/core');
|
|
2
|
+
const iam = require('aws-cdk-lib/aws-iam');
|
|
3
|
+
|
|
4
|
+
const stackPrefix = process.env.STACK_NAME_PREFIX;
|
|
5
|
+
if (!stackPrefix) {
|
|
6
|
+
throw new Error('the STACK_NAME_PREFIX environment variable is required');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
class ImportExistingResourcesStack extends cdk.Stack {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id, props);
|
|
12
|
+
|
|
13
|
+
const retain = process.env.REMOVAL_POLICY === 'retain';
|
|
14
|
+
|
|
15
|
+
const role = new iam.Role(this, 'MyRole', {
|
|
16
|
+
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
|
|
17
|
+
roleName: `${stackPrefix}-import-role`,
|
|
18
|
+
});
|
|
19
|
+
role.applyRemovalPolicy(retain ? cdk.RemovalPolicy.RETAIN : cdk.RemovalPolicy.DESTROY);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const app = new cdk.App();
|
|
24
|
+
new ImportExistingResourcesStack(app, `${stackPrefix}-import-existing`);
|
|
25
|
+
|
|
26
|
+
app.synth();
|
|
@@ -2,8 +2,6 @@ const cdk = require('aws-cdk-lib');
|
|
|
2
2
|
const { aws_cloudformation: cfn, aws_sns: sns, aws_ssm: ssm } = cdk;
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Reproduces https://t.corp.amazon.com/D423570178
|
|
6
|
-
*
|
|
7
5
|
* When IncludeNestedStacks is true, CloudFormation validates all nested stacks
|
|
8
6
|
* together. Export names using Fn::Join with a runtime reference get collapsed
|
|
9
7
|
* to the placeholder {{IntrinsicFunction://Fn::Join}}, causing a false
|
|
@@ -3,16 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
4
4
|
const lib_1 = require("../../../lib");
|
|
5
5
|
(0, lib_1.integTest)('deploy skips unnecessary updates for nested stacks', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
6
|
+
// Deploy a stack with a nested stack. CFN will always report nested
|
|
7
|
+
// stacks as changed, even when nothing actually changed. With the
|
|
8
|
+
// two-phase change set flow, this means every deploy creates and
|
|
9
|
+
// executes a new change set.
|
|
9
10
|
const stackArn = await fixture.cdkDeploy('with-nested-stack', { captureStderr: false });
|
|
10
|
-
|
|
11
|
-
//
|
|
11
|
+
// Deploy the same stack again — CFN always reports nested stack
|
|
12
|
+
// resources as changed, so the deploy goes through successfully
|
|
13
|
+
// without any actual resource changes.
|
|
12
14
|
await fixture.cdkDeploy('with-nested-stack');
|
|
13
15
|
const changeSet2 = await getLatestChangeSet();
|
|
14
|
-
expect(changeSet2.
|
|
15
|
-
// Deploy the stack again with --force
|
|
16
|
+
expect(changeSet2.StackStatus).toEqual('UPDATE_COMPLETE');
|
|
17
|
+
// Deploy the stack again with --force
|
|
16
18
|
await fixture.cdkDeploy('with-nested-stack', { options: ['--force'] });
|
|
17
19
|
const changeSet3 = await getLatestChangeSet();
|
|
18
20
|
expect(changeSet3.ChangeSetId).not.toEqual(changeSet2.ChangeSetId);
|
|
@@ -30,4 +32,4 @@ const lib_1 = require("../../../lib");
|
|
|
30
32
|
return response.Stacks?.[0];
|
|
31
33
|
}
|
|
32
34
|
}));
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS1za2lwcy11bm5lY2Vzc2FyeS11cGRhdGVzLWZvci1uZXN0ZWQtc3RhY2tzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1kZXBsb3ktc2tpcHMtdW5uZWNlc3NhcnktdXBkYXRlcy1mb3ItbmVzdGVkLXN0YWNrcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwRUFBdUU7QUFDdkUsc0NBQTZEO0FBRTdELElBQUEsZUFBUyxFQUNQLG9EQUFvRCxFQUNwRCxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyxvRUFBb0U7SUFDcEUsa0VBQWtFO0lBQ2xFLGlFQUFpRTtJQUNqRSw2QkFBNkI7SUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFeEYsZ0VBQWdFO0lBQ2hFLGdFQUFnRTtJQUNoRSx1Q0FBdUM7SUFDdkMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFMUQsc0NBQXNDO0lBQ3RDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxNQUFNLFVBQVUsR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7SUFDOUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRSx1RUFBdUU7SUFDdkUsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkYsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkUsS0FBSyxVQUFVLGtCQUFrQjtRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmludGVnVGVzdChcbiAgJ2RlcGxveSBza2lwcyB1bm5lY2Vzc2FyeSB1cGRhdGVzIGZvciBuZXN0ZWQgc3RhY2tzJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRGVwbG95IGEgc3RhY2sgd2l0aCBhIG5lc3RlZCBzdGFjay4gQ0ZOIHdpbGwgYWx3YXlzIHJlcG9ydCBuZXN0ZWRcbiAgICAvLyBzdGFja3MgYXMgY2hhbmdlZCwgZXZlbiB3aGVuIG5vdGhpbmcgYWN0dWFsbHkgY2hhbmdlZC4gV2l0aCB0aGVcbiAgICAvLyB0d28tcGhhc2UgY2hhbmdlIHNldCBmbG93LCB0aGlzIG1lYW5zIGV2ZXJ5IGRlcGxveSBjcmVhdGVzIGFuZFxuICAgIC8vIGV4ZWN1dGVzIGEgbmV3IGNoYW5nZSBzZXQuXG4gICAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IGNhcHR1cmVTdGRlcnI6IGZhbHNlIH0pO1xuXG4gICAgLy8gRGVwbG95IHRoZSBzYW1lIHN0YWNrIGFnYWluIOKAlCBDRk4gYWx3YXlzIHJlcG9ydHMgbmVzdGVkIHN0YWNrXG4gICAgLy8gcmVzb3VyY2VzIGFzIGNoYW5nZWQsIHNvIHRoZSBkZXBsb3kgZ29lcyB0aHJvdWdoIHN1Y2Nlc3NmdWxseVxuICAgIC8vIHdpdGhvdXQgYW55IGFjdHVhbCByZXNvdXJjZSBjaGFuZ2VzLlxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycpO1xuICAgIGNvbnN0IGNoYW5nZVNldDIgPSBhd2FpdCBnZXRMYXRlc3RDaGFuZ2VTZXQoKTtcbiAgICBleHBlY3QoY2hhbmdlU2V0Mi5TdGFja1N0YXR1cykudG9FcXVhbCgnVVBEQVRFX0NPTVBMRVRFJyk7XG5cbiAgICAvLyBEZXBsb3kgdGhlIHN0YWNrIGFnYWluIHdpdGggLS1mb3JjZVxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycsIHsgb3B0aW9uczogWyctLWZvcmNlJ10gfSk7XG4gICAgY29uc3QgY2hhbmdlU2V0MyA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICAgIGV4cGVjdChjaGFuZ2VTZXQzLkNoYW5nZVNldElkKS5ub3QudG9FcXVhbChjaGFuZ2VTZXQyLkNoYW5nZVNldElkKTtcblxuICAgIC8vIERlcGxveSB0aGUgc3RhY2sgYWdhaW4gd2l0aCB0YWdzLCBleHBlY3RlZCB0byBjcmVhdGUgYSBuZXcgY2hhbmdlc2V0XG4gICAgLy8gZXZlbiB0aG91Z2ggdGhlIHJlc291cmNlcyBkaWRuJ3QgY2hhbmdlLlxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycsIHsgb3B0aW9uczogWyctLXRhZ3MnLCAna2V5PXZhbHVlJ10gfSk7XG4gICAgY29uc3QgY2hhbmdlU2V0NCA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICAgIGV4cGVjdChjaGFuZ2VTZXQ0LkNoYW5nZVNldElkKS5ub3QudG9FcXVhbChjaGFuZ2VTZXQzLkNoYW5nZVNldElkKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdENoYW5nZVNldCgpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24uc2VuZChuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHsgU3RhY2tOYW1lOiBzdGFja0FybiB9KSk7XG4gICAgICBpZiAoIXJlc3BvbnNlLlN0YWNrcz8uWzBdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBnZXQgYSBDaGFuZ2VTZXQgYXQgYWxsJyk7XG4gICAgICB9XG4gICAgICBmaXh0dXJlLmxvZyhgRm91bmQgQ2hhbmdlIFNldCAke3Jlc3BvbnNlLlN0YWNrcz8uWzBdLkNoYW5nZVNldElkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLlN0YWNrcz8uWzBdO1xuICAgIH1cbiAgfSksXG4pO1xuIl19
|
package/tests/cli-integ-tests/deploy/cdk-deploy-with-any-change-approval-shows-diff.integtest.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const lib_1 = require("../../../lib");
|
|
4
|
-
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
5
4
|
(0, lib_1.integTest)('deploy with any-change approval shows diff', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
6
5
|
// Deploy with --require-approval=any-change and --yes to auto-confirm.
|
|
7
6
|
// The output should contain the stack diff so the user knows what they're approving.
|
|
@@ -15,4 +14,4 @@ jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-c
|
|
|
15
14
|
expect(output).toContain('Do you wish to deploy these changes');
|
|
16
15
|
expect(output).toContain('(auto-confirmed)');
|
|
17
16
|
}));
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS13aXRoLWFueS1jaGFuZ2UtYXBwcm92YWwtc2hvd3MtZGlmZi5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstZGVwbG95LXdpdGgtYW55LWNoYW5nZS1hcHByb3ZhbC1zaG93cy1kaWZmLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE2RDtBQUU3RCxJQUFBLGVBQVMsRUFDUCw0Q0FBNEMsRUFDNUMsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsdUVBQXVFO0lBQ3ZFLHFGQUFxRjtJQUNyRixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1FBQy9DLE9BQU8sRUFBRSxDQUFDLCtCQUErQixFQUFFLE9BQU8sQ0FBQztRQUNuRCxvQkFBb0IsRUFBRSxLQUFLO0tBQzVCLENBQUMsQ0FBQztJQUVILG9GQUFvRjtJQUNwRixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNoRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnZGVwbG95IHdpdGggYW55LWNoYW5nZSBhcHByb3ZhbCBzaG93cyBkaWZmJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRGVwbG95IHdpdGggLS1yZXF1aXJlLWFwcHJvdmFsPWFueS1jaGFuZ2UgYW5kIC0teWVzIHRvIGF1dG8tY29uZmlybS5cbiAgICAvLyBUaGUgb3V0cHV0IHNob3VsZCBjb250YWluIHRoZSBzdGFjayBkaWZmIHNvIHRoZSB1c2VyIGtub3dzIHdoYXQgdGhleSdyZSBhcHByb3ZpbmcuXG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMicsIHtcbiAgICAgIG9wdGlvbnM6IFsnLS1yZXF1aXJlLWFwcHJvdmFsPWFueS1jaGFuZ2UnLCAnLS15ZXMnXSxcbiAgICAgIG5ldmVyUmVxdWlyZUFwcHJvdmFsOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIFRoZSBkZXBsb3kgY29uZmlybWF0aW9uIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4gdGhlIGRpZmYgd2l0aCByZXNvdXJjZSBpbmZvcm1hdGlvblxuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignQVdTOjpTTlM6OlRvcGljJyk7XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdcIi0tcmVxdWlyZS1hcHByb3ZhbFwiIGlzIHNldCB0byBcXCdhbnktY2hhbmdlXFwnJyk7XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdEbyB5b3Ugd2lzaCB0byBkZXBsb3kgdGhlc2UgY2hhbmdlcycpO1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignKGF1dG8tY29uZmlybWVkKScpO1xuICB9KSxcbik7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
4
|
+
const lib_1 = require("../../../lib");
|
|
5
|
+
(0, lib_1.integTest)('deploy with change-set method uses change set for approval diff', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
6
|
+
let changeSetVerified = false;
|
|
7
|
+
const stackName = fixture.fullStackName('test-2');
|
|
8
|
+
const changeSetName = `${fixture.stackNamePrefix}-approval-diff-test`;
|
|
9
|
+
// Deploy with --require-approval=any-change without --yes.
|
|
10
|
+
// The CLI will create a change set for the approval diff, pause for confirmation,
|
|
11
|
+
// and then execute the same change set after the user confirms.
|
|
12
|
+
const output = await fixture.cdkDeploy('test-2', {
|
|
13
|
+
options: ['--require-approval=any-change', '--method=change-set', `--change-set-name=${changeSetName}`],
|
|
14
|
+
neverRequireApproval: false,
|
|
15
|
+
interact: [
|
|
16
|
+
{
|
|
17
|
+
prompt: /Do you wish to deploy these changes/,
|
|
18
|
+
input: 'y',
|
|
19
|
+
beforeInput: async () => {
|
|
20
|
+
// While the CLI is paused at the approval prompt, verify that
|
|
21
|
+
// the named change set has been created and is ready for execution.
|
|
22
|
+
const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.ListChangeSetsCommand({ StackName: stackName }));
|
|
23
|
+
const changeSets = response.Summaries ?? [];
|
|
24
|
+
const namedChangeSet = changeSets.find(cs => cs.ChangeSetName === changeSetName);
|
|
25
|
+
expect(namedChangeSet).toBeDefined();
|
|
26
|
+
expect(namedChangeSet?.Status).toEqual('CREATE_COMPLETE');
|
|
27
|
+
changeSetVerified = true;
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
modEnv: {
|
|
32
|
+
FORCE_COLOR: '0',
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
// The approval diff should contain resource information from the change set
|
|
36
|
+
expect(output).toContain('AWS::SNS::Topic');
|
|
37
|
+
expect(output).toContain('Do you wish to deploy these changes');
|
|
38
|
+
// Verify the beforeInput callback actually ran
|
|
39
|
+
expect(changeSetVerified).toBe(true);
|
|
40
|
+
// Verify the stack was actually deployed
|
|
41
|
+
const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({ StackName: fixture.fullStackName('test-2') }));
|
|
42
|
+
expect(response.Stacks?.[0].StackStatus).toEqual('CREATE_COMPLETE');
|
|
43
|
+
}));
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS13aXRoLWNoYW5nZS1zZXQtYXBwcm92YWwtZGlmZi5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstZGVwbG95LXdpdGgtY2hhbmdlLXNldC1hcHByb3ZhbC1kaWZmLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBFQUE4RjtBQUM5RixzQ0FBNkQ7QUFFN0QsSUFBQSxlQUFTLEVBQ1AsaUVBQWlFLEVBQ2pFLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzlCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxxQkFBcUIsQ0FBQztJQUV0RSwyREFBMkQ7SUFDM0Qsa0ZBQWtGO0lBQ2xGLGdFQUFnRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1FBQy9DLE9BQU8sRUFBRSxDQUFDLCtCQUErQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixhQUFhLEVBQUUsQ0FBQztRQUN2RyxvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLFFBQVEsRUFBRTtZQUNSO2dCQUNFLE1BQU0sRUFBRSxxQ0FBcUM7Z0JBQzdDLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDdEIsOERBQThEO29CQUM5RCxvRUFBb0U7b0JBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwRCxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQ3BELENBQUM7b0JBQ0YsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7b0JBQzVDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxDQUFDO29CQUNqRixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzFELGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDM0IsQ0FBQzthQUNGO1NBQ0Y7UUFDRCxNQUFNLEVBQUU7WUFDTixXQUFXLEVBQUUsR0FBRztTQUNqQjtLQUNGLENBQUMsQ0FBQztJQUVILDRFQUE0RTtJQUM1RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBRWhFLCtDQUErQztJQUMvQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMseUNBQXlDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwRCxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUMxRSxDQUFDO0lBQ0YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpYmVTdGFja3NDb21tYW5kLCBMaXN0Q2hhbmdlU2V0c0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdkZXBsb3kgd2l0aCBjaGFuZ2Utc2V0IG1ldGhvZCB1c2VzIGNoYW5nZSBzZXQgZm9yIGFwcHJvdmFsIGRpZmYnLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBsZXQgY2hhbmdlU2V0VmVyaWZpZWQgPSBmYWxzZTtcbiAgICBjb25zdCBzdGFja05hbWUgPSBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpO1xuICAgIGNvbnN0IGNoYW5nZVNldE5hbWUgPSBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tYXBwcm92YWwtZGlmZi10ZXN0YDtcblxuICAgIC8vIERlcGxveSB3aXRoIC0tcmVxdWlyZS1hcHByb3ZhbD1hbnktY2hhbmdlIHdpdGhvdXQgLS15ZXMuXG4gICAgLy8gVGhlIENMSSB3aWxsIGNyZWF0ZSBhIGNoYW5nZSBzZXQgZm9yIHRoZSBhcHByb3ZhbCBkaWZmLCBwYXVzZSBmb3IgY29uZmlybWF0aW9uLFxuICAgIC8vIGFuZCB0aGVuIGV4ZWN1dGUgdGhlIHNhbWUgY2hhbmdlIHNldCBhZnRlciB0aGUgdXNlciBjb25maXJtcy5cbiAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJywge1xuICAgICAgb3B0aW9uczogWyctLXJlcXVpcmUtYXBwcm92YWw9YW55LWNoYW5nZScsICctLW1ldGhvZD1jaGFuZ2Utc2V0JywgYC0tY2hhbmdlLXNldC1uYW1lPSR7Y2hhbmdlU2V0TmFtZX1gXSxcbiAgICAgIG5ldmVyUmVxdWlyZUFwcHJvdmFsOiBmYWxzZSxcbiAgICAgIGludGVyYWN0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9tcHQ6IC9EbyB5b3Ugd2lzaCB0byBkZXBsb3kgdGhlc2UgY2hhbmdlcy8sXG4gICAgICAgICAgaW5wdXQ6ICd5JyxcbiAgICAgICAgICBiZWZvcmVJbnB1dDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gV2hpbGUgdGhlIENMSSBpcyBwYXVzZWQgYXQgdGhlIGFwcHJvdmFsIHByb21wdCwgdmVyaWZ5IHRoYXRcbiAgICAgICAgICAgIC8vIHRoZSBuYW1lZCBjaGFuZ2Ugc2V0IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGlzIHJlYWR5IGZvciBleGVjdXRpb24uXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICAgICAgICAgIG5ldyBMaXN0Q2hhbmdlU2V0c0NvbW1hbmQoeyBTdGFja05hbWU6IHN0YWNrTmFtZSB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VTZXRzID0gcmVzcG9uc2UuU3VtbWFyaWVzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgbmFtZWRDaGFuZ2VTZXQgPSBjaGFuZ2VTZXRzLmZpbmQoY3MgPT4gY3MuQ2hhbmdlU2V0TmFtZSA9PT0gY2hhbmdlU2V0TmFtZSk7XG4gICAgICAgICAgICBleHBlY3QobmFtZWRDaGFuZ2VTZXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBleHBlY3QobmFtZWRDaGFuZ2VTZXQ/LlN0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gICAgICAgICAgICBjaGFuZ2VTZXRWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgRk9SQ0VfQ09MT1I6ICcwJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgYXBwcm92YWwgZGlmZiBzaG91bGQgY29udGFpbiByZXNvdXJjZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjaGFuZ2Ugc2V0XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdBV1M6OlNOUzo6VG9waWMnKTtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ0RvIHlvdSB3aXNoIHRvIGRlcGxveSB0aGVzZSBjaGFuZ2VzJyk7XG5cbiAgICAvLyBWZXJpZnkgdGhlIGJlZm9yZUlucHV0IGNhbGxiYWNrIGFjdHVhbGx5IHJhblxuICAgIGV4cGVjdChjaGFuZ2VTZXRWZXJpZmllZCkudG9CZSh0cnVlKTtcblxuICAgIC8vIFZlcmlmeSB0aGUgc3RhY2sgd2FzIGFjdHVhbGx5IGRlcGxveWVkXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgbmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKSB9KSxcbiAgICApO1xuICAgIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gIH0pLFxuKTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const client_iam_1 = require("@aws-sdk/client-iam");
|
|
4
|
+
const lib_1 = require("../../../lib");
|
|
5
|
+
(0, lib_1.integTest)('import-existing-resources error message includes construct paths', (0, lib_1.withSpecificFixture)('import-existing-resources-app', async (fixture) => {
|
|
6
|
+
const roleName = `${fixture.stackNamePrefix}-import-role`;
|
|
7
|
+
try {
|
|
8
|
+
// Step 1: Deploy with RETAIN so the role exists and can survive stack deletion
|
|
9
|
+
await fixture.cdkDeploy('import-existing', {
|
|
10
|
+
modEnv: { REMOVAL_POLICY: 'retain' },
|
|
11
|
+
});
|
|
12
|
+
// Step 2: Delete the stack — the role survives because of RETAIN
|
|
13
|
+
await fixture.cdkDestroy('import-existing', {
|
|
14
|
+
modEnv: { REMOVAL_POLICY: 'retain' },
|
|
15
|
+
});
|
|
16
|
+
// Step 3: Re-deploy with DESTROY (no retain) and --import-existing-resources
|
|
17
|
+
// This should fail because CloudFormation requires DeletionPolicy=Retain for import
|
|
18
|
+
const stdErr = await fixture.cdkDeploy('import-existing', {
|
|
19
|
+
modEnv: { REMOVAL_POLICY: 'destroy' },
|
|
20
|
+
options: ['--import-existing-resources'],
|
|
21
|
+
allowErrExit: true,
|
|
22
|
+
});
|
|
23
|
+
expect(stdErr).toContain('Import of existing resources failed');
|
|
24
|
+
expect(stdErr).toContain('MyRole');
|
|
25
|
+
expect(stdErr).toContain('RemovalPolicy.RETAIN');
|
|
26
|
+
expect(stdErr).toContain('https://docs.aws.amazon.com/cdk/v2/guide/resources.html#resources-removal');
|
|
27
|
+
// Step 4: Deploy with RETAIN and --import-existing-resources — this should succeed
|
|
28
|
+
await fixture.cdkDeploy('import-existing', {
|
|
29
|
+
modEnv: { REMOVAL_POLICY: 'retain' },
|
|
30
|
+
options: ['--import-existing-resources'],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
// Clean up: delete the role if it was retained
|
|
35
|
+
try {
|
|
36
|
+
await fixture.aws.iam.send(new client_iam_1.DeleteRoleCommand({ RoleName: roleName }));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Role may already be deleted
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMtZXJyb3ItbWVzc2FnZS1pbmNsdWRlcy1jb25zdHJ1Y3QtcGF0aHMuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMtZXJyb3ItbWVzc2FnZS1pbmNsdWRlcy1jb25zdHJ1Y3QtcGF0aHMuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0RBQXdEO0FBQ3hELHNDQUE4RDtBQUU5RCxJQUFBLGVBQVMsRUFDUCxrRUFBa0UsRUFDbEUsSUFBQSx5QkFBbUIsRUFBQywrQkFBK0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDckUsTUFBTSxRQUFRLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxjQUFjLENBQUM7SUFFMUQsSUFBSSxDQUFDO1FBQ0gsK0VBQStFO1FBQy9FLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QyxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztRQUVILGlFQUFpRTtRQUNqRSxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7WUFDMUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRTtTQUNyQyxDQUFDLENBQUM7UUFFSCw2RUFBNkU7UUFDN0Usb0ZBQW9GO1FBQ3BGLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN4RCxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO1lBQ3hDLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7UUFFdEcsbUZBQW1GO1FBQ25GLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QyxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO1lBQ3BDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7WUFBUyxDQUFDO1FBQ1QsK0NBQStDO1FBQy9DLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksOEJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCw4QkFBOEI7UUFDaEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVsZXRlUm9sZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtaWFtJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aFNwZWNpZmljRml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmludGVnVGVzdChcbiAgJ2ltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyBjb25zdHJ1Y3QgcGF0aHMnLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdpbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzLWFwcCcsIGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3Qgcm9sZU5hbWUgPSBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0taW1wb3J0LXJvbGVgO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFN0ZXAgMTogRGVwbG95IHdpdGggUkVUQUlOIHNvIHRoZSByb2xlIGV4aXN0cyBhbmQgY2FuIHN1cnZpdmUgc3RhY2sgZGVsZXRpb25cbiAgICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ3JldGFpbicgfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTdGVwIDI6IERlbGV0ZSB0aGUgc3RhY2sg4oCUIHRoZSByb2xlIHN1cnZpdmVzIGJlY2F1c2Ugb2YgUkVUQUlOXG4gICAgICBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ2ltcG9ydC1leGlzdGluZycsIHtcbiAgICAgICAgbW9kRW52OiB7IFJFTU9WQUxfUE9MSUNZOiAncmV0YWluJyB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0ZXAgMzogUmUtZGVwbG95IHdpdGggREVTVFJPWSAobm8gcmV0YWluKSBhbmQgLS1pbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzXG4gICAgICAvLyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2UgQ2xvdWRGb3JtYXRpb24gcmVxdWlyZXMgRGVsZXRpb25Qb2xpY3k9UmV0YWluIGZvciBpbXBvcnRcbiAgICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ2Rlc3Ryb3knIH0sXG4gICAgICAgIG9wdGlvbnM6IFsnLS1pbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzJ10sXG4gICAgICAgIGFsbG93RXJyRXhpdDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ0ltcG9ydCBvZiBleGlzdGluZyByZXNvdXJjZXMgZmFpbGVkJyk7XG4gICAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ015Um9sZScpO1xuICAgICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdSZW1vdmFsUG9saWN5LlJFVEFJTicpO1xuICAgICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL3YyL2d1aWRlL3Jlc291cmNlcy5odG1sI3Jlc291cmNlcy1yZW1vdmFsJyk7XG5cbiAgICAgIC8vIFN0ZXAgNDogRGVwbG95IHdpdGggUkVUQUlOIGFuZCAtLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMg4oCUIHRoaXMgc2hvdWxkIHN1Y2NlZWRcbiAgICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ3JldGFpbicgfSxcbiAgICAgICAgb3B0aW9uczogWyctLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMnXSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDbGVhbiB1cDogZGVsZXRlIHRoZSByb2xlIGlmIGl0IHdhcyByZXRhaW5lZFxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZml4dHVyZS5hd3MuaWFtLnNlbmQobmV3IERlbGV0ZVJvbGVDb21tYW5kKHsgUm9sZU5hbWU6IHJvbGVOYW1lIH0pKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBSb2xlIG1heSBhbHJlYWR5IGJlIGRlbGV0ZWRcbiAgICAgIH1cbiAgICB9XG4gIH0pLFxuKTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
4
|
+
const lib_1 = require("../../../lib");
|
|
5
|
+
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
6
|
+
(0, lib_1.integTest)('hotswap deployment supports CloudControl-based resources with attribute resolution', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
7
|
+
// GIVEN
|
|
8
|
+
const stackName = 'cc-hotswap';
|
|
9
|
+
await fixture.cdkDeploy(stackName, {
|
|
10
|
+
captureStderr: false,
|
|
11
|
+
modEnv: {
|
|
12
|
+
DYNAMIC_CC_PROPERTY_VALUE: 'original value',
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
// WHEN
|
|
16
|
+
const deployOutput = await fixture.cdkDeploy(stackName, {
|
|
17
|
+
options: ['--hotswap'],
|
|
18
|
+
captureStderr: true,
|
|
19
|
+
onlyStderr: true,
|
|
20
|
+
modEnv: {
|
|
21
|
+
DYNAMIC_CC_PROPERTY_VALUE: 'new value',
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({
|
|
25
|
+
StackName: fixture.fullStackName(stackName),
|
|
26
|
+
}));
|
|
27
|
+
const queueUrl = response.Stacks?.[0].Outputs?.find((output) => output.OutputKey === 'QueueUrl')?.OutputValue;
|
|
28
|
+
const agentName = response.Stacks?.[0].Outputs?.find((output) => output.OutputKey === 'AgentName')?.OutputValue;
|
|
29
|
+
const ruleName = response.Stacks?.[0].Outputs?.find((output) => output.OutputKey === 'RuleName')?.OutputValue;
|
|
30
|
+
// THEN
|
|
31
|
+
// The deployment should not trigger a full deployment, thus the stack's status must remain
|
|
32
|
+
// "CREATE_COMPLETE"
|
|
33
|
+
expect(response.Stacks?.[0].StackStatus).toEqual('CREATE_COMPLETE');
|
|
34
|
+
// Verify hotswap was used
|
|
35
|
+
expect(deployOutput).toMatch(/hotswapped!/);
|
|
36
|
+
// Verify all three CCAPI-based resources were hotswapped
|
|
37
|
+
expect(queueUrl).toBeDefined();
|
|
38
|
+
expect(agentName).toBeDefined();
|
|
39
|
+
expect(ruleName).toBeDefined();
|
|
40
|
+
}));
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWhvdHN3YXAtZGVwbG95bWVudC1zdXBwb3J0cy1jbG91ZGNvbnRyb2wtYmFzZWQtcmVzb3VyY2VzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1ob3Rzd2FwLWRlcGxveW1lbnQtc3VwcG9ydHMtY2xvdWRjb250cm9sLWJhc2VkLXJlc291cmNlcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwRUFBdUU7QUFDdkUsc0NBQTZEO0FBRTdELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxJQUFBLGVBQVMsRUFDUCxvRkFBb0YsRUFDcEYsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsUUFBUTtJQUNSLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztJQUMvQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1FBQ2pDLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLE1BQU0sRUFBRTtZQUNOLHlCQUF5QixFQUFFLGdCQUFnQjtTQUM1QztLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1FBQ3RELE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixNQUFNLEVBQUU7WUFDTix5QkFBeUIsRUFBRSxXQUFXO1NBQ3ZDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3BELElBQUksNkNBQXFCLENBQUM7UUFDeEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0tBQzVDLENBQUMsQ0FDSCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLEVBQUUsV0FBVyxDQUFDO0lBQzlHLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQztJQUNoSCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUM7SUFFOUcsT0FBTztJQUVQLDJGQUEyRjtJQUMzRixvQkFBb0I7SUFDcEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRSwwQkFBMEI7SUFDMUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1Qyx5REFBeUQ7SUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmplc3Quc2V0VGltZW91dCgyICogNjAgKiA2MF8wMDApOyAvLyBJbmNsdWRlcyB0aGUgdGltZSB0byBhY3F1aXJlIGxvY2tzLCB3b3JzdC1jYXNlIHNpbmdsZS10aHJlYWRlZCBydW50aW1lXG5cbmludGVnVGVzdChcbiAgJ2hvdHN3YXAgZGVwbG95bWVudCBzdXBwb3J0cyBDbG91ZENvbnRyb2wtYmFzZWQgcmVzb3VyY2VzIHdpdGggYXR0cmlidXRlIHJlc29sdXRpb24nLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrTmFtZSA9ICdjYy1ob3Rzd2FwJztcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveShzdGFja05hbWUsIHtcbiAgICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIERZTkFNSUNfQ0NfUFJPUEVSVFlfVkFMVUU6ICdvcmlnaW5hbCB2YWx1ZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGRlcGxveU91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KHN0YWNrTmFtZSwge1xuICAgICAgb3B0aW9uczogWyctLWhvdHN3YXAnXSxcbiAgICAgIGNhcHR1cmVTdGRlcnI6IHRydWUsXG4gICAgICBvbmx5U3RkZXJyOiB0cnVlLFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIERZTkFNSUNfQ0NfUFJPUEVSVFlfVkFMVUU6ICduZXcgdmFsdWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgIG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoe1xuICAgICAgICBTdGFja05hbWU6IGZpeHR1cmUuZnVsbFN0YWNrTmFtZShzdGFja05hbWUpLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IHF1ZXVlVXJsID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uT3V0cHV0cz8uZmluZCgob3V0cHV0KSA9PiBvdXRwdXQuT3V0cHV0S2V5ID09PSAnUXVldWVVcmwnKT8uT3V0cHV0VmFsdWU7XG4gICAgY29uc3QgYWdlbnROYW1lID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uT3V0cHV0cz8uZmluZCgob3V0cHV0KSA9PiBvdXRwdXQuT3V0cHV0S2V5ID09PSAnQWdlbnROYW1lJyk/Lk91dHB1dFZhbHVlO1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uT3V0cHV0cz8uZmluZCgob3V0cHV0KSA9PiBvdXRwdXQuT3V0cHV0S2V5ID09PSAnUnVsZU5hbWUnKT8uT3V0cHV0VmFsdWU7XG5cbiAgICAvLyBUSEVOXG5cbiAgICAvLyBUaGUgZGVwbG95bWVudCBzaG91bGQgbm90IHRyaWdnZXIgYSBmdWxsIGRlcGxveW1lbnQsIHRodXMgdGhlIHN0YWNrJ3Mgc3RhdHVzIG11c3QgcmVtYWluXG4gICAgLy8gXCJDUkVBVEVfQ09NUExFVEVcIlxuICAgIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gICAgLy8gVmVyaWZ5IGhvdHN3YXAgd2FzIHVzZWRcbiAgICBleHBlY3QoZGVwbG95T3V0cHV0KS50b01hdGNoKC9ob3Rzd2FwcGVkIS8pO1xuICAgIC8vIFZlcmlmeSBhbGwgdGhyZWUgQ0NBUEktYmFzZWQgcmVzb3VyY2VzIHdlcmUgaG90c3dhcHBlZFxuICAgIGV4cGVjdChxdWV1ZVVybCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoYWdlbnROYW1lKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChydWxlTmFtZSkudG9CZURlZmluZWQoKTtcbiAgfSksXG4pO1xuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const lib_1 = require("../../../lib");
|
|
4
|
+
const regions_1 = require("../../../lib/regions");
|
|
4
5
|
(0, lib_1.integTest)('cdk refactor - dry run - detects refactoring changes and prints the result', (0, lib_1.withSpecificFixture)('refactoring', async (fixture) => {
|
|
5
6
|
// First, deploy the stacks
|
|
6
7
|
await fixture.cdkDeploy('bucket-stack');
|
|
@@ -21,8 +22,8 @@ const lib_1 = require("../../../lib");
|
|
|
21
22
|
});
|
|
22
23
|
expect(stdErr).toContain('The following resources were moved or renamed:');
|
|
23
24
|
expect(removeColor(stdErr)).toMatch(/│ AWS::SQS::Queue │ .*\/OldName\/Resource │ .*\/NewName\/Resource │/);
|
|
24
|
-
}));
|
|
25
|
+
}, { aws: { regions: regions_1.STACK_REFACTORING_REGIONS } }));
|
|
25
26
|
function removeColor(str) {
|
|
26
27
|
return str.replace(/\x1B[[(?);]{0,2}(;?\d)*./g, '');
|
|
27
28
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZGV0ZWN0LWNoYW5nZXMuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZGV0ZWN0LWNoYW5nZXMuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQThEO0FBQzlELGtEQUFpRTtBQUVqRSxJQUFBLGVBQVMsRUFDUCw0RUFBNEUsRUFDNUUsSUFBQSx5QkFBbUIsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25ELDJCQUEyQjtJQUMzQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtRQUMvQixNQUFNLEVBQUU7WUFDTixzQkFBc0IsRUFBRSxTQUFTO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsc0RBQXNEO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDN0MsWUFBWSxFQUFFLElBQUk7UUFDbEIscURBQXFEO1FBQ3JELDhDQUE4QztRQUM5QyxNQUFNLEVBQUU7WUFDTixzQkFBc0IsRUFBRSxTQUFTO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMscUVBQXFFLENBQUMsQ0FBQztBQUM3RyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUNBQXlCLEVBQUUsRUFBRSxDQUFDLENBQ3BELENBQUM7QUFFRixTQUFTLFdBQVcsQ0FBQyxHQUFXO0lBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoU3BlY2lmaWNGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCB7IFNUQUNLX1JFRkFDVE9SSU5HX1JFR0lPTlMgfSBmcm9tICcuLi8uLi8uLi9saWIvcmVnaW9ucyc7XG5cbmludGVnVGVzdChcbiAgJ2NkayByZWZhY3RvciAtIGRyeSBydW4gLSBkZXRlY3RzIHJlZmFjdG9yaW5nIGNoYW5nZXMgYW5kIHByaW50cyB0aGUgcmVzdWx0JyxcbiAgd2l0aFNwZWNpZmljRml4dHVyZSgncmVmYWN0b3JpbmcnLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIEZpcnN0LCBkZXBsb3kgdGhlIHN0YWNrc1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdidWNrZXQtc3RhY2snKTtcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnYmFzaWMnLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQkFTSUNfUVVFVUVfTE9HSUNBTF9JRDogJ09sZE5hbWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFRoZW4gc2VlIGlmIHRoZSByZWZhY3RvcmluZyB0b29sIGRldGVjdHMgdGhlIGNoYW5nZVxuICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrUmVmYWN0b3Ioe1xuICAgICAgb3B0aW9uczogWyctLWRyeS1ydW4nLCAnLS11bnN0YWJsZT1yZWZhY3RvciddLFxuICAgICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICAgICAgLy8gTWFraW5nIHN1cmUgdGhlIHN5bnRoZXNpemVkIHN0YWNrIGhhcyBhIHF1ZXVlIHdpdGhcbiAgICAgIC8vIHRoZSBuZXcgbmFtZSBzbyB0aGF0IGEgcmVmYWN0b3IgaXMgZGV0ZWN0ZWRcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCQVNJQ19RVUVVRV9MT0dJQ0FMX0lEOiAnTmV3TmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdUaGUgZm9sbG93aW5nIHJlc291cmNlcyB3ZXJlIG1vdmVkIG9yIHJlbmFtZWQ6Jyk7XG4gICAgZXhwZWN0KHJlbW92ZUNvbG9yKHN0ZEVycikpLnRvTWF0Y2goL+KUgiBBV1M6OlNRUzo6UXVldWUg4pSCIC4qXFwvT2xkTmFtZVxcL1Jlc291cmNlIOKUgiAuKlxcL05ld05hbWVcXC9SZXNvdXJjZSDilIIvKTtcbiAgfSwgeyBhd3M6IHsgcmVnaW9uczogU1RBQ0tfUkVGQUNUT1JJTkdfUkVHSU9OUyB9IH0pLFxuKTtcblxuZnVuY3Rpb24gcmVtb3ZlQ29sb3Ioc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xceDFCW1soPyk7XXswLDJ9KDs/XFxkKSouL2csICcnKTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const lib_1 = require("../../../lib");
|
|
4
|
+
const regions_1 = require("../../../lib/regions");
|
|
4
5
|
(0, lib_1.integTest)('cdk refactor - dry run - filters stacks by pattern', (0, lib_1.withSpecificFixture)('refactoring-multiple-envs', async (fixture) => {
|
|
5
6
|
// First, deploy the stacks
|
|
6
7
|
await fixture.cdkDeploy('gamma-stack', {
|
|
@@ -26,5 +27,5 @@ const lib_1 = require("../../../lib");
|
|
|
26
27
|
});
|
|
27
28
|
const numberOfEnvironments = (stdErr.match(/Resource Type/g) || []).length;
|
|
28
29
|
expect(numberOfEnvironments).toEqual(1);
|
|
29
|
-
}));
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
}, { aws: { regions: regions_1.STACK_REFACTORING_REGIONS } }));
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZmlsdGVyLWJ5LXBhdHRlcm5zLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1yZWZhY3Rvci1kcnktcnVuLWZpbHRlci1ieS1wYXR0ZXJucy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBOEQ7QUFDOUQsa0RBQWlFO0FBRWpFLElBQUEsZUFBUyxFQUNQLG9EQUFvRCxFQUNwRCxJQUFBLHlCQUFtQixFQUFDLDJCQUEyQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNqRSwyQkFBMkI7SUFDM0IsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtRQUNyQyxNQUFNLEVBQUU7WUFDTixTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUU7UUFDcEMsTUFBTSxFQUFFO1lBQ04sU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDLENBQUM7SUFFSCxzREFBc0Q7SUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDOUQsWUFBWSxFQUFFLElBQUk7UUFDbEIsYUFBYSxFQUFFLElBQUk7UUFDbkIscURBQXFEO1FBQ3JELDhDQUE4QztRQUM5QyxNQUFNLEVBQUU7WUFDTixTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUNBQXlCLEVBQUUsRUFBRSxDQUFDLENBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuaW1wb3J0IHsgU1RBQ0tfUkVGQUNUT1JJTkdfUkVHSU9OUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9yZWdpb25zJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIHJlZmFjdG9yIC0gZHJ5IHJ1biAtIGZpbHRlcnMgc3RhY2tzIGJ5IHBhdHRlcm4nLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdyZWZhY3RvcmluZy1tdWx0aXBsZS1lbnZzJywgYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAvLyBGaXJzdCwgZGVwbG95IHRoZSBzdGFja3NcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZ2FtbWEtc3RhY2snLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQlVDS0VUX0lEOiAnT2xkTmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdwcm9kLXN0YWNrJywge1xuICAgICAgbW9kRW52OiB7XG4gICAgICAgIEJVQ0tFVF9JRDogJ09sZE5hbWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFRoZW4gc2VlIGlmIHRoZSByZWZhY3RvcmluZyB0b29sIGRldGVjdHMgdGhlIGNoYW5nZVxuICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrUmVmYWN0b3Ioe1xuICAgICAgb3B0aW9uczogWycqLWdhbW1hLXN0YWNrJywgJy0tZHJ5LXJ1bicsICctLXVuc3RhYmxlPXJlZmFjdG9yJ10sXG4gICAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gICAgICBjYXB0dXJlU3RkZXJyOiB0cnVlLFxuICAgICAgLy8gTWFraW5nIHN1cmUgdGhlIHN5bnRoZXNpemVkIHN0YWNrIGhhcyBhIHF1ZXVlIHdpdGhcbiAgICAgIC8vIHRoZSBuZXcgbmFtZSBzbyB0aGF0IGEgcmVmYWN0b3IgaXMgZGV0ZWN0ZWRcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCVUNLRVRfSUQ6ICdOZXdOYW1lJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBudW1iZXJPZkVudmlyb25tZW50cyA9IChzdGRFcnIubWF0Y2goL1Jlc291cmNlIFR5cGUvZykgfHwgW10pLmxlbmd0aDtcbiAgICBleHBlY3QobnVtYmVyT2ZFbnZpcm9ubWVudHMpLnRvRXF1YWwoMSk7XG4gIH0sIHsgYXdzOiB7IHJlZ2lvbnM6IFNUQUNLX1JFRkFDVE9SSU5HX1JFR0lPTlMgfSB9KSxcbik7XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const lib_1 = require("../../../lib");
|
|
4
|
+
const regions_1 = require("../../../lib/regions");
|
|
4
5
|
(0, lib_1.integTest)('cdk refactor - dry-run - no refactoring changes detected', (0, lib_1.withSpecificFixture)('refactoring', async (fixture) => {
|
|
5
6
|
const modEnv = {
|
|
6
7
|
BASIC_QUEUE_LOGICAL_ID: 'OldName',
|
|
@@ -15,5 +16,5 @@ const lib_1 = require("../../../lib");
|
|
|
15
16
|
modEnv,
|
|
16
17
|
});
|
|
17
18
|
expect(stdErr).toContain('Nothing to refactor');
|
|
18
|
-
}));
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
}, { aws: { regions: regions_1.STACK_REFACTORING_REGIONS } }));
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tbm8tY2hhbmdlcy5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstcmVmYWN0b3ItZHJ5LXJ1bi1uby1jaGFuZ2VzLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE4RDtBQUM5RCxrREFBaUU7QUFFakUsSUFBQSxlQUFTLEVBQ1AsMERBQTBELEVBQzFELElBQUEseUJBQW1CLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuRCxNQUFNLE1BQU0sR0FBRztRQUNiLHNCQUFzQixFQUFFLFNBQVM7S0FDbEMsQ0FBQztJQUVGLDJCQUEyQjtJQUMzQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFN0Msc0RBQXNEO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDN0MsWUFBWSxFQUFFLElBQUk7UUFDbEIsTUFBTTtLQUNQLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNsRCxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUNBQXlCLEVBQUUsRUFBRSxDQUFDLENBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuaW1wb3J0IHsgU1RBQ0tfUkVGQUNUT1JJTkdfUkVHSU9OUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9yZWdpb25zJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIHJlZmFjdG9yIC0gZHJ5LXJ1biAtIG5vIHJlZmFjdG9yaW5nIGNoYW5nZXMgZGV0ZWN0ZWQnLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdyZWZhY3RvcmluZycsIGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3QgbW9kRW52ID0ge1xuICAgICAgQkFTSUNfUVVFVUVfTE9HSUNBTF9JRDogJ09sZE5hbWUnLFxuICAgIH07XG5cbiAgICAvLyBGaXJzdCwgZGVwbG95IHRoZSBzdGFja3NcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnYnVja2V0LXN0YWNrJyk7XG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2Jhc2ljJywgeyBtb2RFbnYgfSk7XG5cbiAgICAvLyBUaGVuIHNlZSBpZiB0aGUgcmVmYWN0b3JpbmcgdG9vbCBkZXRlY3RzIHRoZSBjaGFuZ2VcbiAgICBjb25zdCBzdGRFcnIgPSBhd2FpdCBmaXh0dXJlLmNka1JlZmFjdG9yKHtcbiAgICAgIG9wdGlvbnM6IFsnLS1kcnktcnVuJywgJy0tdW5zdGFibGU9cmVmYWN0b3InXSxcbiAgICAgIGFsbG93RXJyRXhpdDogdHJ1ZSxcbiAgICAgIG1vZEVudixcbiAgICB9KTtcblxuICAgIGV4cGVjdChzdGRFcnIpLnRvQ29udGFpbignTm90aGluZyB0byByZWZhY3RvcicpO1xuICB9LCB7IGF3czogeyByZWdpb25zOiBTVEFDS19SRUZBQ1RPUklOR19SRUdJT05TIH0gfSksXG4pO1xuIl19
|