github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/store/config_test.go (about) 1 /* 2 * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved. 3 * This software is released under GPL3. 4 * The full license information can be found under: 5 * https://www.gnu.org/licenses/gpl-3.0.en.html 6 * 7 */ 8 9 package store 10 11 import ( 12 "io/ioutil" 13 "path/filepath" 14 "testing" 15 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func mkTmpForConfig(t *testing.T) string { 20 tdir, err := ioutil.TempDir("", "vcn-test-store-config") 21 if err != nil { 22 t.Fatal(err) 23 } 24 return tdir 25 } 26 27 func TestLoadConfig(t *testing.T) { 28 tdir := mkTmpForConfig(t) 29 SetDir(tdir + "/" + DefaultDirName) 30 31 assert.Nil(t, Config()) 32 33 err := LoadConfig() 34 assert.NoError(t, err) 35 assert.NotNil(t, Config()) 36 assert.Equal(t, filepath.Join(tdir, DefaultDirName, configFilename), ConfigFile()) 37 assert.FileExists(t, ConfigFile()) 38 assert.NotNil(t, Config()) 39 } 40 41 func TestSaveConfig(t *testing.T) { 42 tdir := mkTmpForConfig(t) 43 SetDir(tdir + "/" + DefaultDirName) 44 45 email := "example@example.net" 46 47 cfg = &ConfigRoot{ 48 CurrentContext: CurrentContext{ 49 Email: email, 50 }, 51 Users: []*User{ 52 { 53 Email: email, 54 KeyStore: filepath.Join(tdir, "u", email, "k"), 55 }, 56 }, 57 } 58 59 err := SaveConfig() 60 assert.NoError(t, err) 61 62 LoadConfig() 63 assert.Equal(t, email, Config().CurrentContext.Email) 64 } 65 66 func TestConfigClearContext(t *testing.T) { 67 email := "example@example.net" 68 69 cfg = &ConfigRoot{ 70 CurrentContext: CurrentContext{ 71 Email: email, 72 }, 73 Users: []*User{ 74 { 75 Email: email, 76 Token: "dummy", 77 }, 78 }, 79 } 80 81 cfg.ClearContext() 82 assert.Empty(t, cfg.CurrentContext) 83 84 for _, u := range cfg.Users { 85 assert.Empty(t, u.Token) 86 } 87 }