From ae6f804582d583882d712859c69fb8c913372f42 Mon Sep 17 00:00:00 2001 From: Akash Askoolum Date: Tue, 9 Mar 2021 18:40:00 +0000 Subject: [PATCH] fix(parameters): add a default description to parameters (#310) * feat!: remove unused GuS3ObjectArnParameter parameter * chore: DRY out identity parameters by extending GuStringParameter * fix: add a description to GuGuardianEmailSenderParameter * fix: provide a default description for GuCertificateArnParameter and allow it to be overridden * fix!: don't allow type of GuInstanceTypeParameter to be overridden * fix: provide a default description for GuAmiParameter and let it be overridden --- src/constructs/core/parameters/acm.ts | 3 ++- src/constructs/core/parameters/ec2.test.ts | 3 +-- src/constructs/core/parameters/ec2.ts | 7 +++--- src/constructs/core/parameters/identity.ts | 8 +++---- src/constructs/core/parameters/s3.test.ts | 23 ------------------- src/constructs/core/parameters/s3.ts | 13 ----------- src/constructs/core/parameters/ses.ts | 1 + .../policies/__snapshots__/ses.test.ts.snap | 1 + 8 files changed, 12 insertions(+), 47 deletions(-) delete mode 100644 src/constructs/core/parameters/s3.test.ts diff --git a/src/constructs/core/parameters/acm.ts b/src/constructs/core/parameters/acm.ts index ca26f18354..5a3e0c6eb7 100644 --- a/src/constructs/core/parameters/acm.ts +++ b/src/constructs/core/parameters/acm.ts @@ -6,9 +6,10 @@ import { GuStringParameter } from "./base"; export class GuCertificateArnParameter extends GuStringParameter { constructor(scope: GuStack, id: string = "TLSCertificate", props?: GuNoTypeParameterProps) { super(scope, id, { - ...props, allowedPattern: RegexPattern.ACM_ARN, constraintDescription: "Must be an ACM ARN resource", + description: "The ARN of an ACM certificate for use on a load balancer", + ...props, }); } } diff --git a/src/constructs/core/parameters/ec2.test.ts b/src/constructs/core/parameters/ec2.test.ts index 1de7359cc7..4572336ffc 100644 --- a/src/constructs/core/parameters/ec2.test.ts +++ b/src/constructs/core/parameters/ec2.test.ts @@ -24,7 +24,6 @@ describe("The GuInstanceTypeParameter class", () => { const stack = simpleGuStackForTesting(); new GuInstanceTypeParameter(stack, "Parameter", { - type: "Number", description: "This is a test", default: 1, }); @@ -32,7 +31,7 @@ describe("The GuInstanceTypeParameter class", () => { const json = SynthUtils.toCloudFormation(stack) as SynthedStack; expect(json.Parameters.Parameter).toEqual({ - Type: "Number", + Type: "String", Description: "This is a test", Default: 1, }); diff --git a/src/constructs/core/parameters/ec2.ts b/src/constructs/core/parameters/ec2.ts index d415be8fc8..889c60aa98 100644 --- a/src/constructs/core/parameters/ec2.ts +++ b/src/constructs/core/parameters/ec2.ts @@ -1,9 +1,9 @@ import type { GuStack } from "../stack"; -import type { GuNoTypeParameterProps, GuParameterProps } from "./base"; +import type { GuNoTypeParameterProps } from "./base"; import { GuParameter } from "./base"; export class GuInstanceTypeParameter extends GuParameter { - constructor(scope: GuStack, id: string = "InstanceType", props: GuParameterProps = {}) { + constructor(scope: GuStack, id: string = "InstanceType", props?: GuNoTypeParameterProps) { super(scope, id, { type: "String", description: "EC2 Instance Type", @@ -16,8 +16,9 @@ export class GuInstanceTypeParameter extends GuParameter { export class GuAmiParameter extends GuParameter { constructor(scope: GuStack, id: string, props: GuNoTypeParameterProps) { super(scope, id, { - ...props, type: "AWS::EC2::Image::Id", + description: "Amazon Machine Image ID. Use this in conjunction with AMIgo to keep AMIs up to date.", + ...props, }); } } diff --git a/src/constructs/core/parameters/identity.ts b/src/constructs/core/parameters/identity.ts index bee7253fe3..3074055125 100644 --- a/src/constructs/core/parameters/identity.ts +++ b/src/constructs/core/parameters/identity.ts @@ -1,12 +1,11 @@ import { Stage, Stages } from "../../../constants"; import type { GuStack } from "../stack"; -import { GuParameter } from "./base"; +import { GuStringParameter } from "./base"; -export class GuStageParameter extends GuParameter { +export class GuStageParameter extends GuStringParameter { public static readonly defaultId = "Stage"; constructor(scope: GuStack, id: string = GuStageParameter.defaultId) { super(scope, id, { - type: "String", description: "Stage name", allowedValues: Stages, default: Stage.CODE, @@ -14,11 +13,10 @@ export class GuStageParameter extends GuParameter { } } -export class GuStackParameter extends GuParameter { +export class GuStackParameter extends GuStringParameter { public static readonly defaultId = "Stack"; constructor(scope: GuStack, id: string = GuStackParameter.defaultId) { super(scope, id, { - type: "String", description: "Name of this stack", default: "deploy", }); diff --git a/src/constructs/core/parameters/s3.test.ts b/src/constructs/core/parameters/s3.test.ts deleted file mode 100644 index eb31e84f00..0000000000 --- a/src/constructs/core/parameters/s3.test.ts +++ /dev/null @@ -1,23 +0,0 @@ -import "@aws-cdk/assert/jest"; -import { SynthUtils } from "@aws-cdk/assert/lib/synth-utils"; -import type { SynthedStack } from "../../../../test/utils"; -import { simpleGuStackForTesting } from "../../../../test/utils"; -import { GuS3ObjectArnParameter } from "./s3"; - -describe("The GuS3ObjectArnParameter class", () => { - it("should constrain input to a S3 ARN allowed pattern", () => { - const stack = simpleGuStackForTesting(); - - new GuS3ObjectArnParameter(stack, "Parameter", { description: "This is a test" }); - - const json = SynthUtils.toCloudFormation(stack) as SynthedStack; - - expect(json.Parameters.Parameter).toEqual({ - Type: "String", - Description: "This is a test", - AllowedPattern: "arn:aws:s3:::(?!^(\\d{1,3}\\.){3}\\d{1,3}$)(^[a-z0-9]([a-z0-9-]*(\\.[a-z0-9])?)*$(?