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  }