@@ -2,6 +2,7 @@ package federateddatabaseinstance_test
2
2
3
3
import (
4
4
"fmt"
5
+ "maps"
5
6
"os"
6
7
"testing"
7
8
@@ -11,13 +12,16 @@ import (
11
12
"github.com/mongodb/terraform-provider-mongodbatlas/internal/testutil/acc"
12
13
)
13
14
15
+ const (
16
+ resourceName = "mongodbatlas_federated_database_instance.test"
17
+ dataSourceName = "data.mongodbatlas_federated_database_instance.test"
18
+ )
19
+
14
20
func TestAccFederatedDatabaseInstance_basic (t * testing.T ) {
15
21
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 ()
21
25
)
22
26
23
27
valueChecks := map [string ]string {
@@ -68,7 +72,6 @@ func TestAccFederatedDatabaseInstance_basic(t *testing.T) {
68
72
69
73
func TestAccFederatedDatabaseInstance_s3bucket (t * testing.T ) {
70
74
var (
71
- resourceName = "mongodbatlas_federated_database_instance.test"
72
75
orgID = os .Getenv ("MONGODB_ATLAS_ORG_ID" )
73
76
projectName = acc .RandomProjectName ()
74
77
name = acc .RandomName ()
@@ -103,28 +106,34 @@ func TestAccFederatedDatabaseInstance_s3bucket(t *testing.T) {
103
106
104
107
func TestAccFederatedDatabaseInstance_azureCloudProviderConfig (t * testing.T ) {
105
108
var (
106
- resourceName = "mongodbatlas_federated_database_instance.test"
107
109
projectID = acc .ProjectIDExecution (t )
108
110
name = acc .RandomName ()
109
111
atlasAzureAppID = os .Getenv ("AZURE_ATLAS_APP_ID" )
110
112
servicePrincipalID = os .Getenv ("AZURE_SERVICE_PRINCIPAL_ID" )
111
113
tenantID = os .Getenv ("AZURE_TENANT_ID" )
112
114
)
113
115
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
+
114
121
resource .ParallelTest (t , resource.TestCase {
115
122
PreCheck : func () { acc .PreCheckCloudProviderAccessAzure (t ) },
116
123
ProtoV6ProviderFactories : acc .TestAccProviderV6Factories ,
117
124
CheckDestroy : acc .CheckDestroyFederatedDatabaseInstance ,
118
125
Steps : []resource.TestStep {
119
126
{
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 ... ,
128
137
),
129
138
},
130
139
{
@@ -145,7 +154,6 @@ func TestAccFederatedDatabaseInstance_atlasCluster(t *testing.T) {
145
154
clusterRequest = acc.ClusterRequest {
146
155
ReplicationSpecs : specs ,
147
156
}
148
- resourceName = "mongodbatlas_federated_database_instance.test"
149
157
name = acc .RandomName ()
150
158
clusterInfo = acc .GetClusterInfo (t , & clusterRequest )
151
159
projectID = clusterInfo .ProjectID
@@ -383,7 +391,6 @@ resource "mongodbatlas_federated_database_instance" "test" {
383
391
}
384
392
}
385
393
386
-
387
394
storage_databases {
388
395
name = "VirtualDatabase0"
389
396
collections {
@@ -432,29 +439,18 @@ resource "mongodbatlas_federated_database_instance" "test" {
432
439
` , name , testS3Bucket )
433
440
}
434
441
435
- func configAzureCloudProvider (name , projectID , atlasAzureAppID , servicePrincipalID , tenantID string ) string {
442
+ func configAzureCloudProvider (projectID , name , atlasAzureAppID , servicePrincipalID , tenantID string ) string {
436
443
azureCloudProviderAccess := acc .ConfigSetupAzure (projectID , atlasAzureAppID , servicePrincipalID , tenantID )
437
444
438
445
return azureCloudProviderAccess + fmt .Sprintf (`
439
446
440
447
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
+
444
451
cloud_provider_config {
445
452
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
458
454
}
459
455
}
460
456
@@ -465,12 +461,41 @@ resource "mongodbatlas_federated_database_instance" "test" {
465
461
data_sources {
466
462
collection = "listingsAndReviews"
467
463
database = "sample_airbnb"
468
- store_name = "azure_store "
464
+ store_name = "ClusterTest "
469
465
}
470
466
}
471
467
}
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
+ }
472
478
}
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
474
499
}
475
500
476
501
func configFirstSteps (federatedInstanceName , projectName , orgID string ) string {
0 commit comments