Skip to content

Commit 4465281

Browse files
Address review comments
1 parent 3857822 commit 4465281

10 files changed

+148
-86
lines changed

pkg/acceptance/bettertestspoc/assert/objectassert/security_integration_snowflake_ext.go

Lines changed: 0 additions & 13 deletions
This file was deleted.

pkg/acceptance/bettertestspoc/assert/resourceshowoutputassert/security_integration_show_output_ext.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,9 @@ package resourceshowoutputassert
22

33
import (
44
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/assert"
5-
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/testenvs"
65
)
76

87
func (s *SecurityIntegrationShowOutputAssert) HasCreatedOnNotEmpty() *SecurityIntegrationShowOutputAssert {
98
s.AddAssertion(assert.ValuePresent("show_output.0.created_on"))
109
return s
1110
}
12-
13-
func (s *SecurityIntegrationShowOutputAssert) HasEnabledSnowflakeDefault() *SecurityIntegrationShowOutputAssert {
14-
env := testenvs.GetSnowflakeEnvironmentWithProdDefault()
15-
enabled := false
16-
if env == testenvs.SnowflakeNonProdEnvironment {
17-
enabled = true
18-
}
19-
s.AddAssertion(assert.ResourceShowOutputBoolValueSet("enabled", enabled))
20-
return s
21-
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package snowflakedefaults
2+
3+
func EnabledValueForSnowflakeOauthSecurityIntegration() bool {
4+
if getSnowflakeEnvironmentWithProdDefault() == SnowflakeNonProdEnvironment {
5+
return true
6+
}
7+
return false
8+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package snowflakedefaults
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"os"
7+
"slices"
8+
"strings"
9+
10+
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/testenvs"
11+
)
12+
13+
type SnowflakeEnvironment string
14+
15+
const (
16+
SnowflakeProdEnvironment SnowflakeEnvironment = "PROD"
17+
SnowflakeNonProdEnvironment SnowflakeEnvironment = "NON_PROD"
18+
)
19+
20+
var allSnowflakeEnvironments = []SnowflakeEnvironment{
21+
SnowflakeProdEnvironment,
22+
SnowflakeNonProdEnvironment,
23+
}
24+
25+
func parseSnowflakeEnvironment(environment string) (SnowflakeEnvironment, error) {
26+
snowflakeEnvironment := SnowflakeEnvironment(strings.ToUpper(environment))
27+
if slices.Contains(allSnowflakeEnvironments, snowflakeEnvironment) {
28+
return snowflakeEnvironment, nil
29+
}
30+
return "", fmt.Errorf("invalid Snowflake environment: %s, valid values are: %v", environment, allSnowflakeEnvironments)
31+
}
32+
33+
func getSnowflakeEnvironmentWithProdDefault() SnowflakeEnvironment {
34+
env := os.Getenv(string(testenvs.SnowflakeTestingEnvironment))
35+
if env == "" {
36+
log.Printf("[DEBUG] Snowflake environment variable %s not set, returning default PROD environment", testenvs.SnowflakeTestingEnvironment)
37+
return SnowflakeProdEnvironment
38+
}
39+
snowflakeEnvironment, err := parseSnowflakeEnvironment(env)
40+
if err != nil {
41+
log.Printf("[DEBUG] Failed to parse Snowflake environment variable (%s), returning default PROD environment, err = %s", testenvs.SnowflakeTestingEnvironment, err)
42+
return SnowflakeProdEnvironment
43+
}
44+
return snowflakeEnvironment
45+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package snowflakedefaults
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
)
8+
9+
func TestParseSnowflakeEnvironment(t *testing.T) {
10+
t.Run("valid values", func(t *testing.T) {
11+
testCases := map[string]struct {
12+
input string
13+
expected SnowflakeEnvironment
14+
}{
15+
"exact PROD": {
16+
input: string(SnowflakeProdEnvironment),
17+
expected: SnowflakeProdEnvironment,
18+
},
19+
"lowercase prod": {
20+
input: "prod",
21+
expected: SnowflakeProdEnvironment,
22+
},
23+
"exact NON_PROD": {
24+
input: string(SnowflakeNonProdEnvironment),
25+
expected: SnowflakeNonProdEnvironment,
26+
},
27+
"lowercase non_prod": {
28+
input: "non_prod",
29+
expected: SnowflakeNonProdEnvironment,
30+
},
31+
"mixed case prod": {
32+
input: "PrOd",
33+
expected: SnowflakeProdEnvironment,
34+
},
35+
}
36+
37+
for name, tc := range testCases {
38+
tc := tc
39+
t.Run(name, func(t *testing.T) {
40+
actual, err := parseSnowflakeEnvironment(tc.input)
41+
require.NoError(t, err)
42+
require.Equal(t, tc.expected, actual)
43+
})
44+
}
45+
})
46+
47+
t.Run("invalid values", func(t *testing.T) {
48+
testCases := []string{
49+
"",
50+
"dev",
51+
"prod-env",
52+
"non prod",
53+
}
54+
55+
for _, input := range testCases {
56+
input := input
57+
t.Run(input, func(t *testing.T) {
58+
t.Parallel()
59+
60+
_, err := parseSnowflakeEnvironment(input)
61+
require.Error(t, err)
62+
require.ErrorContains(t, err, "invalid Snowflake environment")
63+
})
64+
}
65+
})
66+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package snowflakedefaults
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/sdk"
7+
)
8+
9+
func StageIdentifierOutputFormatForStreamOnDirectoryTable(id sdk.SchemaObjectIdentifier) string {
10+
if getSnowflakeEnvironmentWithProdDefault() == SnowflakeNonProdEnvironment {
11+
return fmt.Sprintf(`"%s"."%s".%s`, id.DatabaseName(), id.SchemaName(), id.Name())
12+
}
13+
return id.Name()
14+
}

pkg/acceptance/testenvs/snowflake_environment.go

Lines changed: 0 additions & 39 deletions
This file was deleted.

pkg/testacc/resource_oauth_integration_for_custom_clients_acceptance_test.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ package testacc
55
import (
66
"fmt"
77
"regexp"
8+
"strconv"
89
"testing"
910

1011
accconfig "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config"
12+
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/snowflakedefaults"
1113
resourcenames "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/provider/resources"
1214

1315
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/assert"
@@ -17,7 +19,6 @@ import (
1719
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/assert/resourceshowoutputassert"
1820
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config/model"
1921
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/helpers/random"
20-
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/testenvs"
2122
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/resources"
2223
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/sdk"
2324
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
@@ -52,18 +53,15 @@ func TestAcc_OauthIntegrationForCustomClients_BasicUseCase(t *testing.T) {
5253
WithPreAuthorizedRoles(preAuthorizedRole.ID()).
5354
WithComment(comment)
5455

55-
snowflakeEnv := testenvs.GetSnowflakeEnvironmentWithProdDefault()
56-
enabledSnowflakeDefault := resources.BooleanFalse
57-
if snowflakeEnv == testenvs.SnowflakeNonProdEnvironment {
58-
enabledSnowflakeDefault = resources.BooleanTrue
59-
}
56+
enabledSnowflakeDefault := snowflakedefaults.EnabledValueForSnowflakeOauthSecurityIntegration()
57+
enabledSnowflakeDefaultString := strconv.FormatBool(enabledSnowflakeDefault)
6058

6159
assertBasic := []assert.TestCheckFuncProvider{
6260
objectassert.SecurityIntegration(t, id).
6361
HasName(id.Name()).
6462
HasIntegrationType("OAUTH - CUSTOM").
6563
HasCategory("SECURITY").
66-
HasEnabledSnowflakeDefault().
64+
HasEnabled(enabledSnowflakeDefault).
6765
HasComment(""),
6866

6967
resourceassert.OauthIntegrationForCustomClientsResource(t, basic.ResourceReference()).
@@ -91,7 +89,7 @@ func TestAcc_OauthIntegrationForCustomClients_BasicUseCase(t *testing.T) {
9189
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.#", "1")),
9290
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_client_type.0.value", "CONFIDENTIAL")),
9391
assert.Check(resource.TestCheckNoResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_redirect_uri.0.value")),
94-
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.enabled.0.value", enabledSnowflakeDefault)),
92+
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.enabled.0.value", enabledSnowflakeDefaultString)),
9593
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_allow_non_tls_redirect_uri.0.value", resources.BooleanFalse)),
9694
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_enforce_pkce.0.value", resources.BooleanFalse)),
9795
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_use_secondary_roles.0.value", "NONE")),

pkg/testacc/resource_oauth_integration_for_partner_applications_acceptance_test.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package testacc
88
import (
99
"fmt"
1010
"regexp"
11+
"strconv"
1112
"strings"
1213
"testing"
1314

@@ -25,7 +26,7 @@ import (
2526
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/helpers/random"
2627
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/importchecks"
2728
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/planchecks"
28-
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/testenvs"
29+
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/snowflakedefaults"
2930
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/datasources"
3031
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/internal/snowflakeroles"
3132
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/provider/resources"
@@ -50,18 +51,15 @@ func TestAcc_OauthIntegrationForPartnerApplications_BasicUseCase(t *testing.T) {
5051
WithOauthUseSecondaryRoles(string(sdk.OauthSecurityIntegrationUseSecondaryRolesImplicit)).
5152
WithComment(comment)
5253

53-
snowflakeEnv := testenvs.GetSnowflakeEnvironmentWithProdDefault()
54-
enabledSnowflakeDefault := r.BooleanFalse
55-
if snowflakeEnv == testenvs.SnowflakeNonProdEnvironment {
56-
enabledSnowflakeDefault = r.BooleanTrue
57-
}
54+
enabledSnowflakeDefault := snowflakedefaults.EnabledValueForSnowflakeOauthSecurityIntegration()
55+
enabledSnowflakeDefaultString := strconv.FormatBool(enabledSnowflakeDefault)
5856

5957
assertBasic := []assert.TestCheckFuncProvider{
6058
objectassert.SecurityIntegration(t, id).
6159
HasName(id.Name()).
6260
HasIntegrationType("OAUTH - LOOKER").
6361
HasCategory("SECURITY").
64-
HasEnabledSnowflakeDefault().
62+
HasEnabled(enabledSnowflakeDefault).
6563
HasComment(""),
6664

6765
resourceassert.OauthIntegrationForPartnerApplicationsResource(t, basic.ResourceReference()).
@@ -81,13 +79,13 @@ func TestAcc_OauthIntegrationForPartnerApplications_BasicUseCase(t *testing.T) {
8179
HasName(id.Name()).
8280
HasIntegrationType("OAUTH - LOOKER").
8381
HasCategory("SECURITY").
84-
HasEnabledSnowflakeDefault().
82+
HasEnabled(enabledSnowflakeDefault).
8583
HasComment(""),
8684

8785
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.#", "1")),
8886
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_client_type.0.value", "CONFIDENTIAL")),
8987
assert.Check(resource.TestCheckNoResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_redirect_uri.0.value")),
90-
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.enabled.0.value", enabledSnowflakeDefault)),
88+
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.enabled.0.value", enabledSnowflakeDefaultString)),
9189
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_use_secondary_roles.0.value", "NONE")),
9290
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.blocked_roles_list.0.value", "ACCOUNTADMIN,SECURITYADMIN")),
9391
assert.Check(resource.TestCheckResourceAttr(basic.ResourceReference(), "describe_output.0.oauth_issue_refresh_tokens.0.value", r.BooleanTrue)),

pkg/testacc/resource_stream_on_directory_table_acceptance_test.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config"
1717
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config/model"
1818
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/helpers/random"
19-
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/testenvs"
19+
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/snowflakedefaults"
2020
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/provider/resources"
2121
"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/sdk"
2222
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
@@ -37,11 +37,7 @@ func TestAcc_StreamOnDirectoryTable_BasicUseCase(t *testing.T) {
3737
complete := model.StreamOnDirectoryTable("test", id.DatabaseName(), id.SchemaName(), id.Name(), stage.ID().FullyQualifiedName()).
3838
WithComment(comment)
3939

40-
snowflakeEnv := testenvs.GetSnowflakeEnvironmentWithProdDefault()
41-
expectedStageId := stage.ID().Name()
42-
if snowflakeEnv == testenvs.SnowflakeNonProdEnvironment {
43-
expectedStageId = fmt.Sprintf(`"%s"."%s".%s`, stage.DatabaseName, stage.SchemaName, stage.Name)
44-
}
40+
expectedStageId := snowflakedefaults.StageIdentifierOutputFormatForStreamOnDirectoryTable(stage.ID())
4541

4642
assertBasic := []assert.TestCheckFuncProvider{
4743
resourceassert.StreamOnDirectoryTableResource(t, basic.ResourceReference()).

0 commit comments

Comments
 (0)