github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/command/meta_backend_migrate_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package command 5 6 import ( 7 "testing" 8 ) 9 10 func TestBackendMigrate_promptMultiStatePattern(t *testing.T) { 11 // Setup the meta 12 13 cases := map[string]struct { 14 renamePrompt string 15 patternPrompt string 16 expectedErr string 17 }{ 18 "valid pattern": { 19 renamePrompt: "1", 20 patternPrompt: "hello-*", 21 expectedErr: "", 22 }, 23 "invalid pattern, only one asterisk allowed": { 24 renamePrompt: "1", 25 patternPrompt: "hello-*-world-*", 26 expectedErr: "The pattern '*' cannot be used more than once.", 27 }, 28 "invalid pattern, missing asterisk": { 29 renamePrompt: "1", 30 patternPrompt: "hello-world", 31 expectedErr: "The pattern must have an '*'", 32 }, 33 "invalid rename": { 34 renamePrompt: "3", 35 expectedErr: "Please select 1 or 2 as part of this option.", 36 }, 37 "no rename": { 38 renamePrompt: "2", 39 }, 40 } 41 for name, tc := range cases { 42 t.Log("Test: ", name) 43 m := testMetaBackend(t, nil) 44 input := map[string]string{} 45 cleanup := testInputMap(t, input) 46 if tc.renamePrompt != "" { 47 input["backend-migrate-multistate-to-tfc"] = tc.renamePrompt 48 } 49 if tc.patternPrompt != "" { 50 input["backend-migrate-multistate-to-tfc-pattern"] = tc.patternPrompt 51 } 52 53 sourceType := "cloud" 54 _, err := m.promptMultiStateMigrationPattern(sourceType) 55 if tc.expectedErr == "" && err != nil { 56 t.Fatalf("expected error to be nil, but was %s", err.Error()) 57 } 58 if tc.expectedErr != "" && tc.expectedErr != err.Error() { 59 t.Fatalf("expected error to eq %s but got %s", tc.expectedErr, err.Error()) 60 } 61 62 cleanup() 63 } 64 }