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