Skip to content

Commit defaa46

Browse files
authored
SIGN-36 Conformance tests on migrated resources (#377)
* SIGN-36 Conformance tests * Adapted logic to fit new testing pattern
1 parent eb87ef2 commit defaa46

3 files changed

Lines changed: 169 additions & 119 deletions

File tree

pkg/framework/objects/bigquery_credential/resource_acceptance_test.go

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,59 @@ import (
66
"strings"
77
"testing"
88

9+
"github.com/dbt-labs/terraform-provider-dbtcloud/pkg/framework/acctest_config"
910
"github.com/dbt-labs/terraform-provider-dbtcloud/pkg/framework/acctest_helper"
1011
"github.com/dbt-labs/terraform-provider-dbtcloud/pkg/helper"
1112
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
1213
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1314
"github.com/hashicorp/terraform-plugin-testing/terraform"
1415
)
1516

16-
func TestAccDbtCloudBigQueryCredentialResource(t *testing.T) {
17+
var projectName = strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
18+
var dataset = strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
19+
20+
var createCredentialTestStep = resource.TestStep{
21+
Config: testAccDbtCloudBigQueryCredentialResourceBasicConfig(projectName, dataset),
22+
Check: resource.ComposeTestCheckFunc(
23+
testAccCheckDbtCloudBigQueryCredentialExists(
24+
"dbtcloud_bigquery_credential.test_credential",
25+
),
26+
resource.TestCheckResourceAttr(
27+
"dbtcloud_bigquery_credential.test_credential",
28+
"dataset",
29+
dataset,
30+
),
31+
),
32+
}
1733

18-
projectName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
19-
dataset := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
34+
func TestAccDbtCloudBigQueryCredentialResource(t *testing.T) {
35+
var importStateTestStep = resource.TestStep{
36+
ResourceName: "dbtcloud_bigquery_credential.test_credential",
37+
ImportState: true,
38+
ImportStateVerify: true,
39+
ImportStateVerifyIgnore: []string{"password"},
40+
}
2041

2142
resource.Test(t, resource.TestCase{
2243
PreCheck: func() { acctest_helper.TestAccPreCheck(t) },
2344
ProtoV6ProviderFactories: acctest_helper.TestAccProtoV6ProviderFactories,
2445
CheckDestroy: testAccCheckDbtCloudBigQueryCredentialDestroy,
2546
Steps: []resource.TestStep{
26-
{
27-
Config: testAccDbtCloudBigQueryCredentialResourceBasicConfig(projectName, dataset),
28-
Check: resource.ComposeTestCheckFunc(
29-
testAccCheckDbtCloudBigQueryCredentialExists(
30-
"dbtcloud_bigquery_credential.test_credential",
31-
),
32-
resource.TestCheckResourceAttr(
33-
"dbtcloud_bigquery_credential.test_credential",
34-
"dataset",
35-
dataset,
36-
),
37-
),
38-
},
47+
createCredentialTestStep,
3948
// RENAME
4049
// MODIFY
41-
// IMPORT
42-
{
43-
ResourceName: "dbtcloud_bigquery_credential.test_credential",
44-
ImportState: true,
45-
ImportStateVerify: true,
46-
ImportStateVerifyIgnore: []string{"password"},
47-
},
50+
importStateTestStep,
51+
},
52+
})
53+
}
54+
55+
func TestConfDbtCloudBigQueryCredentialResource(t *testing.T) {
56+
resource.Test(t, resource.TestCase{
57+
PreCheck: func() { acctest_helper.TestAccPreCheck(t) },
58+
CheckDestroy: testAccCheckDbtCloudBigQueryCredentialDestroy,
59+
Steps: []resource.TestStep{
60+
acctest_helper.MakeExternalProviderTestStep(createCredentialTestStep, acctest_config.LAST_VERSION_BEFORE_FRAMEWORK_MIGRATION),
61+
acctest_helper.MakeCurrentProviderNoOpTestStep(createCredentialTestStep),
4862
},
4963
})
5064
}

pkg/framework/objects/postgres_credential/resource_acceptance_test.go

Lines changed: 60 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,67 +6,82 @@ import (
66
"strings"
77
"testing"
88

9+
"github.com/dbt-labs/terraform-provider-dbtcloud/pkg/framework/acctest_config"
910
"github.com/dbt-labs/terraform-provider-dbtcloud/pkg/framework/acctest_helper"
1011
"github.com/dbt-labs/terraform-provider-dbtcloud/pkg/helper"
1112
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
1213
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1314
"github.com/hashicorp/terraform-plugin-testing/terraform"
1415
)
1516

16-
func TestAccDbtCloudPostgresCredentialResource(t *testing.T) {
17+
var projectName = strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
18+
var default_schema = strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
19+
var username = strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
20+
var password = strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
21+
22+
var createCredentialTestStep = resource.TestStep{
23+
Config: testAccDbtCloudPostgresCredentialResourceBasicConfig(
24+
projectName,
25+
default_schema,
26+
username,
27+
password,
28+
),
29+
Check: resource.ComposeTestCheckFunc(
30+
testAccCheckDbtCloudPostgresCredentialExists(
31+
"dbtcloud_postgres_credential.test_credential",
32+
),
33+
resource.TestCheckResourceAttr(
34+
"dbtcloud_postgres_credential.test_credential",
35+
"default_schema",
36+
default_schema,
37+
),
38+
resource.TestCheckResourceAttr(
39+
"dbtcloud_postgres_credential.test_credential",
40+
"username",
41+
username,
42+
),
43+
resource.TestCheckResourceAttr(
44+
"dbtcloud_postgres_credential.test_credential",
45+
"target_name",
46+
"default",
47+
),
48+
resource.TestCheckResourceAttr(
49+
"dbtcloud_postgres_credential.test_credential",
50+
"type",
51+
"postgres",
52+
),
53+
),
54+
}
1755

18-
projectName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
19-
default_schema := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
20-
username := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
21-
password := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha))
56+
func TestAccDbtCloudPostgresCredentialResource(t *testing.T) {
57+
var importStateTestStep = resource.TestStep{
58+
ResourceName: "dbtcloud_postgres_credential.test_credential",
59+
ImportState: true,
60+
ImportStateVerify: true,
61+
ImportStateVerifyIgnore: []string{"password"},
62+
}
2263

2364
resource.Test(t, resource.TestCase{
2465
PreCheck: func() { acctest_helper.TestAccPreCheck(t) },
2566
ProtoV6ProviderFactories: acctest_helper.TestAccProtoV6ProviderFactories,
2667
CheckDestroy: testAccCheckDbtCloudPostgresCredentialDestroy,
2768
Steps: []resource.TestStep{
28-
{
29-
Config: testAccDbtCloudPostgresCredentialResourceBasicConfig(
30-
projectName,
31-
default_schema,
32-
username,
33-
password,
34-
),
35-
Check: resource.ComposeTestCheckFunc(
36-
testAccCheckDbtCloudPostgresCredentialExists(
37-
"dbtcloud_postgres_credential.test_credential",
38-
),
39-
resource.TestCheckResourceAttr(
40-
"dbtcloud_postgres_credential.test_credential",
41-
"default_schema",
42-
default_schema,
43-
),
44-
resource.TestCheckResourceAttr(
45-
"dbtcloud_postgres_credential.test_credential",
46-
"username",
47-
username,
48-
),
49-
resource.TestCheckResourceAttr(
50-
"dbtcloud_postgres_credential.test_credential",
51-
"target_name",
52-
"default",
53-
),
54-
resource.TestCheckResourceAttr(
55-
"dbtcloud_postgres_credential.test_credential",
56-
"type",
57-
"postgres",
58-
),
59-
),
60-
},
69+
createCredentialTestStep,
6170
// RENAME
6271
// MODIFY
63-
// IMPORT
64-
{
65-
ResourceName: "dbtcloud_postgres_credential.test_credential",
66-
ImportState: true,
67-
ImportStateVerify: true,
68-
ImportStateVerifyIgnore: []string{"password"},
69-
},
72+
importStateTestStep,
73+
},
74+
})
75+
76+
}
77+
78+
func TestConfDbtCloudPostgresCredentialResource(t *testing.T) {
79+
resource.Test(t, resource.TestCase{
80+
PreCheck: func() { acctest_helper.TestAccPreCheck(t) },
81+
CheckDestroy: testAccCheckDbtCloudPostgresCredentialDestroy,
82+
Steps: []resource.TestStep{
83+
acctest_helper.MakeExternalProviderTestStep(createCredentialTestStep, acctest_config.LAST_VERSION_BEFORE_FRAMEWORK_MIGRATION),
84+
acctest_helper.MakeCurrentProviderNoOpTestStep(createCredentialTestStep),
7085
},
7186
})
7287
}

pkg/framework/objects/user_groups/resource_acceptance_test.go

Lines changed: 72 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -12,62 +12,83 @@ import (
1212
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1313
)
1414

15-
func TestAccDbtCloudUserGroupsResource(t *testing.T) {
15+
var userID = acctest_config.AcceptanceTestConfig.DbtCloudUserId
16+
var groupIDs = fmt.Sprintf("[%s]", acctest_config.AcceptanceTestConfig.DbtCloudGroupIds)
17+
var GroupName = acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)
18+
19+
var addRoleTestStep = resource.TestStep{
20+
Config: testAccDbtCloudUserGroupsResourceAddRole(userID, GroupName, groupIDs),
21+
Check: resource.ComposeTestCheckFunc(
22+
resource.TestCheckResourceAttr(
23+
"dbtcloud_user_groups.test_user_groups",
24+
"user_id",
25+
strconv.Itoa(userID),
26+
),
27+
resource.TestCheckResourceAttrSet(
28+
"dbtcloud_user_groups.test_user_groups",
29+
"group_ids.0",
30+
),
31+
resource.TestCheckResourceAttrSet(
32+
"dbtcloud_user_groups.test_user_groups",
33+
"group_ids.3",
34+
),
35+
),
36+
}
37+
38+
var removeRoleTestStep = resource.TestStep{
39+
Config: testAccDbtCloudUserGroupsResourceRemoveRole(userID, GroupName, groupIDs),
40+
Check: resource.ComposeTestCheckFunc(
41+
resource.TestCheckResourceAttr(
42+
"dbtcloud_user_groups.test_user_groups",
43+
"user_id",
44+
strconv.Itoa(userID),
45+
),
46+
resource.TestCheckResourceAttrSet(
47+
"dbtcloud_user_groups.test_user_groups",
48+
"group_ids.0",
49+
),
50+
//we should only have 3 groups now that we check that there is no item at index 3 (starts at 0)
51+
// TODO: This test depends on the number of groups defined in the acceptance test config, which is not guaranteed.
52+
resource.TestCheckNoResourceAttr(
53+
"dbtcloud_user_groups.test_user_groups",
54+
"group_ids.3",
55+
),
56+
),
57+
}
1658

17-
userID := acctest_config.AcceptanceTestConfig.DbtCloudUserId
18-
groupIDs := fmt.Sprintf("[%s]", acctest_config.AcceptanceTestConfig.DbtCloudGroupIds)
19-
GroupName := acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)
59+
func TestAccDbtCloudUserGroupsResource(t *testing.T) {
60+
var importStateTestStep = resource.TestStep{
61+
ResourceName: "dbtcloud_user_groups.test_user_groups",
62+
ImportState: true,
63+
ImportStateVerify: true,
64+
ImportStateVerifyIgnore: []string{},
65+
}
2066

2167
resource.Test(t, resource.TestCase{
2268
PreCheck: func() { acctest_helper.TestAccPreCheck(t) },
2369
ProtoV6ProviderFactories: acctest_helper.TestAccProtoV6ProviderFactories,
2470
Steps: []resource.TestStep{
25-
{
26-
Config: testAccDbtCloudUserGroupsResourceAddRole(userID, GroupName, groupIDs),
27-
Check: resource.ComposeTestCheckFunc(
28-
resource.TestCheckResourceAttr(
29-
"dbtcloud_user_groups.test_user_groups",
30-
"user_id",
31-
strconv.Itoa(userID),
32-
),
33-
resource.TestCheckResourceAttrSet(
34-
"dbtcloud_user_groups.test_user_groups",
35-
"group_ids.0",
36-
),
37-
resource.TestCheckResourceAttrSet(
38-
"dbtcloud_user_groups.test_user_groups",
39-
"group_ids.3",
40-
),
41-
),
42-
},
43-
//MODIFY
44-
{
45-
Config: testAccDbtCloudUserGroupsResourceRemoveRole(userID, GroupName, groupIDs),
46-
Check: resource.ComposeTestCheckFunc(
47-
resource.TestCheckResourceAttr(
48-
"dbtcloud_user_groups.test_user_groups",
49-
"user_id",
50-
strconv.Itoa(userID),
51-
),
52-
resource.TestCheckResourceAttrSet(
53-
"dbtcloud_user_groups.test_user_groups",
54-
"group_ids.0",
55-
),
56-
//we should only have 3 groups now that we check that there is no item at index 3 (starts at 0)
57-
// TODO: This test depends on the number of groups defined in the acceptance test config, which is not guaranteed.
58-
resource.TestCheckNoResourceAttr(
59-
"dbtcloud_user_groups.test_user_groups",
60-
"group_ids.3",
61-
),
62-
),
63-
},
64-
// IMPORT
65-
{
66-
ResourceName: "dbtcloud_user_groups.test_user_groups",
67-
ImportState: true,
68-
ImportStateVerify: true,
69-
ImportStateVerifyIgnore: []string{},
70-
},
71+
addRoleTestStep,
72+
removeRoleTestStep,
73+
importStateTestStep,
74+
},
75+
})
76+
}
77+
78+
func TestConfDbtCloudUserGroupsResource(t *testing.T) {
79+
resource.Test(t, resource.TestCase{
80+
PreCheck: func() { acctest_helper.TestAccPreCheck(t) },
81+
Steps: []resource.TestStep{
82+
acctest_helper.MakeExternalProviderTestStep(addRoleTestStep, acctest_config.LAST_VERSION_BEFORE_FRAMEWORK_MIGRATION),
83+
acctest_helper.MakeCurrentProviderNoOpTestStep(addRoleTestStep),
84+
},
85+
})
86+
87+
resource.Test(t, resource.TestCase{
88+
PreCheck: func() { acctest_helper.TestAccPreCheck(t) },
89+
Steps: []resource.TestStep{
90+
acctest_helper.MakeExternalProviderTestStep(removeRoleTestStep, acctest_config.LAST_VERSION_BEFORE_FRAMEWORK_MIGRATION),
91+
acctest_helper.MakeCurrentProviderNoOpTestStep(removeRoleTestStep),
7192
},
7293
})
7394
}
@@ -117,4 +138,4 @@ resource "dbtcloud_user_groups" "test_user_groups" {
117138
group_ids = %s
118139
}
119140
`, groupName, userID, groupIDs)
120-
}
141+
}

0 commit comments

Comments
 (0)