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  }