Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: showbyid method tests #2648

Merged
merged 6 commits into from
Apr 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions pkg/sdk/event_tables_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ type EventTable struct {
OwnerRoleType string
}

func (v *EventTable) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.DatabaseName, v.SchemaName, v.Name)
}

// DescribeEventTableOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-event-table.
type DescribeEventTableOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
2 changes: 1 addition & 1 deletion pkg/sdk/event_tables_impl_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func (v *eventTables) Show(ctx context.Context, request *ShowEventTableRequest)
}

func (v *eventTables) ShowByID(ctx context.Context, id SchemaObjectIdentifier) (*EventTable, error) {
request := NewShowEventTableRequest().WithIn(&In{Database: NewAccountObjectIdentifier(id.DatabaseName())}).WithLike(&Like{String(id.Name())})
request := NewShowEventTableRequest().WithIn(&In{Schema: NewDatabaseObjectIdentifier(id.DatabaseName(), id.SchemaName())}).WithLike(&Like{String(id.Name())})
eventTables, err := v.Show(ctx, request)
if err != nil {
return nil, err
Expand Down
4 changes: 4 additions & 0 deletions pkg/sdk/external_functions_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ type ExternalFunction struct {
IsDataMetric bool
}

func (v *ExternalFunction) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.CatalogName, v.SchemaName, v.Name)
}

// DescribeExternalFunctionOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-function.
type DescribeExternalFunctionOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
4 changes: 4 additions & 0 deletions pkg/sdk/functions_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,10 @@ type Function struct {
IsMemoizable bool
}

func (v *Function) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.CatalogName, v.SchemaName, v.Name)
}

// DescribeFunctionOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-function.
type DescribeFunctionOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
2 changes: 1 addition & 1 deletion pkg/sdk/functions_impl_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (v *functions) Show(ctx context.Context, request *ShowFunctionRequest) ([]F
}

func (v *functions) ShowByID(ctx context.Context, id SchemaObjectIdentifier) (*Function, error) {
request := NewShowFunctionRequest().WithIn(&In{Database: NewAccountObjectIdentifier(id.DatabaseName())}).WithLike(&Like{String(id.Name())})
request := NewShowFunctionRequest().WithIn(&In{Schema: NewDatabaseObjectIdentifier(id.DatabaseName(), id.SchemaName())}).WithLike(&Like{String(id.Name())})
functions, err := v.Show(ctx, request)
if err != nil {
return nil, err
Expand Down
4 changes: 4 additions & 0 deletions pkg/sdk/network_rule_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ type NetworkRule struct {
OwnerRoleType string
}

func (v *NetworkRule) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.DatabaseName, v.SchemaName, v.Name)
}

// DescribeNetworkRuleOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-network-rule.
type DescribeNetworkRuleOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
4 changes: 4 additions & 0 deletions pkg/sdk/procedures_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,10 @@ type Procedure struct {
IsSecure bool
}

func (v *Procedure) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.CatalogName, v.SchemaName, v.Name)
}

// DescribeProcedureOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-procedure.
type DescribeProcedureOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
2 changes: 1 addition & 1 deletion pkg/sdk/procedures_impl_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (v *procedures) Show(ctx context.Context, request *ShowProcedureRequest) ([
}

func (v *procedures) ShowByID(ctx context.Context, id SchemaObjectIdentifier) (*Procedure, error) {
request := NewShowProcedureRequest().WithIn(&In{Database: NewAccountObjectIdentifier(id.DatabaseName())}).WithLike(&Like{String(id.Name())})
request := NewShowProcedureRequest().WithIn(&In{Schema: NewDatabaseObjectIdentifier(id.DatabaseName(), id.SchemaName())}).WithLike(&Like{String(id.Name())})
procedures, err := v.Show(ctx, request)
if err != nil {
return nil, err
Expand Down
4 changes: 4 additions & 0 deletions pkg/sdk/sequences_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ type Sequence struct {
Ordered bool
}

func (v *Sequence) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.DatabaseName, v.SchemaName, v.Name)
}

// DescribeSequenceOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-sequence.
type DescribeSequenceOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
4 changes: 4 additions & 0 deletions pkg/sdk/streamlits_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ type Streamlit struct {
OwnerRoleType string
}

func (v *Streamlit) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.DatabaseName, v.SchemaName, v.Name)
}

// DescribeStreamlitOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-streamlit.
type DescribeStreamlitOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
4 changes: 4 additions & 0 deletions pkg/sdk/streams_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,10 @@ type Stream struct {
OwnerRoleType *string
}

func (v *Stream) ID() SchemaObjectIdentifier {
return NewSchemaObjectIdentifier(v.DatabaseName, v.SchemaName, v.Name)
}

// DescribeStreamOptions is based on https://docs.snowflake.com/en/sql-reference/sql/desc-stream.
type DescribeStreamOptions struct {
describe bool `ddl:"static" sql:"DESCRIBE"`
Expand Down
47 changes: 47 additions & 0 deletions pkg/sdk/testint/alerts_integration_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package testint

import (
"errors"
sfc-gh-asawicki marked this conversation as resolved.
Show resolved Hide resolved
"strings"
"testing"

Expand Down Expand Up @@ -378,3 +379,49 @@ func TestInt_AlertDrop(t *testing.T) {
assert.ErrorIs(t, err, sdk.ErrObjectNotExistOrAuthorized)
})
}

func TestInt_AlertsShowByID(t *testing.T) {
client := testClient(t)
ctx := testContext(t)

databaseTest, schemaTest, warehouseTest := testDb(t), testSchema(t), testWarehouse(t)
cleanupAlertHandle := func(t *testing.T, id sdk.SchemaObjectIdentifier) func() {
t.Helper()
return func() {
err := client.Alerts.Drop(ctx, id)
if errors.Is(err, sdk.ErrObjectNotExistOrAuthorized) {
return
}
require.NoError(t, err)
}
}

createAlertHandle := func(t *testing.T, id sdk.SchemaObjectIdentifier) {
t.Helper()

schedule, condition, action := "USING CRON * * * * * UTC", "SELECT 1", "SELECT 1"
err := client.Alerts.Create(ctx, id, warehouseTest.ID(), schedule, condition, action, &sdk.CreateAlertOptions{})
require.NoError(t, err)
t.Cleanup(cleanupAlertHandle(t, id))
}

t.Run("show by id - same name in different schemas", func(t *testing.T) {
schema, schemaCleanup := createSchemaWithIdentifier(t, client, databaseTest, random.AlphaN(8))
t.Cleanup(schemaCleanup)

name := random.AlphaN(4)
id1 := sdk.NewSchemaObjectIdentifier(databaseTest.Name, schemaTest.Name, name)
id2 := sdk.NewSchemaObjectIdentifier(databaseTest.Name, schema.Name, name)

createAlertHandle(t, id1)
createAlertHandle(t, id2)

e1, err := client.Alerts.ShowByID(ctx, id1)
require.NoError(t, err)
require.Equal(t, id1, e1.ID())

e2, err := client.Alerts.ShowByID(ctx, id2)
require.NoError(t, err)
require.Equal(t, id2, e2.ID())
})
}
2 changes: 1 addition & 1 deletion pkg/sdk/testint/application_roles_gen_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func TestInt_ApplicationRoles(t *testing.T) {
assertApplicationRole(t, appRole, name, comment)
}

