@@ -33,7 +33,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_basic(t *testing.T) {
33
33
resource .TestCheckResourceAttr (resourceName , "username" , username ),
34
34
resource .TestCheckResourceAttr (resourceName , "password" , "test-acc-password" ),
35
35
resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
36
- resource .TestCheckResourceAttr (resourceName , "roles.0.role_name" , "atlasAdmin" ),
37
36
resource .TestCheckResourceAttr (resourceName , "labels.#" , "1" ),
38
37
),
39
38
},
@@ -46,7 +45,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_basic(t *testing.T) {
46
45
resource .TestCheckResourceAttr (resourceName , "username" , username ),
47
46
resource .TestCheckResourceAttr (resourceName , "password" , "test-acc-password" ),
48
47
resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
49
- resource .TestCheckResourceAttr (resourceName , "roles.0.role_name" , "read" ),
50
48
resource .TestCheckResourceAttr (resourceName , "labels.#" , "1" ),
51
49
),
52
50
},
@@ -75,7 +73,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_withX509Type(t *testing.T) {
75
73
resource .TestCheckResourceAttr (resourceName , "username" , username ),
76
74
resource .TestCheckResourceAttr (resourceName , "x509_type" , "MANAGED" ),
77
75
resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "$external" ),
78
- resource .TestCheckResourceAttr (resourceName , "roles.0.role_name" , "atlasAdmin" ),
79
76
resource .TestCheckResourceAttr (resourceName , "labels.#" , "1" ),
80
77
),
81
78
},
@@ -104,7 +101,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_WithLabels(t *testing.T) {
104
101
resource .TestCheckResourceAttr (resourceName , "username" , username ),
105
102
resource .TestCheckResourceAttr (resourceName , "password" , "test-acc-password" ),
106
103
resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
107
- resource .TestCheckResourceAttr (resourceName , "roles.0.role_name" , "atlasAdmin" ),
108
104
resource .TestCheckResourceAttr (resourceName , "labels.#" , "0" ),
109
105
),
110
106
},
@@ -128,7 +124,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_WithLabels(t *testing.T) {
128
124
resource .TestCheckResourceAttr (resourceName , "username" , username ),
129
125
resource .TestCheckResourceAttr (resourceName , "password" , "test-acc-password" ),
130
126
resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
131
- resource .TestCheckResourceAttr (resourceName , "roles.0.role_name" , "atlasAdmin" ),
132
127
resource .TestCheckResourceAttr (resourceName , "labels.#" , "2" ),
133
128
),
134
129
},
@@ -156,14 +151,74 @@ func TestAccResourceMongoDBAtlasDatabaseUser_WithLabels(t *testing.T) {
156
151
resource .TestCheckResourceAttr (resourceName , "username" , username ),
157
152
resource .TestCheckResourceAttr (resourceName , "password" , "test-acc-password" ),
158
153
resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
159
- resource .TestCheckResourceAttr (resourceName , "roles.0.role_name" , "read" ),
160
154
resource .TestCheckResourceAttr (resourceName , "labels.#" , "3" ),
161
155
),
162
156
},
163
157
},
164
158
})
165
159
}
166
160
161
+ func TestAccResourceMongoDBAtlasDatabaseUser_withRoles (t * testing.T ) {
162
+ var dbUser matlas.DatabaseUser
163
+
164
+ resourceName := "mongodbatlas_database_user.test"
165
+ projectID := os .Getenv ("MONGODB_ATLAS_PROJECT_ID" )
166
+ username := acctest .RandomWithPrefix ("test-acc-user-" )
167
+ password := acctest .RandomWithPrefix ("test-acc-pass-" )
168
+
169
+ resource .ParallelTest (t , resource.TestCase {
170
+ PreCheck : func () { testAccPreCheck (t ) },
171
+ Providers : testAccProviders ,
172
+ CheckDestroy : testAccCheckMongoDBAtlasDatabaseUserDestroy ,
173
+ Steps : []resource.TestStep {
174
+ {
175
+ Config : testAccMongoDBAtlasDatabaseUserWithRoles (username , password , projectID ,
176
+ []* matlas.Role {
177
+ {
178
+ RoleName : "read" ,
179
+ DatabaseName : "admin" ,
180
+ CollectionName : "stir" ,
181
+ },
182
+ {
183
+ RoleName : "read" ,
184
+ DatabaseName : "admin" ,
185
+ CollectionName : "unpledged" ,
186
+ },
187
+ },
188
+ ),
189
+ Check : resource .ComposeTestCheckFunc (
190
+ testAccCheckMongoDBAtlasDatabaseUserExists (resourceName , & dbUser ),
191
+ testAccCheckMongoDBAtlasDatabaseUserAttributes (& dbUser , username ),
192
+ resource .TestCheckResourceAttrSet (resourceName , "project_id" ),
193
+ resource .TestCheckResourceAttr (resourceName , "username" , username ),
194
+ resource .TestCheckResourceAttr (resourceName , "password" , password ),
195
+ resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
196
+ resource .TestCheckResourceAttr (resourceName , "roles.#" , "2" ),
197
+ ),
198
+ },
199
+ {
200
+ Config : testAccMongoDBAtlasDatabaseUserWithRoles (username , password , projectID ,
201
+ []* matlas.Role {
202
+ {
203
+ RoleName : "read" ,
204
+ DatabaseName : "admin" ,
205
+ },
206
+ },
207
+ ),
208
+ Check : resource .ComposeTestCheckFunc (
209
+ testAccCheckMongoDBAtlasDatabaseUserExists (resourceName , & dbUser ),
210
+ testAccCheckMongoDBAtlasDatabaseUserAttributes (& dbUser , username ),
211
+ resource .TestCheckResourceAttrSet (resourceName , "project_id" ),
212
+ resource .TestCheckResourceAttr (resourceName , "username" , username ),
213
+ resource .TestCheckResourceAttr (resourceName , "password" , password ),
214
+ resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
215
+ resource .TestCheckResourceAttr (resourceName , "roles.#" , "1" ),
216
+ ),
217
+ },
218
+ },
219
+ })
220
+ }
221
+
167
222
func TestAccResourceMongoDBAtlasDatabaseUser_importBasic (t * testing.T ) {
168
223
projectID := os .Getenv ("MONGODB_ATLAS_PROJECT_ID" )
169
224
@@ -182,7 +237,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_importBasic(t *testing.T) {
182
237
resource .TestCheckResourceAttr (resourceName , "username" , username ),
183
238
resource .TestCheckResourceAttr (resourceName , "password" , "test-acc-password" ),
184
239
resource .TestCheckResourceAttr (resourceName , "auth_database_name" , "admin" ),
185
- resource .TestCheckResourceAttr (resourceName , "roles.0.role_name" , "read" ),
186
240
resource .TestCheckResourceAttr (resourceName , "labels.#" , "1" ),
187
241
),
188
242
},
@@ -329,3 +383,41 @@ func testAccMongoDBAtlasDatabaseUserWithLabelsConfig(projectID, roleName, userna
329
383
}
330
384
` , projectID , roleName , username , labelsConf )
331
385
}
386
+
387
+ func testAccMongoDBAtlasDatabaseUserWithRoles (username , password , projectID string , rolesArr []* matlas.Role ) string {
388
+
389
+ var roles string
390
+ for _ , role := range rolesArr {
391
+ var roleName , databaseName , collection string
392
+
393
+ if role .RoleName != "" {
394
+ roleName = fmt .Sprintf (`role_name = "%s"` , role .RoleName )
395
+ }
396
+ if role .DatabaseName != "" {
397
+ databaseName = fmt .Sprintf (`database_name = "%s"` , role .DatabaseName )
398
+ }
399
+ if role .CollectionName != "" {
400
+ collection = fmt .Sprintf (`collection_name = "%s"` , role .CollectionName )
401
+ }
402
+
403
+ roles += fmt .Sprintf (`
404
+ roles {
405
+ %s
406
+ %s
407
+ %s
408
+ }
409
+ ` , roleName , databaseName , collection )
410
+ }
411
+
412
+ return fmt .Sprintf (`
413
+ resource "mongodbatlas_database_user" "test" {
414
+ username = "%s"
415
+ password = "%s"
416
+ project_id = "%s"
417
+ auth_database_name = "admin"
418
+
419
+ %s
420
+
421
+ }
422
+ ` , username , password , projectID , roles )
423
+ }
0 commit comments