From a512b8fec6ff4b4e4cf7d862eb0f64b22929950b Mon Sep 17 00:00:00 2001 From: mkoslap Date: Fri, 20 Aug 2021 16:14:03 -0400 Subject: [PATCH 1/3] fix: Changed stream append_only to use mode value --- pkg/resources/stream.go | 2 +- pkg/resources/stream_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/pkg/resources/stream.go b/pkg/resources/stream.go index 437685e004..f97acd6a15 100644 --- a/pkg/resources/stream.go +++ b/pkg/resources/stream.go @@ -242,7 +242,7 @@ func ReadStream(d *schema.ResourceData, meta interface{}) error { return err } - err = d.Set("append_only", stream.AppendOnly) + err = d.Set("append_only", stream.Mode.String == "APPEND_ONLY") if err != nil { return err } diff --git a/pkg/resources/stream_test.go b/pkg/resources/stream_test.go index f05358102a..48ffd4fbdb 100644 --- a/pkg/resources/stream_test.go +++ b/pkg/resources/stream_test.go @@ -68,6 +68,34 @@ func TestStreamRead(t *testing.T) { }) } +func TestStreamReadAppendOnlyMode(t *testing.T) { + r := require.New(t) + + d := stream(t, "database_name|schema_name|stream_name", map[string]interface{}{"name": "stream_name", "comment": "grand comment"}) + + WithMockDb(t, func(db *sql.DB, mock sqlmock.Sqlmock) { + rows := sqlmock.NewRows([]string{"name", "database_name", "schema_name", "owner", "comment", "table_name", "type", "stale", "mode"}).AddRow("stream_name", "database_name", "schema_name", "owner_name", "grand comment", "target_table", "DELTA", false, "APPEND_ONLY") + mock.ExpectQuery(`SHOW STREAMS LIKE 'stream_name' IN DATABASE "database_name"`).WillReturnRows(rows) + err := resources.ReadStream(d, db) + r.NoError(err) + r.Equal(true, d.Get("append_only").(bool)) + }) +} + +func TestStreamReadDefaultMode(t *testing.T) { + r := require.New(t) + + d := stream(t, "database_name|schema_name|stream_name", map[string]interface{}{"name": "stream_name", "comment": "grand comment"}) + + WithMockDb(t, func(db *sql.DB, mock sqlmock.Sqlmock) { + rows := sqlmock.NewRows([]string{"name", "database_name", "schema_name", "owner", "comment", "table_name", "type", "stale", "mode"}).AddRow("stream_name", "database_name", "schema_name", "owner_name", "grand comment", "target_table", "DELTA", false, "DEFAULT") + mock.ExpectQuery(`SHOW STREAMS LIKE 'stream_name' IN DATABASE "database_name"`).WillReturnRows(rows) + err := resources.ReadStream(d, db) + r.NoError(err) + r.Equal(false, d.Get("append_only").(bool)) + }) +} + func TestStreamDelete(t *testing.T) { r := require.New(t) From 4ba59e7517e83b7484ee70fc3cde822b1d66b3b1 Mon Sep 17 00:00:00 2001 From: mkoslap Date: Fri, 20 Aug 2021 16:30:42 -0400 Subject: [PATCH 2/3] fix: Added append_only stream acceptance test --- pkg/resources/stream_acceptance_test.go | 64 +++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/pkg/resources/stream_acceptance_test.go b/pkg/resources/stream_acceptance_test.go index b6745b3cf3..054cfdca51 100644 --- a/pkg/resources/stream_acceptance_test.go +++ b/pkg/resources/stream_acceptance_test.go @@ -71,3 +71,67 @@ resource "snowflake_stream" "test_stream" { ` return fmt.Sprintf(s, name, name, name) } + +func TestAcc_Stream_AppendOnly(t *testing.T) { + accName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)) + + resource.ParallelTest(t, resource.TestCase{ + Providers: providers(), + Steps: []resource.TestStep{ + { + Config: streamConfig(accName), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("snowflake_stream.test_stream", "name", accName), + resource.TestCheckResourceAttr("snowflake_stream.test_stream", "database", accName), + resource.TestCheckResourceAttr("snowflake_stream.test_stream", "schema", accName), + resource.TestCheckResourceAttr("snowflake_stream.test_stream", "on_table", fmt.Sprintf("%s.%s.%s", accName, accName, "STREAM_ON_TABLE")), + resource.TestCheckResourceAttr("snowflake_stream.test_stream", "comment", "Terraform acceptance test"), + checkBool("snowflake_stream.test_stream", "append_only", true), + checkBool("snowflake_stream.test_stream", "show_initial_rows", false), + ), + }, + }, + }) +} + +func streamAppendOnlyConfig(name string) string { + s := ` +resource "snowflake_database" "test_database" { + name = "%s" + comment = "Terraform acceptance test" +} + +resource "snowflake_schema" "test_schema" { + name = "%s" + database = snowflake_database.test_database.name + comment = "Terraform acceptance test" +} + +resource "snowflake_table" "test_stream_on_table" { + database = snowflake_database.test_database.name + schema = snowflake_schema.test_schema.name + name = "STREAM_ON_TABLE" + comment = "Terraform acceptance test" + change_tracking = true + + column { + name = "column1" + type = "VARIANT" + } + column { + name = "column2" + type = "VARCHAR(16777216)" + } +} + +resource "snowflake_stream" "test_stream" { + database = snowflake_database.test_database.name + schema = snowflake_schema.test_schema.name + name = "%s" + comment = "Terraform acceptance test" + on_table = "${snowflake_database.test_database.name}.${snowflake_schema.test_schema.name}.${snowflake_table.test_stream_on_table.name}" + append_only = true +} +` + return fmt.Sprintf(s, name, name, name) +} From 2546704a04410adfdb27593f182492484a2de0a2 Mon Sep 17 00:00:00 2001 From: Michael Koslap Date: Sun, 22 Aug 2021 08:20:28 -0400 Subject: [PATCH 3/3] fix: Updated stream acceptance test for append_only --- pkg/resources/stream_acceptance_test.go | 66 ++++--------------------- 1 file changed, 10 insertions(+), 56 deletions(-) diff --git a/pkg/resources/stream_acceptance_test.go b/pkg/resources/stream_acceptance_test.go index 054cfdca51..883463a42d 100644 --- a/pkg/resources/stream_acceptance_test.go +++ b/pkg/resources/stream_acceptance_test.go @@ -16,7 +16,7 @@ func TestAcc_Stream(t *testing.T) { Providers: providers(), Steps: []resource.TestStep{ { - Config: streamConfig(accName), + Config: streamConfig(accName, false), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("snowflake_stream.test_stream", "name", accName), resource.TestCheckResourceAttr("snowflake_stream.test_stream", "database", accName), @@ -27,59 +27,8 @@ func TestAcc_Stream(t *testing.T) { checkBool("snowflake_stream.test_stream", "show_initial_rows", false), ), }, - }, - }) -} - -func streamConfig(name string) string { - s := ` -resource "snowflake_database" "test_database" { - name = "%s" - comment = "Terraform acceptance test" -} - -resource "snowflake_schema" "test_schema" { - name = "%s" - database = snowflake_database.test_database.name - comment = "Terraform acceptance test" -} - -resource "snowflake_table" "test_stream_on_table" { - database = snowflake_database.test_database.name - schema = snowflake_schema.test_schema.name - name = "STREAM_ON_TABLE" - comment = "Terraform acceptance test" - change_tracking = true - - column { - name = "column1" - type = "VARIANT" - } - column { - name = "column2" - type = "VARCHAR(16777216)" - } -} - -resource "snowflake_stream" "test_stream" { - database = snowflake_database.test_database.name - schema = snowflake_schema.test_schema.name - name = "%s" - comment = "Terraform acceptance test" - on_table = "${snowflake_database.test_database.name}.${snowflake_schema.test_schema.name}.${snowflake_table.test_stream_on_table.name}" -} -` - return fmt.Sprintf(s, name, name, name) -} - -func TestAcc_Stream_AppendOnly(t *testing.T) { - accName := strings.ToUpper(acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)) - - resource.ParallelTest(t, resource.TestCase{ - Providers: providers(), - Steps: []resource.TestStep{ { - Config: streamConfig(accName), + Config: streamConfig(accName, true), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("snowflake_stream.test_stream", "name", accName), resource.TestCheckResourceAttr("snowflake_stream.test_stream", "database", accName), @@ -94,7 +43,12 @@ func TestAcc_Stream_AppendOnly(t *testing.T) { }) } -func streamAppendOnlyConfig(name string) string { +func streamConfig(name string, append_only bool) string { + append_only_config := "" + if append_only { + append_only_config = "append_only = true" + } + s := ` resource "snowflake_database" "test_database" { name = "%s" @@ -130,8 +84,8 @@ resource "snowflake_stream" "test_stream" { name = "%s" comment = "Terraform acceptance test" on_table = "${snowflake_database.test_database.name}.${snowflake_schema.test_schema.name}.${snowflake_table.test_stream_on_table.name}" - append_only = true + %s } ` - return fmt.Sprintf(s, name, name, name) + return fmt.Sprintf(s, name, name, name, append_only_config) }