Skip to content

Idea-Pool/aws-cdk-assert

Repository files navigation

IMPORTANT This tool is NOT an official tool made by AWS.

aws-cdk-assert

Downloads Version@npm Version@git CI Docs

This tool gives handy utilities to test AWS CDK Stack, with predefined test constructs for certain CDK constructs.

The tool currently contains the following test constructs:

Service Construct CloudFormation Type
ApiGateway ApiGatewayRestApi AWS::ApiGateway::RestApi
ApiGateway ApiGatewayAccount AWS::ApiGateway::Account
ApiGateway ApiGatewayDeployment AWS::ApiGateway::Deployment
ApiGateway ApiGatewayStage AWS::ApiGateway::Stage
ApiGateway ApiGatewayMethod AWS::ApiGateway::Method
ApiGateway ApiGatewayResource AWS::ApiGateway::Resource
ApiGateway ApiGatewayDomain AWS::ApiGateway::DomainName
ApiGateway ApiGatewayBasePathMapping AWS::ApiGateway::BasePathMapping
ApiGateway ApiGatewayApiKey AWS::ApiGateway::ApiKey
ApiGateway ApiGatewayUsagePlan AWS::ApiGateway::UsagePlan
ApiGateway ApiGatewayUsagePlanKey AWS::ApiGateway::UsagePlanKey
CloudFormation CloudFormationCustomResource AWS::CloudFormation::CustomResource
CloudFront CloudFrontDistribution AWS::CloudFront::Distribution
CloudFront CloudFrontFunction AWS::CloudFront::Function
CodeBuild CodeBuildSourceCredentials AWS::CodeBuild::SourceCredential
CodeBuild CodeBuildProject AWS::CodeBuild::Project
Custom CustomResource Custom::AWS
DynamoDB DynamoDBTable AWS::DynamoDB::Table
IAM IAMRole AWS::IAM::Role
IAM IAMPolicy AWS::IAM::Policy
Lambda LambdaFunction AWS::Lambda::Function
Lambda LambdaPermission AWS::Lambda::Permission
Logs LogGroup AWS::Logs::LogGroup
Route53 Route53HostedZone AWS::Route53::HostedZone
Route53 Route53RecordSet AWS::Route53::RecordSet
S3 S3Bucket AWS::S3::Bucket
S3 S3BucketPolicy AWS::S3::BucketPolicy
SecretsManager Secret AWS::SecretsManager::Secret
SSM SSMParameter AWS::SSM::Parameter
WAF v2 WafV2WebACL AWS::WAFv2::WebACL

Need a new construct?

Suggest one in the issues, with an example CloudFormation template or contribute implementing it in this tool.

Usage

// stack.test.ts
import * as cdk from 'aws-cdk-lib';
import * as MyStack from '../lib/mystack.ts';
import { AdvancedTemplate } from 'aws-cdk-assert';

describe('MyStack', () => {
  let template: AdvancedTemplate;

  beforeAll(() => {
    const app = new cdk.App();
    const stack = new MyStack.MyStack(app, 'MyStack', {
      // props
    });
    template = AdvancedTemplate.fromStack(stack);
  });

  test('should have S3 Bucket', () => {
    template.s3Bucket().withBucketName('MyBucket').exists();
  });
});

API

The main components/API the tool relies on:

  • AdvancedTemplate is a wrapper around Template, decorated with factory methods for the predefined constructs.
  • AdvancedMatcher is similar to Match, but with additional functions.
  • Resource (and RemovableResource) is the base construct to work with CloudFormation constructs. It allows to
    • construct the matcher properties, which will be used to find a construct in the template,
    • check if a construct exists or not,
    • check the count of a construct (not just based on type, but fully matching construct),
    • make assertions with extended information in case of failure,
    • etc.

For detailed documentation see the TypeDocs documentation.

About

This tool gives handy utilities to test AWS CDK Stack.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Contributors

Generated from szikszail/npm-package