diff --git a/pkg/acceptance/helpers/common.go b/pkg/acceptance/helpers/common.go new file mode 100644 index 0000000000..a6057b1730 --- /dev/null +++ b/pkg/acceptance/helpers/common.go @@ -0,0 +1,21 @@ +package helpers + +import ( + "context" + "fmt" + "log" + + "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/sdk" +) + +func EnsureQuotedIdentifiersIgnoreCaseIsSetToFalse(client *sdk.Client, ctx context.Context) error { + log.Printf("[DEBUG] Making sure QUOTED_IDENTIFIERS_IGNORE_CASE parameter is set correctly") + param, err := client.Parameters.ShowAccountParameter(ctx, sdk.AccountParameterQuotedIdentifiersIgnoreCase) + if err != nil { + return fmt.Errorf("checking QUOTED_IDENTIFIERS_IGNORE_CASE resulted in error: %w", err) + } + if param.Value != "false" { + return fmt.Errorf("parameter QUOTED_IDENTIFIERS_IGNORE_CASE has value %s, expected: false", param.Value) + } + return nil +} diff --git a/pkg/acceptance/testing.go b/pkg/acceptance/testing.go index 8faf32376f..c826515dff 100644 --- a/pkg/acceptance/testing.go +++ b/pkg/acceptance/testing.go @@ -148,6 +148,14 @@ func TestAccPreCheck(t *testing.T) { if err := atc.secondaryClient.Warehouses.Create(ctx, warehouseId, &sdk.CreateWarehouseOptions{IfNotExists: sdk.Bool(true)}); err != nil { t.Fatal(err) } + + if err := helpers.EnsureQuotedIdentifiersIgnoreCaseIsSetToFalse(atc.client, ctx); err != nil { + t.Fatal(err) + } + + if err := helpers.EnsureQuotedIdentifiersIgnoreCaseIsSetToFalse(atc.secondaryClient, ctx); err != nil { + t.Fatal(err) + } }) } diff --git a/pkg/datasources/parameters_acceptance_test.go b/pkg/datasources/parameters_acceptance_test.go index 374247a65c..e510fdda8f 100644 --- a/pkg/datasources/parameters_acceptance_test.go +++ b/pkg/datasources/parameters_acceptance_test.go @@ -95,7 +95,10 @@ func TestAcc_Parameters_TransactionAbortOnErrorCanBeSet(t *testing.T) { } // proves https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2353 is fixed +// done on user, to not interfere with other parallel tests on the same account func TestAcc_Parameters_QuotedIdentifiersIgnoreCaseCanBeSet(t *testing.T) { + userId := acc.TestClient().Ids.RandomAccountObjectIdentifier() + resource.Test(t, resource.TestCase{ ProtoV6ProviderFactories: acc.TestAccProtoV6ProviderFactories, PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -104,15 +107,25 @@ func TestAcc_Parameters_QuotedIdentifiersIgnoreCaseCanBeSet(t *testing.T) { }, Steps: []resource.TestStep{ { - Config: `resource "snowflake_account_parameter" "test" { - key = "QUOTED_IDENTIFIERS_IGNORE_CASE" - value = "true" - }`, + Config: sessionParameterOnUser(userId.Name()), }, }, }) } +func sessionParameterOnUser(userName string) string { + return fmt.Sprintf( + ` + resource "snowflake_user" "u" { + name = "%s" + } + resource "snowflake_session_parameter" "test" { + key = "QUOTED_IDENTIFIERS_IGNORE_CASE" + value = "true" + user = snowflake_user.u.name + }`, userName) +} + func parametersConfigOnAccount() string { return `data "snowflake_parameters" "p" { parameter_type = "ACCOUNT" diff --git a/pkg/sdk/testint/setup_test.go b/pkg/sdk/testint/setup_test.go index eaeef1e63c..c08be27994 100644 --- a/pkg/sdk/testint/setup_test.go +++ b/pkg/sdk/testint/setup_test.go @@ -181,6 +181,15 @@ func (itc *integrationTestContext) initialize() error { itc.testClient = helpers.NewTestClient(c, TestDatabaseName, TestSchemaName, TestWarehouseName, random.IntegrationTestsSuffix) itc.secondaryTestClient = helpers.NewTestClient(secondaryClient, TestDatabaseName, TestSchemaName, TestWarehouseName, random.IntegrationTestsSuffix) + err = helpers.EnsureQuotedIdentifiersIgnoreCaseIsSetToFalse(itc.client, itc.ctx) + if err != nil { + return err + } + err = helpers.EnsureQuotedIdentifiersIgnoreCaseIsSetToFalse(itc.secondaryClient, itc.secondaryCtx) + if err != nil { + return err + } + return nil }