From 186a6dcc388aeefaa295b853aa57fbda08dd4fa5 Mon Sep 17 00:00:00 2001 From: Radek Simko Date: Mon, 5 Nov 2018 12:21:37 +0000 Subject: [PATCH] helper/schema: Add test for wrong timeout type --- helper/schema/provider_test.go | 49 ++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/helper/schema/provider_test.go b/helper/schema/provider_test.go index 6bf8c5bdf6..39d16acbd2 100644 --- a/helper/schema/provider_test.go +++ b/helper/schema/provider_test.go @@ -3,6 +3,7 @@ package schema import ( "fmt" "reflect" + "strings" "testing" "time" @@ -277,6 +278,54 @@ func TestProviderValidate(t *testing.T) { } } +func TestProviderDiff_timeoutInvalidType(t *testing.T) { + p := &Provider{ + ResourcesMap: map[string]*Resource{ + "blah": &Resource{ + Schema: map[string]*Schema{ + "foo": { + Type: TypeInt, + Optional: true, + }, + }, + Timeouts: &ResourceTimeout{ + Create: DefaultTimeout(10 * time.Minute), + }, + }, + }, + } + + invalidCfg := map[string]interface{}{ + "foo": 42, + "timeouts": []map[string]interface{}{ + map[string]interface{}{ + "create": "40m", + }, + }, + } + ic, err := config.NewRawConfig(invalidCfg) + if err != nil { + t.Fatalf("err: %s", err) + } + + _, err = p.Diff( + &terraform.InstanceInfo{ + Type: "blah", + }, + nil, + terraform.NewResourceConfig(ic), + ) + if err == nil { + t.Fatal("Expected provider.Diff to fail with invalid timeout type") + } + expectedErrMsg := "Invalid Timeout structure" + if !strings.Contains(err.Error(), expectedErrMsg) { + t.Fatalf("Unexpected error message: %q\nExpected message to contain %q", + err.Error(), + expectedErrMsg) + } +} + func TestProviderValidateResource(t *testing.T) { cases := []struct { P *Provider