Skip to content

Commit

Permalink
Merge pull request #3066 from terraform-providers/t-iam-randomization
Browse files Browse the repository at this point in the history
test/aws_iam_*: Randomize names
  • Loading branch information
radeksimko authored Jan 19, 2018
2 parents 1031f40 + 539b071 commit 1026478
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 102 deletions.
7 changes: 5 additions & 2 deletions aws/import_aws_iam_group_test.go
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
package aws

import (
"fmt"
"testing"

"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
)

func TestAccAWSIAMGroup_importBasic(t *testing.T) {
rInt := acctest.RandInt()
resourceName := "aws_iam_group.group"

rString := acctest.RandString(8)
groupName := fmt.Sprintf("tf-acc-group-import-%s", rString)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSGroupDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSGroupConfig(rInt),
Config: testAccAWSGroupConfig(groupName),
},

{
Expand Down
91 changes: 51 additions & 40 deletions aws/resource_aws_iam_group_membership_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,41 +16,39 @@ import (
func TestAccAWSGroupMembership_basic(t *testing.T) {
var group iam.GetGroupOutput

rString := acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)
configBase := fmt.Sprintf(testAccAWSGroupMemberConfig, rString, rString, rString)
configUpdate := fmt.Sprintf(testAccAWSGroupMemberConfigUpdate, rString, rString, rString, rString, rString)
configUpdateDown := fmt.Sprintf(testAccAWSGroupMemberConfigUpdateDown, rString, rString, rString)

testUser := fmt.Sprintf("test-user-%s", rString)
testUserTwo := fmt.Sprintf("test-user-two-%s", rString)
testUserThree := fmt.Sprintf("test-user-three-%s", rString)
rString := acctest.RandString(8)
groupName := fmt.Sprintf("tf-acc-group-gm-basic-%s", rString)
userName := fmt.Sprintf("tf-acc-user-gm-basic-%s", rString)
userName2 := fmt.Sprintf("tf-acc-user-gm-basic-two-%s", rString)
userName3 := fmt.Sprintf("tf-acc-user-gm-basic-three-%s", rString)
membershipName := fmt.Sprintf("tf-acc-membership-gm-basic-%s", rString)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSGroupMembershipDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: configBase,
Config: testAccAWSGroupMemberConfig(groupName, userName, membershipName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupMembershipExists("aws_iam_group_membership.team", &group),
testAccCheckAWSGroupMembershipAttributes(&group, []string{testUser}),
testAccCheckAWSGroupMembershipAttributes(&group, groupName, []string{userName}),
),
},

resource.TestStep{
Config: configUpdate,
Config: testAccAWSGroupMemberConfigUpdate(groupName, userName, userName2, userName3, membershipName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupMembershipExists("aws_iam_group_membership.team", &group),
testAccCheckAWSGroupMembershipAttributes(&group, []string{testUserTwo, testUserThree}),
testAccCheckAWSGroupMembershipAttributes(&group, groupName, []string{userName2, userName3}),
),
},

resource.TestStep{
Config: configUpdateDown,
Config: testAccAWSGroupMemberConfigUpdateDown(groupName, userName3, membershipName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupMembershipExists("aws_iam_group_membership.team", &group),
testAccCheckAWSGroupMembershipAttributes(&group, []string{testUserThree}),
testAccCheckAWSGroupMembershipAttributes(&group, groupName, []string{userName3}),
),
},
},
Expand All @@ -60,13 +58,18 @@ func TestAccAWSGroupMembership_basic(t *testing.T) {
func TestAccAWSGroupMembership_paginatedUserList(t *testing.T) {
var group iam.GetGroupOutput

rString := acctest.RandString(8)
groupName := fmt.Sprintf("tf-acc-group-gm-pul-%s", rString)
membershipName := fmt.Sprintf("tf-acc-membership-gm-pul-%s", rString)
userNamePrefix := fmt.Sprintf("tf-acc-user-gm-pul-%s-", rString)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSGroupMembershipDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccAWSGroupMemberConfigPaginatedUserList,
Config: testAccAWSGroupMemberConfigPaginatedUserList(groupName, membershipName, userNamePrefix),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupMembershipExists("aws_iam_group_membership.team", &group),
resource.TestCheckResourceAttr(
Expand Down Expand Up @@ -132,10 +135,10 @@ func testAccCheckAWSGroupMembershipExists(n string, g *iam.GetGroupOutput) resou
}
}

func testAccCheckAWSGroupMembershipAttributes(group *iam.GetGroupOutput, users []string) resource.TestCheckFunc {
func testAccCheckAWSGroupMembershipAttributes(group *iam.GetGroupOutput, groupName string, users []string) resource.TestCheckFunc {
return func(s *terraform.State) error {
if !strings.Contains(*group.Group.GroupName, "test-group") {
return fmt.Errorf("Bad group membership: expected %s, got %s", "test-group", *group.Group.GroupName)
if !strings.Contains(*group.Group.GroupName, groupName) {
return fmt.Errorf("Bad group membership: expected %s, got %s", groupName, *group.Group.GroupName)
}

uc := len(users)
Expand All @@ -154,80 +157,88 @@ func testAccCheckAWSGroupMembershipAttributes(group *iam.GetGroupOutput, users [
}
}

const testAccAWSGroupMemberConfig = `
func testAccAWSGroupMemberConfig(groupName, userName, membershipName string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group" {
name = "test-group-%s"
name = "%s"
}
resource "aws_iam_user" "user" {
name = "test-user-%s"
name = "%s"
}
resource "aws_iam_group_membership" "team" {
name = "tf-testing-group-membership-%s"
name = "%s"
users = ["${aws_iam_user.user.name}"]
group = "${aws_iam_group.group.name}"
}
`
`, groupName, userName, membershipName)
}

const testAccAWSGroupMemberConfigUpdate = `
func testAccAWSGroupMemberConfigUpdate(groupName, userName, userName2, userName3, membershipName string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group" {
name = "test-group-%s"
name = "%s"
}
resource "aws_iam_user" "user" {
name = "test-user-%s"
name = "%s"
}
resource "aws_iam_user" "user_two" {
name = "test-user-two-%s"
name = "%s"
}
resource "aws_iam_user" "user_three" {
name = "test-user-three-%s"
name = "%s"
}
resource "aws_iam_group_membership" "team" {
name = "tf-testing-group-membership-%s"
name = "%s"
users = [
"${aws_iam_user.user_two.name}",
"${aws_iam_user.user_three.name}",
]
group = "${aws_iam_group.group.name}"
}
`
`, groupName, userName, userName2, userName3, membershipName)
}

const testAccAWSGroupMemberConfigUpdateDown = `
func testAccAWSGroupMemberConfigUpdateDown(groupName, userName3, membershipName string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group" {
name = "test-group-%s"
name = "%s"
}
resource "aws_iam_user" "user_three" {
name = "test-user-three-%s"
name = "%s"
}
resource "aws_iam_group_membership" "team" {
name = "tf-testing-group-membership-%s"
name = "%s"
users = [
"${aws_iam_user.user_three.name}",
]
group = "${aws_iam_group.group.name}"
}
`
`, groupName, userName3, membershipName)
}

const testAccAWSGroupMemberConfigPaginatedUserList = `
func testAccAWSGroupMemberConfigPaginatedUserList(groupName, membershipName, userNamePrefix string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group" {
name = "test-paginated-group"
name = "%s"
}
resource "aws_iam_group_membership" "team" {
name = "tf-testing-paginated-group-membership"
name = "%s"
users = ["${aws_iam_user.user.*.name}"]
group = "${aws_iam_group.group.name}"
}
resource "aws_iam_user" "user" {
count = 101
name = "${format("paged-test-user-%d", count.index + 1)}"
name = "${format("%s%%d", count.index + 1)}"
}
`, groupName, membershipName, userNamePrefix)
}
`
41 changes: 26 additions & 15 deletions aws/resource_aws_iam_group_policy_attachment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,37 @@ import (

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/iam"
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
)

func TestAccAWSIamGroupPolicyAttachment_basic(t *testing.T) {
func TestAccAWSIAMGroupPolicyAttachment_basic(t *testing.T) {
var out iam.ListAttachedGroupPoliciesOutput

rString := acctest.RandString(8)
groupName := fmt.Sprintf("tf-acc-group-gpa-basic-%s", rString)
policyName := fmt.Sprintf("tf-acc-policy-gpa-basic-%s", rString)
policyName2 := fmt.Sprintf("tf-acc-policy-gpa-basic-2-%s", rString)
policyName3 := fmt.Sprintf("tf-acc-policy-gpa-basic-3-%s", rString)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSGroupPolicyAttachmentDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccAWSGroupPolicyAttachConfig,
Config: testAccAWSGroupPolicyAttachConfig(groupName, policyName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupPolicyAttachmentExists("aws_iam_group_policy_attachment.test-attach", 1, &out),
testAccCheckAWSGroupPolicyAttachmentAttributes([]string{"test-policy"}, &out),
testAccCheckAWSGroupPolicyAttachmentAttributes([]string{policyName}, &out),
),
},
resource.TestStep{
Config: testAccAWSGroupPolicyAttachConfigUpdate,
Config: testAccAWSGroupPolicyAttachConfigUpdate(groupName, policyName, policyName2, policyName3),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupPolicyAttachmentExists("aws_iam_group_policy_attachment.test-attach", 2, &out),
testAccCheckAWSGroupPolicyAttachmentAttributes([]string{"test-policy2", "test-policy3"}, &out),
testAccCheckAWSGroupPolicyAttachmentAttributes([]string{policyName2, policyName3}, &out),
),
},
},
Expand Down Expand Up @@ -88,13 +95,14 @@ func testAccCheckAWSGroupPolicyAttachmentAttributes(policies []string, out *iam.
}
}

const testAccAWSGroupPolicyAttachConfig = `
func testAccAWSGroupPolicyAttachConfig(groupName, policyName string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group" {
name = "test-group"
name = "%s"
}
resource "aws_iam_policy" "policy" {
name = "test-policy"
name = "%s"
description = "A test policy"
policy = <<EOF
{
Expand All @@ -116,15 +124,17 @@ resource "aws_iam_group_policy_attachment" "test-attach" {
group = "${aws_iam_group.group.name}"
policy_arn = "${aws_iam_policy.policy.arn}"
}
`
`, groupName, policyName)
}

const testAccAWSGroupPolicyAttachConfigUpdate = `
func testAccAWSGroupPolicyAttachConfigUpdate(groupName, policyName, policyName2, policyName3 string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group" {
name = "test-group"
name = "%s"
}
resource "aws_iam_policy" "policy" {
name = "test-policy"
name = "%s"
description = "A test policy"
policy = <<EOF
{
Expand All @@ -143,7 +153,7 @@ EOF
}
resource "aws_iam_policy" "policy2" {
name = "test-policy2"
name = "%s"
description = "A test policy"
policy = <<EOF
{
Expand All @@ -162,7 +172,7 @@ EOF
}
resource "aws_iam_policy" "policy3" {
name = "test-policy3"
name = "%s"
description = "A test policy"
policy = <<EOF
{
Expand All @@ -189,4 +199,5 @@ resource "aws_iam_group_policy_attachment" "test-attach2" {
group = "${aws_iam_group.group.name}"
policy_arn = "${aws_iam_policy.policy3.arn}"
}
`
`, groupName, policyName, policyName2, policyName3)
}
29 changes: 16 additions & 13 deletions aws/resource_aws_iam_group_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,25 +52,28 @@ func TestValidateIamGroupName(t *testing.T) {

func TestAccAWSIAMGroup_basic(t *testing.T) {
var conf iam.GetGroupOutput
rInt := acctest.RandInt()

rString := acctest.RandString(8)
groupName := fmt.Sprintf("tf-acc-group-basic-%s", rString)
groupName2 := fmt.Sprintf("tf-acc-group-basic-2-%s", rString)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSGroupDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSGroupConfig(rInt),
Config: testAccAWSGroupConfig(groupName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupExists("aws_iam_group.group", &conf),
testAccCheckAWSGroupAttributes(&conf, fmt.Sprintf("test-group-%d", rInt), "/"),
testAccCheckAWSGroupAttributes(&conf, groupName, "/"),
),
},
{
Config: testAccAWSGroupConfig2(rInt),
Config: testAccAWSGroupConfig2(groupName2),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSGroupExists("aws_iam_group.group2", &conf),
testAccCheckAWSGroupAttributes(&conf, fmt.Sprintf("test-group-%d-2", rInt), "/funnypath/"),
testAccCheckAWSGroupAttributes(&conf, groupName2, "/funnypath/"),
),
},
},
Expand Down Expand Up @@ -146,18 +149,18 @@ func testAccCheckAWSGroupAttributes(group *iam.GetGroupOutput, name string, path
}
}

func testAccAWSGroupConfig(rInt int) string {
func testAccAWSGroupConfig(groupName string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group" {
name = "test-group-%d"
path = "/"
}`, rInt)
resource "aws_iam_group" "group" {
name = "%s"
path = "/"
}`, groupName)
}

func testAccAWSGroupConfig2(rInt int) string {
func testAccAWSGroupConfig2(groupName string) string {
return fmt.Sprintf(`
resource "aws_iam_group" "group2" {
name = "test-group-%d-2"
name = "%s"
path = "/funnypath/"
}`, rInt)
}`, groupName)
}
Loading

0 comments on commit 1026478

Please sign in to comment.