Skip to content

Commit c259153

Browse files
committed
add minimal L2 interface for inspector assessment template and fromCfnAssessment template method
1 parent e220bc8 commit c259153

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Construct } from 'constructs';
2+
import { CfnAssessmentTemplate } from './inspector.generated';
3+
import { IResource, Resource } from '../../core';
4+
5+
/**
6+
* Interface for an Inspector Assessment Template
7+
*/
8+
export interface IAssessmentTemplate extends IResource {
9+
/**
10+
* The Amazon Resource Name (ARN) of the assessment template.
11+
* @attribute
12+
*/
13+
readonly assessmentTemplateArn: string;
14+
}
15+
16+
/**
17+
* An Amazon Inspector assessment template.
18+
* TODO: This class should implement IAssessmentTemplate when writing the L2 construct
19+
*/
20+
export class AssessmentTemplate extends Resource {
21+
/**
22+
* Creates an AssessmentTemplate from an existing CfnAssessmentTemplate.
23+
*
24+
* This method is provided to bridge the gap with L2 constructs since no L2 constructs
25+
* exist for Inspector resources yet. It allows working with CfnAssessmentTemplate (L1)
26+
* resources through the IAssessmentTemplate interface.
27+
*/
28+
public static fromCfnAssessmentTemplate(scope: Construct, id: string, template: CfnAssessmentTemplate): IAssessmentTemplate {
29+
return new class extends Resource implements IAssessmentTemplate {
30+
public readonly assessmentTemplateArn: string;
31+
constructor() {
32+
super(scope, id);
33+
this.assessmentTemplateArn = template.attrArn;
34+
}
35+
}();
36+
}
37+
}

Diff for: packages/aws-cdk-lib/aws-inspector/lib/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export * from './inspector.generated';
2+
export * from './assessment-template';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { App, Stack } from '../../core';
2+
import { AssessmentTemplate, CfnAssessmentTarget, CfnAssessmentTemplate, IAssessmentTemplate } from '..';
3+
4+
describe('AssessmentTemplate', () => {
5+
let app: App;
6+
let stack: Stack;
7+
let assessmentTarget: CfnAssessmentTarget;
8+
9+
beforeEach(() => {
10+
app = new App();
11+
stack = new Stack(app, 'Stack');
12+
assessmentTarget = new CfnAssessmentTarget(stack, 'AssessmentTarget', {
13+
assessmentTargetName: 'MyAssessmentTarget',
14+
});
15+
});
16+
17+
describe('fromCfnAssessmentTemplate', () => {
18+
test('creates an IAssessmentTemplate from a CfnAssessmentTemplate', () => {
19+
// GIVEN
20+
const cfnAssessmentTemplate = new CfnAssessmentTemplate(stack, 'MyCfnAssessmentTemplate', {
21+
assessmentTargetArn: assessmentTarget.attrArn,
22+
durationInSeconds: 3600,
23+
// https://docs.aws.amazon.com/inspector/v1/userguide/inspector_rules-arns.html#us-east-1
24+
rulesPackageArns: ['arn:aws:inspector:us-east-1:316112463485:rulespackage/0-gEjTy7T7'],
25+
});
26+
27+
// WHEN
28+
const assessmentTemplate = AssessmentTemplate.fromCfnAssessmentTemplate(stack, 'MyAssessmentTemplate', cfnAssessmentTemplate);
29+
30+
// THEN
31+
expect(assessmentTemplate.assessmentTemplateArn).toBe(cfnAssessmentTemplate.attrArn);
32+
});
33+
34+
test('can be used where IAssessmentTemplate is expected', () => {
35+
// GIVEN
36+
const cfnAssessmentTemplate = new CfnAssessmentTemplate(stack, 'MyCfnAssessmentTemplate', {
37+
assessmentTargetArn: 'arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX',
38+
assessmentTemplateName: 'MyTemplate',
39+
durationInSeconds: 3600,
40+
rulesPackageArns: ['arn:aws:inspector:us-east-1:316112463485:rulespackage/0-gEjTy7T7'],
41+
});
42+
43+
// WHEN
44+
const assessmentTemplate = AssessmentTemplate.fromCfnAssessmentTemplate(stack, 'ImportedTemplate', cfnAssessmentTemplate);
45+
46+
// THEN - this function accepts an IAssessmentTemplate
47+
function acceptsIAssessmentTemplate(template: IAssessmentTemplate) {
48+
return template.assessmentTemplateArn;
49+
}
50+
51+
expect(acceptsIAssessmentTemplate(assessmentTemplate)).toBe(cfnAssessmentTemplate.attrArn);
52+
});
53+
});
54+
});

0 commit comments

Comments
 (0)