Skip to content

Commit

Permalink
Merge pull request #26 from nRFCloud/joco/iam-access-key-adaptor
Browse files Browse the repository at this point in the history
IAM Access Key adaptor
  • Loading branch information
jfrconley authored Jun 29, 2024
2 parents 65d82d0 + 5bd0311 commit 5afcd9b
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 3 deletions.
5 changes: 5 additions & 0 deletions .changeset/forty-geckos-nail.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nrfcloud/cdktf-aws-adaptor": minor
---

Add support for Iam AccessKey resource mapping
40 changes: 40 additions & 0 deletions src/__tests__/mappings/__snapshots__/iam.spec.ts.snap
Original file line number Diff line number Diff line change
@@ -1,5 +1,45 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html

exports[`IAM Mappings > Should map AWS::IAM::AccessKey 1`] = `
"{
\\"provider\\": {
\\"aws\\": [
{
\\"alias\\": \\"us_east_1\\",
\\"region\\": \\"us-east-1\\"
}
]
},
\\"resource\\": {
\\"aws_iam_access_key\\": {
\\"resource_22C949BF\\": {
\\"status\\": \\"Active\\",
\\"user\\": \\"test-user\\"
}
}
},
\\"terraform\\": {
\\"backend\\": {
\\"local\\": {
\\"path\\": \\"/terraform.test-stack.tfstate\\"
}
},
\\"required_providers\\": {
\\"aws\\": {
\\"source\\": \\"aws\\",
\\"version\\": \\"5.40.0\\"
}
}
},
\\"variable\\": {
\\"resource_refs_CDA17697\\": {
\\"default\\": \\"\${join(\\\\\\"\\\\\\", [aws_iam_access_key.resource_22C949BF.id, \\\\\\",\\\\\\", aws_iam_access_key.resource_22C949BF.secret])}\\",
\\"type\\": \\"string\\"
}
}
}"
`;

exports[`IAM Mappings > should map AWS::IAM::Policy 1`] = `
"{
\\"provider\\": {
Expand Down
18 changes: 16 additions & 2 deletions src/__tests__/mappings/iam.spec.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import { IamAccessKey } from "@cdktf/provider-aws/lib/iam-access-key/index.js";
import { IamGroupPolicyAttachment } from "@cdktf/provider-aws/lib/iam-group-policy-attachment/index.js";
import { IamPolicy } from "@cdktf/provider-aws/lib/iam-policy/index.js";
import { IamRolePolicyAttachment } from "@cdktf/provider-aws/lib/iam-role-policy-attachment/index.js";
import { IamRole } from "@cdktf/provider-aws/lib/iam-role/index.js";
import { IamUserPolicyAttachment } from "@cdktf/provider-aws/lib/iam-user-policy-attachment/index.js";
import { S3Bucket } from "@cdktf/provider-aws/lib/s3-bucket/index.js";
import { CfnPolicy, CfnRole } from "aws-cdk-lib/aws-iam";
import { CfnAccessKey, CfnPolicy, CfnRole } from "aws-cdk-lib/aws-iam";
import { Testing } from "cdktf";
import { resolve } from "cdktf/lib/_tokens.js";
import { setupJest } from "cdktf/lib/testing/adapters/jest.js";
import { synthesizeElementAndTestStability } from "../helpers.js";
import { itShouldMapCfnElementToTerraformResource, synthesizeElementAndTestStability } from "../helpers.js";

setupJest();
describe("IAM Mappings", () => {
Expand Down Expand Up @@ -137,4 +138,17 @@ describe("IAM Mappings", () => {
user: "test-user",
});
});

itShouldMapCfnElementToTerraformResource(
CfnAccessKey,
{
status: "Active",
userName: "test-user",
},
IamAccessKey,
{
status: "Active",
user: "test-user",
},
);
});
18 changes: 17 additions & 1 deletion src/mappings/services/iam.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { IamAccessKey } from "@cdktf/provider-aws/lib/iam-access-key/index.js";
import { IamGroupPolicyAttachment } from "@cdktf/provider-aws/lib/iam-group-policy-attachment/index.js";
import { IamPolicy } from "@cdktf/provider-aws/lib/iam-policy/index.js";
import { IamRolePolicyAttachment } from "@cdktf/provider-aws/lib/iam-role-policy-attachment/index.js";
import { IamRole, IamRoleConfig } from "@cdktf/provider-aws/lib/iam-role/index.js";
import { IamUserPolicyAttachment } from "@cdktf/provider-aws/lib/iam-user-policy-attachment/index.js";
import { CfnPolicy, CfnRole } from "aws-cdk-lib/aws-iam";
import { CfnAccessKey, CfnPolicy, CfnRole } from "aws-cdk-lib/aws-iam";
import { Fn, TerraformResource } from "cdktf";
import { Sleep } from "../../lib/core/time/sleep/index.js";
import { getSingletonTimeProvider } from "../../lib/stack-provider-singletons.js";
Expand Down Expand Up @@ -132,4 +133,19 @@ export function registerIamMappings() {
Id: (policy: IamPolicy) => policy.id,
},
});

registerMappingTyped(CfnAccessKey, IamAccessKey, {
resource(scope, id, props) {
return new IamAccessKey(scope, id, {
user: props.UserName,
status: props.Status,
});
},
unsupportedProps: ["Serial"],
attributes: {
Ref: (accessKey: IamAccessKey) => accessKey.id,
Id: (accessKey: IamAccessKey) => accessKey.id,
SecretAccessKey: (accessKey: IamAccessKey) => accessKey.secret,
},
});
}

0 comments on commit 5afcd9b

Please sign in to comment.