From 9e0ac2829e899e1eae5e5b68ab18a30ff317db3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Cie=C5=9Blak?= Date: Thu, 7 Dec 2023 11:11:34 +0100 Subject: [PATCH] wip --- pkg/resources/schema_acceptance_test.go | 80 +++++++++++-------- .../testdata/TestAcc_Schema_Rename/test.tf | 5 ++ .../TestAcc_Schema_Rename/variables.tf | 11 +++ pkg/sdk/schemas.go | 8 +- 4 files changed, 67 insertions(+), 37 deletions(-) create mode 100644 pkg/resources/testdata/TestAcc_Schema_Rename/test.tf create mode 100644 pkg/resources/testdata/TestAcc_Schema_Rename/variables.tf diff --git a/pkg/resources/schema_acceptance_test.go b/pkg/resources/schema_acceptance_test.go index 9b10d4fad31..d285e596dba 100644 --- a/pkg/resources/schema_acceptance_test.go +++ b/pkg/resources/schema_acceptance_test.go @@ -47,43 +47,57 @@ func TestAcc_Schema(t *testing.T) { }) } -//func TestAcc_SchemaRename(t *testing.T) { -// oldSchemaName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)) -// newSchemaName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)) -// -// resource.ParallelTest(t, resource.TestCase{ -// Providers: acc.TestAccProviders(), -// PreCheck: func() { acc.TestAccPreCheck(t) }, -// CheckDestroy: nil, -// Steps: []resource.TestStep{ -//, { -// Config: schemaConfig(oldSchemaName, acc.TestDatabaseName), -// Check: resource.ComposeTestCheckFunc( -// resource.TestCheckResourceAttr("snowflake_schema.test", "name", oldSchemaName), -// resource.TestCheckResourceAttr("snowflake_schema.test", "database", acc.TestDatabaseName), -// resource.TestCheckResourceAttr("snowflake_schema.test", "comment", "Terraform acceptance test"), -// checkBool("snowflake_schema.test", "is_transient", false), // this is from user_acceptance_test.go -// checkBool("snowflake_schema.test", "is_managed", false), -// ), -// }, -// { -// Config: schemaConfig(newSchemaName, acc.TestDatabaseName), -// Check: resource.ComposeTestCheckFunc( -// resource.TestCheckResourceAttr("snowflake_schema.test", "name", newSchemaName), -// resource.TestCheckResourceAttr("snowflake_schema.test", "database", acc.TestDatabaseName), -// resource.TestCheckResourceAttr("snowflake_schema.test", "comment", "Terraform acceptance test"), -// checkBool("snowflake_schema.test", "is_transient", false), // this is from user_acceptance_test.go -// checkBool("snowflake_schema.test", "is_managed", false), -// ), -// }, -// }, -// }) -//} +func TestAcc_Schema_Rename(t *testing.T) { + oldSchemaName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)) + newSchemaName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)) + comment := "Terraform acceptance test" + + resource.Test(t, resource.TestCase{ + ProtoV6ProviderFactories: acc.TestAccProtoV6ProviderFactories, + PreCheck: func() { acc.TestAccPreCheck(t) }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.RequireAbove(tfversion.Version1_5_0), + }, + CheckDestroy: testAccCheckSchemaDestroy, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.TestNameDirectory(), + ConfigVariables: map[string]config.Variable{ + "name": config.StringVariable(oldSchemaName), + "database": config.StringVariable(acc.TestDatabaseName), + "comment": config.StringVariable(comment), + }, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("snowflake_schema.test", "name", oldSchemaName), + resource.TestCheckResourceAttr("snowflake_schema.test", "database", acc.TestDatabaseName), + resource.TestCheckResourceAttr("snowflake_schema.test", "comment", comment), + checkBool("snowflake_schema.test", "is_transient", false), + checkBool("snowflake_schema.test", "is_managed", false), + ), + }, + { + ConfigDirectory: config.TestNameDirectory(), + ConfigVariables: map[string]config.Variable{ + "name": config.StringVariable(newSchemaName), + "database": config.StringVariable(acc.TestDatabaseName), + "comment": config.StringVariable(comment), + }, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("snowflake_schema.test", "name", newSchemaName), + resource.TestCheckResourceAttr("snowflake_schema.test", "database", acc.TestDatabaseName), + resource.TestCheckResourceAttr("snowflake_schema.test", "comment", comment), + checkBool("snowflake_schema.test", "is_transient", false), + checkBool("snowflake_schema.test", "is_managed", false), + ), + }, + }, + }) +} // TestAcc_Schema_TwoSchemasWithTheSameNameOnDifferentDatabases proves https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2209 issue. func TestAcc_Schema_TwoSchemasWithTheSameNameOnDifferentDatabases(t *testing.T) { name := "test_schema" - newDatabaseName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)) + newDatabaseName := "SELDQBXEKC" resource.Test(t, resource.TestCase{ ProtoV6ProviderFactories: acc.TestAccProtoV6ProviderFactories, diff --git a/pkg/resources/testdata/TestAcc_Schema_Rename/test.tf b/pkg/resources/testdata/TestAcc_Schema_Rename/test.tf new file mode 100644 index 00000000000..5f8ca0abfc8 --- /dev/null +++ b/pkg/resources/testdata/TestAcc_Schema_Rename/test.tf @@ -0,0 +1,5 @@ +resource "snowflake_schema" "test" { + name = var.name + database = var.database + comment = var.comment +} \ No newline at end of file diff --git a/pkg/resources/testdata/TestAcc_Schema_Rename/variables.tf b/pkg/resources/testdata/TestAcc_Schema_Rename/variables.tf new file mode 100644 index 00000000000..0c8231993a7 --- /dev/null +++ b/pkg/resources/testdata/TestAcc_Schema_Rename/variables.tf @@ -0,0 +1,11 @@ +variable "name" { + type = string +} + +variable "database" { + type = string +} + +variable "comment" { + type = string +} diff --git a/pkg/sdk/schemas.go b/pkg/sdk/schemas.go index 6c9a98a9cee..57fbf1c18d7 100644 --- a/pkg/sdk/schemas.go +++ b/pkg/sdk/schemas.go @@ -389,10 +389,10 @@ func (v *schemas) Show(ctx context.Context, opts *ShowSchemaOptions) ([]Schema, func (v *schemas) ShowByID(ctx context.Context, id DatabaseObjectIdentifier) (*Schema, error) { schemas, err := v.client.Schemas.Show(ctx, &ShowSchemaOptions{ - //In: &SchemaIn{ - // Database: Bool(true), - // Name: NewAccountObjectIdentifier(id.DatabaseName()), - //}, + In: &SchemaIn{ + Database: Bool(true), + Name: NewAccountObjectIdentifier(id.DatabaseName()), + }, Like: &Like{ Pattern: String(id.Name()), },