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  }