github.com/Finschia/finschia-sdk@v0.49.1/x/staking/client/cli/tx_test.go (about) 1 package cli 2 3 import ( 4 "testing" 5 6 "github.com/spf13/pflag" 7 "github.com/stretchr/testify/require" 8 9 "github.com/Finschia/finschia-sdk/client/flags" 10 "github.com/Finschia/finschia-sdk/crypto/keys/ed25519" 11 ) 12 13 func TestPrepareConfigForTxCreateValidator(t *testing.T) { 14 chainID := "chainID" 15 ip := "1.1.1.1" 16 nodeID := "nodeID" 17 privKey := ed25519.GenPrivKey() 18 valPubKey := privKey.PubKey() 19 moniker := "DefaultMoniker" 20 mkTxValCfg := func(amount, commission, commissionMax, commissionMaxChange, minSelfDelegation string) TxCreateValidatorConfig { 21 return TxCreateValidatorConfig{ 22 IP: ip, 23 ChainID: chainID, 24 NodeID: nodeID, 25 PubKey: valPubKey, 26 Moniker: moniker, 27 Amount: amount, 28 CommissionRate: commission, 29 CommissionMaxRate: commissionMax, 30 CommissionMaxChangeRate: commissionMaxChange, 31 MinSelfDelegation: minSelfDelegation, 32 } 33 } 34 35 tests := []struct { 36 name string 37 fsModify func(fs *pflag.FlagSet) 38 expectedCfg TxCreateValidatorConfig 39 }{ 40 { 41 name: "all defaults", 42 fsModify: func(fs *pflag.FlagSet) {}, 43 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "1"), 44 }, 45 { 46 name: "Custom amount", 47 fsModify: func(fs *pflag.FlagSet) { 48 err := fs.Set(FlagAmount, "2000stake") 49 require.NoError(t, err) 50 }, 51 expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01", "1"), 52 }, 53 { 54 name: "Custom commission rate", 55 fsModify: func(fs *pflag.FlagSet) { 56 err := fs.Set(FlagCommissionRate, "0.54") 57 require.NoError(t, err) 58 }, 59 expectedCfg: mkTxValCfg(defaultAmount, "0.54", "0.2", "0.01", "1"), 60 }, 61 { 62 name: "Custom commission max rate", 63 fsModify: func(fs *pflag.FlagSet) { 64 err := fs.Set(FlagCommissionMaxRate, "0.89") 65 require.NoError(t, err) 66 }, 67 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.89", "0.01", "1"), 68 }, 69 { 70 name: "Custom commission max change rate", 71 fsModify: func(fs *pflag.FlagSet) { 72 err := fs.Set(FlagCommissionMaxChangeRate, "0.55") 73 require.NoError(t, err) 74 }, 75 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.55", "1"), 76 }, 77 { 78 name: "Custom min self delegations", 79 fsModify: func(fs *pflag.FlagSet) { 80 err := fs.Set(FlagMinSelfDelegation, "0.33") 81 require.NoError(t, err) 82 }, 83 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "0.33"), 84 }, 85 } 86 87 for _, tc := range tests { 88 t.Run(tc.name, func(t *testing.T) { 89 fs, _ := CreateValidatorMsgFlagSet(ip) 90 fs.String(flags.FlagName, "", "name of private key with which to sign the gentx") 91 92 tc.fsModify(fs) 93 94 cvCfg, err := PrepareConfigForTxCreateValidator(fs, moniker, nodeID, chainID, valPubKey) 95 require.NoError(t, err) 96 97 require.Equal(t, tc.expectedCfg, cvCfg) 98 }) 99 } 100 }