Skip to content

Commit

Permalink
test: test org datasource
Browse files Browse the repository at this point in the history
test: test org datasource
  • Loading branch information
stebenz authored Aug 18, 2023
2 parents 63a3289 + 5c8e4df commit 12b74ad
Show file tree
Hide file tree
Showing 3 changed files with 129 additions and 4 deletions.
14 changes: 10 additions & 4 deletions zitadel/v2/helper/test_utils/base_frame.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func NewBaseTestFrame(ctx context.Context, resourceType, domain string, jwtProfi
provider "zitadel" {
domain = "%s"
insecure = "%t"
port = "%s"
port = "%s"
jwt_profile_json = <<KEY
%s
KEY
Expand All @@ -59,8 +59,9 @@ KEY
UniqueResourcesID: uniqueID,
TerraformName: terraformName,
}
_, v5 := zitadelProvider.ResourcesMap[resourceType]
if v5 {
_, v5Resource := zitadelProvider.ResourcesMap[resourceType]
_, v5Datasource := zitadelProvider.DataSourcesMap[resourceType]
if v5Resource || v5Datasource {
frame.v5ProviderFactories = map[string]func() (tfprotov5.ProviderServer, error){"zitadel": func() (tfprotov5.ProviderServer, error) {
return zitadelProvider.GRPCProvider(), nil
}}
Expand All @@ -73,5 +74,10 @@ KEY
}

func (b *BaseTestFrame) State(state *terraform.State) *terraform.InstanceState {
return state.RootModule().Resources[b.TerraformName].Primary
resources := state.RootModule().Resources
resource := resources[b.TerraformName]
if resource != nil {
return resource.Primary
}
return resources["data."+b.TerraformName].Primary
}
32 changes: 32 additions & 0 deletions zitadel/v2/helper/test_utils/datasourcetest.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package test_utils

import (
"fmt"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func RunDatasourceTest(
t *testing.T,
frame BaseTestFrame,
config string,
awaitRemoteResource resource.TestCheckFunc,
expectProperties map[string]string,
) {
var checks []resource.TestCheckFunc
if awaitRemoteResource != nil {
checks = append(checks, CheckAMinute(awaitRemoteResource))
}
for k, v := range expectProperties {
checks = append(checks, resource.TestCheckResourceAttr("data."+frame.TerraformName, k, v))
}
resource.ParallelTest(t, resource.TestCase{
Steps: []resource.TestStep{{
Config: fmt.Sprintf("%s\n%s", frame.ProviderSnippet, config),
Check: resource.ComposeAggregateTestCheckFunc(checks...),
}},
ProtoV6ProviderFactories: frame.v6ProviderFactories,
ProtoV5ProviderFactories: frame.v5ProviderFactories,
})
}
87 changes: 87 additions & 0 deletions zitadel/v2/org/datasource_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package org_test

import (
"fmt"
"testing"

"github.com/zitadel/terraform-provider-zitadel/zitadel/v2/helper/test_utils"
)

func TestAccOrgDatasource_ID(t *testing.T) {
datasourceName := "zitadel_org"
frame, err := test_utils.NewOrgTestFrame(datasourceName)
if err != nil {
t.Fatalf("setting up test context failed: %v", err)
}
orgName := "org_datasource_" + frame.UniqueResourcesID
otherFrame, err := frame.AnotherOrg(orgName)
if err != nil {
t.Fatalf("could not switch to another org: %v", err)
}
test_utils.RunDatasourceTest(
t,
otherFrame.BaseTestFrame,
fmt.Sprintf(`
data "%s" "%s" {
id = "%s"
}
`, datasourceName, otherFrame.UniqueResourcesID, otherFrame.OrgID),
nil,
map[string]string{
"id": otherFrame.OrgID,
"name": orgName,
"state": "ORG_STATE_ACTIVE",
},
)
}

func TestAccOrgDatasources_ID_Name_Match(t *testing.T) {
datasourceName := "zitadel_orgs"
frame, err := test_utils.NewOrgTestFrame(datasourceName)
if err != nil {
t.Fatalf("setting up test context failed: %v", err)
}
orgName := "org_datasource_" + frame.UniqueResourcesID
otherFrame, err := frame.AnotherOrg(orgName)
if err != nil {
t.Fatalf("could not switch to another org: %v", err)
}
test_utils.RunDatasourceTest(
t,
otherFrame.BaseTestFrame,
fmt.Sprintf(`
data "%s" "%s" {
name = "%s"
}
`, datasourceName, otherFrame.UniqueResourcesID, orgName),
nil,
map[string]string{
"ids.0": otherFrame.OrgID,
"ids.#": "1",
},
)
}

func TestAccOrgDatasources_ID_Name_Mismatch(t *testing.T) {
datasourceName := "zitadel_orgs"
frame, err := test_utils.NewOrgTestFrame(datasourceName)
if err != nil {
t.Fatalf("setting up test context failed: %v", err)
}
orgName := "org_datasource_" + frame.UniqueResourcesID
otherFrame, err := frame.AnotherOrg(orgName)
if err != nil {
t.Fatalf("could not switch to another org: %v", err)
}
test_utils.RunDatasourceTest(
t,
otherFrame.BaseTestFrame,
fmt.Sprintf(`
data "%s" "%s" {
name = "mismatching_org_name"
}
`, datasourceName, otherFrame.UniqueResourcesID),
nil,
map[string]string{"ids.#": "0"},
)
}

0 comments on commit 12b74ad

Please sign in to comment.