github.com/iotexproject/iotex-core@v1.14.1-rc1/ioctl/newcmd/config/config_set_test.go (about) 1 package config 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/golang/mock/gomock" 8 "github.com/stretchr/testify/require" 9 10 "github.com/iotexproject/iotex-core/ioctl/config" 11 "github.com/iotexproject/iotex-core/ioctl/util" 12 "github.com/iotexproject/iotex-core/test/mock/mock_ioctlclient" 13 ) 14 15 func TestConfigSetCommand(t *testing.T) { 16 require := require.New(t) 17 ctrl := gomock.NewController(t) 18 defer ctrl.Finish() 19 client := mock_ioctlclient.NewMockClient(ctrl) 20 client.EXPECT().Config().Return(config.Config{}).AnyTimes() 21 client.EXPECT().SelectTranslation(gomock.Any()).Return("config set", config.English).AnyTimes() 22 client.EXPECT().Insecure().Return(false).AnyTimes() 23 testInsecure := true 24 callbackInsecure := func(cb func(*bool, string, bool, string)) { 25 cb(&testInsecure, "insecure", !testInsecure, "insecure usage") 26 } 27 client.EXPECT().SetInsecureWithFlag(gomock.Any()).Do(callbackInsecure).AnyTimes() 28 29 t.Run("set config value", func(t *testing.T) { 30 client.EXPECT().ConfigFilePath().Return(fmt.Sprintf("%s/%s", t.TempDir(), "config.file")) 31 cmd := NewConfigSetCmd(client) 32 result, err := util.ExecuteCmd(cmd, "nsv2height", "44") 33 require.NoError(err) 34 require.Contains(result, "Nsv2height is set to 44\n") 35 }) 36 37 t.Run("set custom link config value", func(t *testing.T) { 38 client.EXPECT().ConfigFilePath().Return(fmt.Sprintf("%s/%s", t.TempDir(), "config.file")) 39 client.EXPECT().ReadCustomLink().Return("http://custom-link.com", nil).Times(1) 40 cmd := NewConfigSetCmd(client) 41 result, err := util.ExecuteCmd(cmd, "explorer", "custom") 42 require.NoError(err) 43 require.Contains(result, "Explorer is set to custom\n") 44 }) 45 46 t.Run("config set error", func(t *testing.T) { 47 client.EXPECT().ConfigFilePath().Return(fmt.Sprintf("%s/%s", t.TempDir(), "config.file")) 48 cmd := NewConfigSetCmd(client) 49 _, err := util.ExecuteCmd(cmd, "explorer", "invalid explorer") 50 require.Contains(err.Error(), "problem setting config fields [explorer invalid explorer]") 51 }) 52 53 t.Run("config set too many arguments", func(t *testing.T) { 54 cmd := NewConfigSetCmd(client) 55 _, err := util.ExecuteCmd(cmd, "explorer", "iotxplorer", "arg2", "arg3", "arg4") 56 require.Contains(err.Error(), "accepts 2 arg(s), received 5") 57 }) 58 59 t.Run("config file path error", func(t *testing.T) { 60 client.EXPECT().ConfigFilePath().Return("\x00") 61 // use invalid file name to force error 62 cmd := NewConfigSetCmd(client) 63 _, err := util.ExecuteCmd(cmd, "explorer", "iotxplorer") 64 require.Contains(err.Error(), "problem setting config fields [explorer iotxplorer]: failed to write to config file") 65 }) 66 }