t.Run("Show by id", func(t *testing.T) {
t.Run("show by id - same name in different schemas", func(t *testing.T) {
name := "app_role_1"
id := sdk.NewDatabaseObjectIdentifier(appName, name)
ctx := context.Background()
Expand Down
53 changes: 53 additions & 0 deletions pkg/sdk/testint/dynamic_table_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package testint

import (
"context"
"errors"
"testing"

"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/sdk"
Expand Down Expand Up @@ -187,3 +188,55 @@ func TestInt_DynamicTableAlter(t *testing.T) {
}
})
}

func TestInt_DynamicTablesShowByID(t *testing.T) {
client := testClient(t)
ctx := context.Background()

warehouseTest, databaseTest, schemaTest := testWarehouse(t), testDb(t), testSchema(t)

cleanupDynamicTableHandle := func(t *testing.T, id sdk.SchemaObjectIdentifier) func() {
t.Helper()
return func() {
err := client.DynamicTables.Drop(ctx, sdk.NewDropDynamicTableRequest(id))
if errors.Is(err, sdk.ErrObjectNotExistOrAuthorized) {
return
}
require.NoError(t, err)
}
}

createDynamicTableHandle := func(t *testing.T, id sdk.SchemaObjectIdentifier) {
t.Helper()

tableTest, tableCleanup := createTable(t, client, databaseTest, schemaTest)
t.Cleanup(tableCleanup)
targetLag := sdk.TargetLag{
MaximumDuration: sdk.String("2 minutes"),
}
query := "select id from " + tableTest.ID().FullyQualifiedName()
err := client.DynamicTables.Create(ctx, sdk.NewCreateDynamicTableRequest(id, warehouseTest.ID(), targetLag, query).WithOrReplace(true))
require.NoError(t, err)
t.Cleanup(cleanupDynamicTableHandle(t, id))
}

t.Run("show by id - same name in different schemas", func(t *testing.T) {
schema, schemaCleanup := createSchemaWithIdentifier(t, client, databaseTest, random.AlphaN(8))
t.Cleanup(schemaCleanup)

name := random.AlphaN(4)
id1 := sdk.NewSchemaObjectIdentifier(databaseTest.Name, schemaTest.Name, name)
id2 := sdk.NewSchemaObjectIdentifier(databaseTest.Name, schema.Name, name)

createDynamicTableHandle(t, id1)
createDynamicTableHandle(t, id2)

e1, err := client.DynamicTables.ShowByID(ctx, id1)
require.NoError(t, err)
require.Equal(t, id1, e1.ID())

e2, err := client.DynamicTables.ShowByID(ctx, id2)
require.NoError(t, err)
require.Equal(t, id2, e2.ID())
})
}
45 changes: 44 additions & 1 deletion pkg/sdk/testint/event_tables_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func TestInt_EventTables(t *testing.T) {
tagTest, tagCleaup := createTag(t, client, databaseTest, schemaTest)
t.Cleanup(tagCleaup)

assertEventTableHandle := func(t *testing.T, et *sdk.EventTable, expectedName string, expectedComment string, expectedAllowedValues []string) {
assertEventTableHandle := func(t *testing.T, et *sdk.EventTable, expectedName string, expectedComment string, _ []string) {
t.Helper()
assert.NotEmpty(t, et.CreatedOn)
assert.Equal(t, expectedName, et.Name)
Expand Down Expand Up @@ -275,3 +275,46 @@ func TestInt_EventTables(t *testing.T) {
require.Error(t, err, "no rows in result set")
})
}

func TestInt_EventTableShowByID(t *testing.T) {
client := testClient(t)
ctx := testContext(t)

databaseTest, schemaTest := testDb(t), testSchema(t)

cleanupEventTableHandle := func(t *testing.T, id sdk.SchemaObjectIdentifier) func() {
t.Helper()
return func() {
err := client.EventTables.Drop(ctx, sdk.NewDropEventTableRequest(id).WithIfExists(sdk.Bool(true)))
require.NoError(t, err)
}
}

createEventTableHandle := func(t *testing.T, id sdk.SchemaObjectIdentifier) {
t.Helper()

err := client.EventTables.Create(ctx, sdk.NewCreateEventTableRequest(id))
require.NoError(t, err)
t.Cleanup(cleanupEventTableHandle(t, id))
}

t.Run("show by id - same name in different schemas", func(t *testing.T) {
schema, schemaCleanup := createSchemaWithIdentifier(t, client, databaseTest, random.AlphaN(8))
t.Cleanup(schemaCleanup)

name := random.AlphaN(4)
id1 := sdk.NewSchemaObjectIdentifier(databaseTest.Name, schemaTest.Name, name)
id2 := sdk.NewSchemaObjectIdentifier(databaseTest.Name, schema.Name, name)

createEventTableHandle(t, id1)
createEventTableHandle(t, id2)

e1, err := client.EventTables.ShowByID(ctx, id1)
require.NoError(t, err)
require.Equal(t, id1, e1.ID())

e2, err := client.EventTables.ShowByID(ctx, id2)
require.NoError(t, err)
require.Equal(t, id2, e2.ID())
})
}
Loading
Loading