github.com/pluralsh/plural-cli@v0.9.5/pkg/crypto/config_test.go (about)

     1  package crypto_test
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"testing"
     7  
     8  	"github.com/pluralsh/plural-cli/pkg/crypto"
     9  	"github.com/pluralsh/plural-cli/pkg/utils/git"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestBuild(t *testing.T) {
    14  	tests := []struct {
    15  		name          string
    16  		expectedError string
    17  		expected      string
    18  		keyContent    string
    19  		genConfig     bool
    20  	}{
    21  		{
    22  			name:       `when faulty config exists create default fallbackProvider`,
    23  			keyContent: "key: abc",
    24  			expected:   "SHA256:XJ4BNP4PAHH6UQKBIDPF3LRCEOYAGYNDSYLXVHFUCD7WD4QACWWQ====",
    25  			genConfig:  true,
    26  		},
    27  		{
    28  			name:       `when config doesn't exist create default fallbackProvider`,
    29  			genConfig:  false,
    30  			keyContent: "key: abc",
    31  			expected:   "SHA256:XJ4BNP4PAHH6UQKBIDPF3LRCEOYAGYNDSYLXVHFUCD7WD4QACWWQ====",
    32  		},
    33  	}
    34  	for _, test := range tests {
    35  		t.Run(test.name, func(t *testing.T) {
    36  			dir, err := os.MkdirTemp("", "config")
    37  			assert.NoError(t, err)
    38  			defer os.RemoveAll(dir)
    39  
    40  			os.Setenv("HOME", dir)
    41  			defer os.Unsetenv("HOME")
    42  
    43  			err = os.Chdir(dir)
    44  			assert.NoError(t, err)
    45  			_, err = git.Init()
    46  			assert.NoError(t, err)
    47  
    48  			if test.genConfig {
    49  				err := os.WriteFile(path.Join(dir, "crypto.yml"), []byte("abc"), 0644)
    50  				assert.NoError(t, err)
    51  			}
    52  
    53  			err = os.MkdirAll(path.Join(dir, ".plural"), os.ModePerm)
    54  			assert.NoError(t, err)
    55  			err = os.WriteFile(path.Join(dir, ".plural", "key"), []byte(test.keyContent), 0644)
    56  			assert.NoError(t, err)
    57  
    58  			provider, err := crypto.Build()
    59  			if test.expectedError != "" {
    60  				assert.Equal(t, test.expectedError, err.Error())
    61  			} else {
    62  				assert.NoError(t, err)
    63  				assert.Equal(t, test.expected, provider.ID())
    64  			}
    65  		})
    66  	}
    67  }