Skip to content

Commit 45a7cf1

Browse files
committed
Fix resource_mongodbatlas_secret_role missing roles
1 parent 58c01d8 commit 45a7cf1

3 files changed

Lines changed: 85 additions & 33 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
## Unreleased
2+
* Fix API request missing `roles` field for `mongodbatlas_secret_role` resource ([#2047](https://github.com/hashicorp/terraform-provider-vault/pull/2047))
23

34
## 3.21.0 (Oct 9, 2023)
45

vault/resource_mongodbatlas_secret_role.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ func mongodbAtlasSecretRoleCreateUpdate(ctx context.Context, d *schema.ResourceD
124124
consts.FieldMaxTTL,
125125
}
126126
for _, k := range fields {
127-
if d.HasChange(k) {
128-
data[k] = d.Get(k)
127+
if v, ok := d.GetOk(k); ok {
128+
data[k] = v
129129
}
130130
}
131131

vault/resource_mongodbatlas_secret_role_test.go

Lines changed: 82 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func TestAccMongoDBAtlasSecretRole_basic(t *testing.T) {
4242
CheckDestroy: testCheckMountDestroyed(resourceType, consts.MountTypeMongoDBAtlas, consts.FieldMount),
4343
Steps: []resource.TestStep{
4444
{
45-
Config: testAccMongoDBAtlasSecretBackendRole_basic(mount, name, false),
45+
Config: testAccMongoDBAtlasSecretBackendRole_initial(mount, name),
4646
Check: resource.ComposeTestCheckFunc(
4747
resource.TestCheckResourceAttr(resourceName, consts.FieldMount, mount),
4848
resource.TestCheckResourceAttr(resourceName, consts.FieldName, name),
@@ -62,7 +62,27 @@ func TestAccMongoDBAtlasSecretRole_basic(t *testing.T) {
6262
),
6363
},
6464
{
65-
Config: testAccMongoDBAtlasSecretBackendRole_basic(mount, name, true),
65+
Config: testAccMongoDBAtlasSecretBackendRole_updatedExceptRoles(mount, name),
66+
Check: resource.ComposeTestCheckFunc(
67+
resource.TestCheckResourceAttr(resourceName, consts.FieldMount, mount),
68+
resource.TestCheckResourceAttr(resourceName, consts.FieldName, name),
69+
resource.TestCheckResourceAttr(resourceName, consts.FieldOrganizationID, updatedOrganizationID),
70+
resource.TestCheckResourceAttr(resourceName, consts.FieldProjectID, updatedProjectID),
71+
resource.TestCheckResourceAttr(resourceName, consts.FieldRoles+".#", "1"),
72+
resource.TestCheckResourceAttr(resourceName, consts.FieldRoles+".0", roles),
73+
resource.TestCheckResourceAttr(resourceName, consts.FieldIPAddresses+".#", "2"),
74+
resource.TestCheckResourceAttr(resourceName, consts.FieldIPAddresses+".0", "192.168.1.5"),
75+
resource.TestCheckResourceAttr(resourceName, consts.FieldIPAddresses+".1", "192.168.1.6"),
76+
resource.TestCheckResourceAttr(resourceName, consts.FieldCIDRBlocks+".#", "1"),
77+
resource.TestCheckResourceAttr(resourceName, consts.FieldCIDRBlocks+".0", updatedCidrBlocks),
78+
resource.TestCheckResourceAttr(resourceName, consts.FieldProjectRoles+".#", "1"),
79+
resource.TestCheckResourceAttr(resourceName, consts.FieldProjectRoles+".0", updatedProjectRoles),
80+
resource.TestCheckResourceAttr(resourceName, consts.FieldTTL, updatedTtl),
81+
resource.TestCheckResourceAttr(resourceName, consts.FieldMaxTTL, updatedMaxTtl),
82+
),
83+
},
84+
{
85+
Config: testAccMongoDBAtlasSecretBackendRole_updatedRoles(mount, name),
6686
Check: resource.ComposeTestCheckFunc(
6787
resource.TestCheckResourceAttr(resourceName, consts.FieldMount, mount),
6888
resource.TestCheckResourceAttr(resourceName, consts.FieldName, name),
@@ -90,43 +110,74 @@ func TestAccMongoDBAtlasSecretRole_basic(t *testing.T) {
90110
})
91111
}
92112

93-
func testAccMongoDBAtlasSecretBackendRole_basic(path, name string, isUpdate bool) string {
113+
func testAccMongoDBAtlasSecretBackendRole_initial(path, name string) string {
94114
ret := fmt.Sprintf(`
95115
resource "vault_mount" "mongo" {
96116
path = "%s"
97117
type = "mongodbatlas"
98118
description = "MongoDB Atlas secret engine mount"
99119
}
100-
`, path)
101-
if !isUpdate {
102-
ret += fmt.Sprintf(`
120+
103121
resource "vault_mongodbatlas_secret_role" "role" {
104-
mount = vault_mount.mongo.path
105-
name = "%s"
106-
organization_id = "7cf5a45a9ccf6400e60981b7"
107-
project_id = "5cf5a45a9ccf6400e60981b6"
108-
roles = ["ORG_MEMBER"]
109-
ip_addresses = ["192.168.1.3", "192.168.1.4"]
110-
cidr_blocks = ["192.168.1.3/32"]
111-
project_roles = ["GROUP_CLUSTER_MANAGER"]
112-
ttl = 30
113-
max_ttl = 60
114-
}`, name)
115-
} else {
116-
ret += fmt.Sprintf(`
122+
mount = vault_mount.mongo.path
123+
name = "%s"
124+
organization_id = "7cf5a45a9ccf6400e60981b7"
125+
project_id = "5cf5a45a9ccf6400e60981b6"
126+
roles = ["ORG_MEMBER"]
127+
ip_addresses = ["192.168.1.3", "192.168.1.4"]
128+
cidr_blocks = ["192.168.1.3/32"]
129+
project_roles = ["GROUP_CLUSTER_MANAGER"]
130+
ttl = 30
131+
max_ttl = 60
132+
}`, path, name)
133+
134+
return ret
135+
}
136+
137+
func testAccMongoDBAtlasSecretBackendRole_updatedExceptRoles(path, name string) string {
138+
ret := fmt.Sprintf(`
139+
resource "vault_mount" "mongo" {
140+
path = "%s"
141+
type = "mongodbatlas"
142+
description = "MongoDB Atlas secret engine mount"
143+
}
144+
145+
resource "vault_mongodbatlas_secret_role" "role" {
146+
mount = vault_mount.mongo.path
147+
name = "%s"
148+
organization_id = "7cf5a45a9ccf6400e60981a8"
149+
project_id = "5cf5a45a9ccf6400e60981a67"
150+
roles = ["ORG_MEMBER"]
151+
ip_addresses = ["192.168.1.5", "192.168.1.6"]
152+
cidr_blocks = ["192.168.1.3/35"]
153+
project_roles = ["GROUP_READ_ONLY"]
154+
ttl = 60
155+
max_ttl = 120
156+
}`, path, name)
157+
158+
return ret
159+
}
160+
161+
func testAccMongoDBAtlasSecretBackendRole_updatedRoles(path, name string) string {
162+
ret := fmt.Sprintf(`
163+
resource "vault_mount" "mongo" {
164+
path = "%s"
165+
type = "mongodbatlas"
166+
description = "MongoDB Atlas secret engine mount"
167+
}
168+
117169
resource "vault_mongodbatlas_secret_role" "role" {
118-
mount = vault_mount.mongo.path
119-
name = "%s"
120-
organization_id = "7cf5a45a9ccf6400e60981a8"
121-
project_id = "5cf5a45a9ccf6400e60981a67"
122-
roles = ["ORG_READ_ONLY"]
123-
ip_addresses = ["192.168.1.5", "192.168.1.6"]
124-
cidr_blocks = ["192.168.1.3/35"]
125-
project_roles = ["GROUP_READ_ONLY"]
126-
ttl = 60
127-
max_ttl = 120
128-
}`, name)
129-
}
170+
mount = vault_mount.mongo.path
171+
name = "%s"
172+
organization_id = "7cf5a45a9ccf6400e60981a8"
173+
project_id = "5cf5a45a9ccf6400e60981a67"
174+
roles = ["ORG_READ_ONLY"]
175+
ip_addresses = ["192.168.1.5", "192.168.1.6"]
176+
cidr_blocks = ["192.168.1.3/35"]
177+
project_roles = ["GROUP_READ_ONLY"]
178+
ttl = 60
179+
max_ttl = 120
180+
}`, path, name)
130181

131182
return ret
132183
}

0 commit comments

Comments
 (0)