github.com/Finschia/finschia-sdk@v0.48.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 return 44 }, 45 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "1"), 46 }, 47 { 48 name: "Custom amount", 49 fsModify: func(fs *pflag.FlagSet) { 50 fs.Set(FlagAmount, "2000stake") 51 }, 52 expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01", "1"), 53 }, 54 { 55 name: "Custom commission rate", 56 fsModify: func(fs *pflag.FlagSet) { 57 fs.Set(FlagCommissionRate, "0.54") 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 fs.Set(FlagCommissionMaxRate, "0.89") 65 }, 66 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.89", "0.01", "1"), 67 }, 68 { 69 name: "Custom commission max change rate", 70 fsModify: func(fs *pflag.FlagSet) { 71 fs.Set(FlagCommissionMaxChangeRate, "0.55") 72 }, 73 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.55", "1"), 74 }, 75 { 76 name: "Custom min self delegations", 77 fsModify: func(fs *pflag.FlagSet) { 78 fs.Set(FlagMinSelfDelegation, "0.33") 79 }, 80 expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "0.33"), 81 }, 82 } 83 84 for _, tc := range tests { 85 tc := tc 86 t.Run(tc.name, func(t *testing.T) { 87 fs, _ := CreateValidatorMsgFlagSet(ip) 88 fs.String(flags.FlagName, "", "name of private key with which to sign the gentx") 89 90 tc.fsModify(fs) 91 92 cvCfg, err := PrepareConfigForTxCreateValidator(fs, moniker, nodeID, chainID, valPubKey) 93 require.NoError(t, err) 94 95 require.Equal(t, tc.expectedCfg, cvCfg) 96 }) 97 } 98 }