Skip to content

Commit

Permalink
add minimal L2 interface for inspector assessment template and fromCf…
Browse files Browse the repository at this point in the history
…nAssessment template method
  • Loading branch information
gracelu0 committed Feb 28, 2025
1 parent e220bc8 commit c259153
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 0 deletions.
37 changes: 37 additions & 0 deletions packages/aws-cdk-lib/aws-inspector/lib/assessment-template.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { Construct } from 'constructs';
import { CfnAssessmentTemplate } from './inspector.generated';
import { IResource, Resource } from '../../core';

/**
* Interface for an Inspector Assessment Template
*/
export interface IAssessmentTemplate extends IResource {
/**
* The Amazon Resource Name (ARN) of the assessment template.
* @attribute
*/
readonly assessmentTemplateArn: string;
}

/**
* An Amazon Inspector assessment template.
* TODO: This class should implement IAssessmentTemplate when writing the L2 construct
*/
export class AssessmentTemplate extends Resource {
/**
* Creates an AssessmentTemplate from an existing CfnAssessmentTemplate.
*
* This method is provided to bridge the gap with L2 constructs since no L2 constructs
* exist for Inspector resources yet. It allows working with CfnAssessmentTemplate (L1)
* resources through the IAssessmentTemplate interface.
*/
public static fromCfnAssessmentTemplate(scope: Construct, id: string, template: CfnAssessmentTemplate): IAssessmentTemplate {
return new class extends Resource implements IAssessmentTemplate {
public readonly assessmentTemplateArn: string;
constructor() {
super(scope, id);
this.assessmentTemplateArn = template.attrArn;
}
}();
}
}
1 change: 1 addition & 0 deletions packages/aws-cdk-lib/aws-inspector/lib/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from './inspector.generated';
export * from './assessment-template';
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { App, Stack } from '../../core';
import { AssessmentTemplate, CfnAssessmentTarget, CfnAssessmentTemplate, IAssessmentTemplate } from '..';

describe('AssessmentTemplate', () => {
let app: App;
let stack: Stack;
let assessmentTarget: CfnAssessmentTarget;

beforeEach(() => {
app = new App();
stack = new Stack(app, 'Stack');
assessmentTarget = new CfnAssessmentTarget(stack, 'AssessmentTarget', {
assessmentTargetName: 'MyAssessmentTarget',
});
});

describe('fromCfnAssessmentTemplate', () => {
test('creates an IAssessmentTemplate from a CfnAssessmentTemplate', () => {
// GIVEN
const cfnAssessmentTemplate = new CfnAssessmentTemplate(stack, 'MyCfnAssessmentTemplate', {
assessmentTargetArn: assessmentTarget.attrArn,
durationInSeconds: 3600,
// https://docs.aws.amazon.com/inspector/v1/userguide/inspector_rules-arns.html#us-east-1
rulesPackageArns: ['arn:aws:inspector:us-east-1:316112463485:rulespackage/0-gEjTy7T7'],
});

// WHEN
const assessmentTemplate = AssessmentTemplate.fromCfnAssessmentTemplate(stack, 'MyAssessmentTemplate', cfnAssessmentTemplate);

// THEN
expect(assessmentTemplate.assessmentTemplateArn).toBe(cfnAssessmentTemplate.attrArn);
});

test('can be used where IAssessmentTemplate is expected', () => {
// GIVEN
const cfnAssessmentTemplate = new CfnAssessmentTemplate(stack, 'MyCfnAssessmentTemplate', {
assessmentTargetArn: 'arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX',
assessmentTemplateName: 'MyTemplate',
durationInSeconds: 3600,
rulesPackageArns: ['arn:aws:inspector:us-east-1:316112463485:rulespackage/0-gEjTy7T7'],
});

// WHEN
const assessmentTemplate = AssessmentTemplate.fromCfnAssessmentTemplate(stack, 'ImportedTemplate', cfnAssessmentTemplate);

// THEN - this function accepts an IAssessmentTemplate
function acceptsIAssessmentTemplate(template: IAssessmentTemplate) {
return template.assessmentTemplateArn;
}

expect(acceptsIAssessmentTemplate(assessmentTemplate)).toBe(cfnAssessmentTemplate.attrArn);
});
});
});

0 comments on commit c259153

Please sign in to comment.