Skip to content

Commit cf20e25

Browse files
test: Add data source acceptance tests for azure cloud provider on Federated Database Instance into same file where resource test is located (#3531)
* Bump mongodbatlas provider version to match release for azure cloud provider example * Add data source tests for azure cloud provider config in order to keep both sets together * Extract resource and data source names into constants to avoid redundancy * Format code * Remove extra checks duplication
1 parent ec26af4 commit cf20e25

File tree

2 files changed

+61
-36
lines changed

2 files changed

+61
-36
lines changed

examples/mongodbatlas_federated_database_instance/azure/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
mongodbatlas = {
44
source = "mongodb/mongodbatlas"
5-
version = "~> 1.38.0"
5+
version = "~> 1.39.0"
66
}
77
}
88
required_version = ">= 1.0"

internal/service/federateddatabaseinstance/resource_federated_database_instance_test.go

Lines changed: 60 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package federateddatabaseinstance_test
22

33
import (
44
"fmt"
5+
"maps"
56
"os"
67
"testing"
78

@@ -11,13 +12,16 @@ import (
1112
"github.com/mongodb/terraform-provider-mongodbatlas/internal/testutil/acc"
1213
)
1314

15+
const (
16+
resourceName = "mongodbatlas_federated_database_instance.test"
17+
dataSourceName = "data.mongodbatlas_federated_database_instance.test"
18+
)
19+
1420
func TestAccFederatedDatabaseInstance_basic(t *testing.T) {
1521
var (
16-
resourceName = "mongodbatlas_federated_database_instance.test"
17-
dataSourceName = "data.mongodbatlas_federated_database_instance.test"
18-
orgID = os.Getenv("MONGODB_ATLAS_ORG_ID")
19-
projectName = acc.RandomProjectName()
20-
name = acc.RandomName()
22+
orgID = os.Getenv("MONGODB_ATLAS_ORG_ID")
23+
projectName = acc.RandomProjectName()
24+
name = acc.RandomName()
2125
)
2226

2327
valueChecks := map[string]string{
@@ -68,7 +72,6 @@ func TestAccFederatedDatabaseInstance_basic(t *testing.T) {
6872

6973
func TestAccFederatedDatabaseInstance_s3bucket(t *testing.T) {
7074
var (
71-
resourceName = "mongodbatlas_federated_database_instance.test"
7275
orgID = os.Getenv("MONGODB_ATLAS_ORG_ID")
7376
projectName = acc.RandomProjectName()
7477
name = acc.RandomName()
@@ -103,28 +106,34 @@ func TestAccFederatedDatabaseInstance_s3bucket(t *testing.T) {
103106

104107
func TestAccFederatedDatabaseInstance_azureCloudProviderConfig(t *testing.T) {
105108
var (
106-
resourceName = "mongodbatlas_federated_database_instance.test"
107109
projectID = acc.ProjectIDExecution(t)
108110
name = acc.RandomName()
109111
atlasAzureAppID = os.Getenv("AZURE_ATLAS_APP_ID")
110112
servicePrincipalID = os.Getenv("AZURE_SERVICE_PRINCIPAL_ID")
111113
tenantID = os.Getenv("AZURE_TENANT_ID")
112114
)
113115

116+
extraChecks := []resource.TestCheckFunc{
117+
resource.TestCheckResourceAttr(resourceName, "cloud_provider_config.0.aws.#", "0"),
118+
resource.TestCheckResourceAttrSet(resourceName, "cloud_provider_config.0.azure.0.role_id"),
119+
}
120+
114121
resource.ParallelTest(t, resource.TestCase{
115122
PreCheck: func() { acc.PreCheckCloudProviderAccessAzure(t) },
116123
ProtoV6ProviderFactories: acc.TestAccProviderV6Factories,
117124
CheckDestroy: acc.CheckDestroyFederatedDatabaseInstance,
118125
Steps: []resource.TestStep{
119126
{
120-
Config: configAzureCloudProvider(name, projectID, atlasAzureAppID, servicePrincipalID, tenantID),
121-
Check: resource.ComposeAggregateTestCheckFunc(
122-
resource.TestCheckResourceAttrSet(resourceName, "project_id"),
123-
resource.TestCheckResourceAttr(resourceName, "name", name),
124-
resource.TestCheckResourceAttrSet(resourceName, "cloud_provider_config.0.azure.0.role_id"),
125-
resource.TestCheckResourceAttr(resourceName, "cloud_provider_config.0.azure.0.atlas_app_id", atlasAzureAppID),
126-
resource.TestCheckResourceAttr(resourceName, "cloud_provider_config.0.azure.0.service_principal_id", servicePrincipalID),
127-
resource.TestCheckResourceAttr(resourceName, "cloud_provider_config.0.azure.0.tenant_id", tenantID),
127+
Config: configAzureCloudProvider(projectID, name, atlasAzureAppID, servicePrincipalID, tenantID),
128+
Check: checkAttrs(
129+
projectID,
130+
name,
131+
map[string]string{
132+
"cloud_provider_config.0.azure.0.atlas_app_id": atlasAzureAppID,
133+
"cloud_provider_config.0.azure.0.service_principal_id": servicePrincipalID,
134+
"cloud_provider_config.0.azure.0.tenant_id": tenantID,
135+
},
136+
extraChecks...,
128137
),
129138
},
130139
{
@@ -145,7 +154,6 @@ func TestAccFederatedDatabaseInstance_atlasCluster(t *testing.T) {
145154
clusterRequest = acc.ClusterRequest{
146155
ReplicationSpecs: specs,
147156
}
148-
resourceName = "mongodbatlas_federated_database_instance.test"
149157
name = acc.RandomName()
150158
clusterInfo = acc.GetClusterInfo(t, &clusterRequest)
151159
projectID = clusterInfo.ProjectID
@@ -383,7 +391,6 @@ resource "mongodbatlas_federated_database_instance" "test" {
383391
}
384392
}
385393
386-
387394
storage_databases {
388395
name = "VirtualDatabase0"
389396
collections {
@@ -432,29 +439,18 @@ resource "mongodbatlas_federated_database_instance" "test" {
432439
`, name, testS3Bucket)
433440
}
434441

435-
func configAzureCloudProvider(name, projectID, atlasAzureAppID, servicePrincipalID, tenantID string) string {
442+
func configAzureCloudProvider(projectID, name, atlasAzureAppID, servicePrincipalID, tenantID string) string {
436443
azureCloudProviderAccess := acc.ConfigSetupAzure(projectID, atlasAzureAppID, servicePrincipalID, tenantID)
437444

438445
return azureCloudProviderAccess + fmt.Sprintf(`
439446
440447
resource "mongodbatlas_federated_database_instance" "test" {
441-
name = %[1]q
442-
project_id = %[2]q
443-
448+
project_id = %[1]q
449+
name = %[2]q
450+
444451
cloud_provider_config {
445452
azure {
446-
role_id = mongodbatlas_cloud_provider_access_setup.test.role_id
447-
448-
}
449-
}
450-
451-
storage_stores {
452-
name = "azure_store"
453-
cluster_name = "azure_cluster"
454-
project_id = %[2]q
455-
provider = "atlas"
456-
read_preference {
457-
mode = "secondary"
453+
role_id = mongodbatlas_cloud_provider_access_setup.test.role_id
458454
}
459455
}
460456
@@ -465,12 +461,41 @@ resource "mongodbatlas_federated_database_instance" "test" {
465461
data_sources {
466462
collection = "listingsAndReviews"
467463
database = "sample_airbnb"
468-
store_name = "azure_store"
464+
store_name = "ClusterTest"
469465
}
470466
}
471467
}
468+
469+
storage_stores {
470+
name = "ClusterTest"
471+
cluster_name = "ClusterTest"
472+
project_id = %[1]q
473+
provider = "atlas"
474+
read_preference {
475+
mode = "secondary"
476+
}
477+
}
472478
}
473-
`, name, projectID)
479+
480+
data "mongodbatlas_federated_database_instance" "test" {
481+
project_id = mongodbatlas_federated_database_instance.test.project_id
482+
name = mongodbatlas_federated_database_instance.test.name
483+
}
484+
`, projectID, name)
485+
}
486+
487+
func checkAttrs(projectID, name string, extraAttrs map[string]string, extra ...resource.TestCheckFunc) resource.TestCheckFunc {
488+
attrsMap := map[string]string{
489+
"project_id": projectID,
490+
"name": name,
491+
492+
"cloud_provider_config.#": "1",
493+
"cloud_provider_config.0.azure.#": "1",
494+
}
495+
496+
maps.Copy(attrsMap, extraAttrs)
497+
check := acc.CheckRSAndDS(resourceName, conversion.Pointer(dataSourceName), nil, nil, attrsMap, extra...)
498+
return check
474499
}
475500

476501
func configFirstSteps(federatedInstanceName, projectName, orgID string) string {

0 commit comments

Comments
 (0)