Skip to content

Commit 2d70d6d

Browse files
committed
test: added a new test case to verify the issue #228 and updated all the test
1 parent 5611d4d commit 2d70d6d

File tree

1 file changed

+99
-7
lines changed

1 file changed

+99
-7
lines changed

mongodbatlas/resource_mongodbatlas_database_user_test.go

+99-7
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_basic(t *testing.T) {
3333
resource.TestCheckResourceAttr(resourceName, "username", username),
3434
resource.TestCheckResourceAttr(resourceName, "password", "test-acc-password"),
3535
resource.TestCheckResourceAttr(resourceName, "auth_database_name", "admin"),
36-
resource.TestCheckResourceAttr(resourceName, "roles.0.role_name", "atlasAdmin"),
3736
resource.TestCheckResourceAttr(resourceName, "labels.#", "1"),
3837
),
3938
},
@@ -46,7 +45,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_basic(t *testing.T) {
4645
resource.TestCheckResourceAttr(resourceName, "username", username),
4746
resource.TestCheckResourceAttr(resourceName, "password", "test-acc-password"),
4847
resource.TestCheckResourceAttr(resourceName, "auth_database_name", "admin"),
49-
resource.TestCheckResourceAttr(resourceName, "roles.0.role_name", "read"),
5048
resource.TestCheckResourceAttr(resourceName, "labels.#", "1"),
5149
),
5250
},
@@ -75,7 +73,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_withX509Type(t *testing.T) {
7573
resource.TestCheckResourceAttr(resourceName, "username", username),
7674
resource.TestCheckResourceAttr(resourceName, "x509_type", "MANAGED"),
7775
resource.TestCheckResourceAttr(resourceName, "auth_database_name", "$external"),
78-
resource.TestCheckResourceAttr(resourceName, "roles.0.role_name", "atlasAdmin"),
7976
resource.TestCheckResourceAttr(resourceName, "labels.#", "1"),
8077
),
8178
},
@@ -104,7 +101,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_WithLabels(t *testing.T) {
104101
resource.TestCheckResourceAttr(resourceName, "username", username),
105102
resource.TestCheckResourceAttr(resourceName, "password", "test-acc-password"),
106103
resource.TestCheckResourceAttr(resourceName, "auth_database_name", "admin"),
107-
resource.TestCheckResourceAttr(resourceName, "roles.0.role_name", "atlasAdmin"),
108104
resource.TestCheckResourceAttr(resourceName, "labels.#", "0"),
109105
),
110106
},
@@ -128,7 +124,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_WithLabels(t *testing.T) {
128124
resource.TestCheckResourceAttr(resourceName, "username", username),
129125
resource.TestCheckResourceAttr(resourceName, "password", "test-acc-password"),
130126
resource.TestCheckResourceAttr(resourceName, "auth_database_name", "admin"),
131-
resource.TestCheckResourceAttr(resourceName, "roles.0.role_name", "atlasAdmin"),
132127
resource.TestCheckResourceAttr(resourceName, "labels.#", "2"),
133128
),
134129
},
@@ -156,14 +151,74 @@ func TestAccResourceMongoDBAtlasDatabaseUser_WithLabels(t *testing.T) {
156151
resource.TestCheckResourceAttr(resourceName, "username", username),
157152
resource.TestCheckResourceAttr(resourceName, "password", "test-acc-password"),
158153
resource.TestCheckResourceAttr(resourceName, "auth_database_name", "admin"),
159-
resource.TestCheckResourceAttr(resourceName, "roles.0.role_name", "read"),
160154
resource.TestCheckResourceAttr(resourceName, "labels.#", "3"),
161155
),
162156
},
163157
},
164158
})
165159
}
166160

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+
167222
func TestAccResourceMongoDBAtlasDatabaseUser_importBasic(t *testing.T) {
168223
projectID := os.Getenv("MONGODB_ATLAS_PROJECT_ID")
169224

@@ -182,7 +237,6 @@ func TestAccResourceMongoDBAtlasDatabaseUser_importBasic(t *testing.T) {
182237
resource.TestCheckResourceAttr(resourceName, "username", username),
183238
resource.TestCheckResourceAttr(resourceName, "password", "test-acc-password"),
184239
resource.TestCheckResourceAttr(resourceName, "auth_database_name", "admin"),
185-
resource.TestCheckResourceAttr(resourceName, "roles.0.role_name", "read"),
186240
resource.TestCheckResourceAttr(resourceName, "labels.#", "1"),
187241
),
188242
},
@@ -329,3 +383,41 @@ func testAccMongoDBAtlasDatabaseUserWithLabelsConfig(projectID, roleName, userna
329383
}
330384
`, projectID, roleName, username, labelsConf)
331385
}
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

Comments
 (0)