github.com/leg100/ots@v0.0.7-0.20210919080622-034055ced4bd/cmd/ots/credentials_store_test.go (about) 1 package main 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestCredentialsStore(t *testing.T) { 13 tmpdir := t.TempDir() 14 15 store, err := NewCredentialsStore(FakeDirectories(tmpdir)) 16 require.NoError(t, err) 17 18 require.NoError(t, store.Save("ots.dev:8080", "dummy")) 19 20 token, err := store.Load("ots.dev:8080") 21 require.NoError(t, err) 22 23 assert.Equal(t, "dummy", token) 24 } 25 26 func TestCredentialsStoreWithExistingCredentials(t *testing.T) { 27 // Write a config file with existing creds for TFC 28 existing := `{ 29 "credentials": { 30 "app.terraform.io": { 31 "token": "secret" 32 } 33 } 34 } 35 ` 36 tmpdir := t.TempDir() 37 38 path := filepath.Join(tmpdir, CredentialsPath) 39 require.NoError(t, os.MkdirAll(filepath.Dir(path), 0755)) 40 require.NoError(t, os.WriteFile(path, []byte(existing), 0600)) 41 42 store, err := NewCredentialsStore(FakeDirectories(tmpdir)) 43 require.NoError(t, err) 44 45 require.NoError(t, store.Save("ots.dev:8080", "dummy")) 46 47 got, err := os.ReadFile(path) 48 require.NoError(t, err) 49 50 want := `{ 51 "credentials": { 52 "app.terraform.io": { 53 "token": "secret" 54 }, 55 "ots.dev:8080": { 56 "token": "dummy" 57 } 58 } 59 }` 60 61 assert.Equal(t, want, string(got)) 62 } 63 64 func TestCredentialsStoreSanitizeAddress(t *testing.T) { 65 tests := []struct { 66 name string 67 address string 68 want string 69 }{ 70 { 71 name: "no scheme", 72 address: "localhost:8080", 73 want: "localhost:8080", 74 }, 75 { 76 name: "has scheme", 77 address: "https://localhost:8080", 78 want: "localhost:8080", 79 }, 80 } 81 for _, tt := range tests { 82 t.Run(tt.name, func(t *testing.T) { 83 tmpdir := t.TempDir() 84 85 store, err := NewCredentialsStore(FakeDirectories(tmpdir)) 86 require.NoError(t, err) 87 88 address, err := store.sanitizeHostname(tt.address) 89 require.NoError(t, err) 90 assert.Equal(t, tt.want, address) 91 }) 92 } 93 } 94 95 type FakeDirectories string 96 97 func (f FakeDirectories) UserHomeDir() (string, error) { return string(f), nil }