github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/google/resource_google_project_migrate_test.go (about) 1 package google 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/terraform/terraform" 7 ) 8 9 func TestGoogleProjectMigrateState(t *testing.T) { 10 cases := map[string]struct { 11 StateVersion int 12 Attributes map[string]string 13 Expected map[string]string 14 Meta interface{} 15 }{ 16 "deprecate policy_data and support creation/deletion": { 17 StateVersion: 0, 18 Attributes: map[string]string{}, 19 Expected: map[string]string{ 20 "project_id": "test-project", 21 "skip_delete": "true", 22 }, 23 Meta: &Config{}, 24 }, 25 } 26 27 for tn, tc := range cases { 28 is := &terraform.InstanceState{ 29 ID: "test-project", 30 Attributes: tc.Attributes, 31 } 32 is, err := resourceGoogleProjectMigrateState( 33 tc.StateVersion, is, tc.Meta) 34 35 if err != nil { 36 t.Fatalf("bad: %s, err: %#v", tn, err) 37 } 38 39 for k, v := range tc.Expected { 40 if is.Attributes[k] != v { 41 t.Fatalf( 42 "bad: %s\n\n expected: %#v -> %#v\n got: %#v -> %#v\n in: %#v", 43 tn, k, v, k, is.Attributes[k], is.Attributes) 44 } 45 } 46 } 47 } 48 49 func TestGoogleProjectMigrateState_empty(t *testing.T) { 50 var is *terraform.InstanceState 51 var meta *Config 52 53 // should handle nil 54 is, err := resourceGoogleProjectMigrateState(0, is, meta) 55 56 if err != nil { 57 t.Fatalf("err: %#v", err) 58 } 59 if is != nil { 60 t.Fatalf("expected nil instancestate, got: %#v", is) 61 } 62 63 // should handle non-nil but empty 64 is = &terraform.InstanceState{} 65 is, err = resourceGoogleProjectMigrateState(0, is, meta) 66 67 if err != nil { 68 t.Fatalf("err: %#v", err) 69 } 70 }