Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: PolicyStore field should be mandatory inside PolicyTemplate #23

Merged
merged 1 commit into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 30 additions & 30 deletions API.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ permit (
);`;
const template = new PolicyTemplate(scope, 'PolicyTemplate', {
statement: policyTemplateStatement,
policyStore: policyStore,
});

const policy = new Policy(scope, 'MyTestPolicy', {
Expand Down
2 changes: 1 addition & 1 deletion package.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions src/policy-template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ export interface PolicyTemplateProps {
/**
* The policy store that contains the template.
*
* @default - No policy store.
* @default - The policy store to attach the new or updated policy template.
*/
readonly policyStore?: IPolicyStore;
readonly policyStore: IPolicyStore;
}

export interface PolicyTemplateAttributes {
Expand Down Expand Up @@ -65,11 +65,11 @@ export class PolicyTemplate extends PolicyTemplateBase {
}

/**
* Creates a PolicyStore construct that represents an external Policy Store.
* Creates a PolicyTemplate construct that represents an external Policy Template.
*
* @param scope The parent creating construct (usually `this`).
* @param id The construct's name.
* @param attrs A `PolicyStoreAttributes` object.
* @param attrs A `PolicyTemplateAttributes` object.
*/
public static fromPolicyTemplateAttributes(
scope: Construct,
Expand Down Expand Up @@ -113,15 +113,15 @@ export class PolicyTemplate extends PolicyTemplateBase {
/**
* The Policy store that contains the template.
*/
readonly policyStore?: IPolicyStore;
readonly policyStore: IPolicyStore;

constructor(scope: Construct, id: string, props: PolicyTemplateProps) {
super(scope, id);

this.policyTemplate = new CfnPolicyTemplate(this, id, {
statement: props.statement,
description: props.description,
policyStoreId: props.policyStore?.policyStoreId,
policyStoreId: props.policyStore.policyStoreId,
});
this.policyTemplateId = this.policyTemplate.attrPolicyTemplateId;
this.statement = this.policyTemplate.statement;
Expand Down
28 changes: 7 additions & 21 deletions test/policy-template.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,45 +14,31 @@ permit (
);`;

describe('Policy Template creation', () => {
test('Policy Template creation only with Statement', () => {
test('Policy Template creation with Statement and PolicyStore', () => {
// GIVEN
const stack = new Stack(undefined, 'Stack');

// WHEN
new PolicyTemplate(stack, 'PolicyTemplate', {
statement: Statement.fromInline(policyTemplateStatement),
});

// THEN
Template.fromStack(stack).hasResourceProperties(
'AWS::VerifiedPermissions::PolicyTemplate',
{
Statement: policyTemplateStatement,
const policyStore = new PolicyStore(stack, 'PolicyStore', {
validationSettings: {
mode: ValidationSettingsMode.OFF,
},
);
});

test('Policy Template creation with Statement and Description', () => {
// GIVEN
const stack = new Stack(undefined, 'Stack');
});

// WHEN
new PolicyTemplate(stack, 'PolicyTemplate', {
statement: Statement.fromInline(policyTemplateStatement),
description: 'Test Description for Policy Template',
policyStore: policyStore,
});

// THEN
Template.fromStack(stack).hasResourceProperties(
'AWS::VerifiedPermissions::PolicyTemplate',
{
Statement: policyTemplateStatement,
Description: 'Test Description for Policy Template',
},
);
});

test('Policy Template creation with Statement and Description and PolicyStoreId', () => {
test('Policy Template creation with Statement and Description and PolicyStore', () => {
// GIVEN
const stack = new Stack(undefined, 'Stack');
const policyStore = new PolicyStore(stack, 'PolicyStore', {
Expand Down
2 changes: 2 additions & 0 deletions test/policy.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ when { true };`;
});
const template = new PolicyTemplate(stack, 'PolicyTemplate', {
statement: Statement.fromInline(policyTemplateStatement),
policyStore: policyStore,
});

// Create a policy and add it to the policy store
Expand Down Expand Up @@ -268,6 +269,7 @@ when { true };`;
});
const template = new PolicyTemplate(stack, 'PolicyTemplate', {
statement: Statement.fromInline(policyTemplateStatement),
policyStore: policyStore,
});

// THEN
Expand Down
38 changes: 19 additions & 19 deletions yarn.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading