Merge PR #5161: FIX: implements yaml marshaller in msg.go
This commit is contained in:
parent
1a33f1c8cb
commit
160033414c
|
@ -5,6 +5,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/tendermint/tendermint/crypto"
|
"github.com/tendermint/tendermint/crypto"
|
||||||
|
yaml "gopkg.in/yaml.v2"
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
)
|
)
|
||||||
|
@ -112,6 +113,31 @@ func (msg *MsgCreateValidator) UnmarshalJSON(bz []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// custom marshal yaml function due to consensus pubkey
|
||||||
|
func (msg MsgCreateValidator) MarshalYAML() (interface{}, error) {
|
||||||
|
bs, err := yaml.Marshal(struct {
|
||||||
|
Commission CommissionRates
|
||||||
|
MinSelfDelegation sdk.Int
|
||||||
|
DelegatorAddress sdk.AccAddress
|
||||||
|
ValidatorAddress sdk.ValAddress
|
||||||
|
PubKey string
|
||||||
|
Value sdk.Coin
|
||||||
|
}{
|
||||||
|
Commission: msg.Commission,
|
||||||
|
MinSelfDelegation: msg.MinSelfDelegation,
|
||||||
|
DelegatorAddress: msg.DelegatorAddress,
|
||||||
|
ValidatorAddress: msg.ValidatorAddress,
|
||||||
|
PubKey: sdk.MustBech32ifyConsPub(msg.PubKey),
|
||||||
|
Value: msg.Value,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return string(bs), nil
|
||||||
|
}
|
||||||
|
|
||||||
// GetSignBytes returns the message bytes to sign over.
|
// GetSignBytes returns the message bytes to sign over.
|
||||||
func (msg MsgCreateValidator) GetSignBytes() []byte {
|
func (msg MsgCreateValidator) GetSignBytes() []byte {
|
||||||
bz := ModuleCdc.MustMarshalJSON(msg)
|
bz := ModuleCdc.MustMarshalJSON(msg)
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package types
|
package types
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
yaml "gopkg.in/yaml.v2"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/tendermint/tendermint/crypto"
|
"github.com/tendermint/tendermint/crypto"
|
||||||
|
|
||||||
|
@ -154,3 +157,41 @@ func TestMsgUndelegate(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//test to validate if NewMsgCreateValidator implements yaml marshaller
|
||||||
|
func TestMsgMarshalYAML(t *testing.T) {
|
||||||
|
commission1 := NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec())
|
||||||
|
tc := struct {
|
||||||
|
name, moniker, identity, website, securityContact, details string
|
||||||
|
CommissionRates CommissionRates
|
||||||
|
minSelfDelegation sdk.Int
|
||||||
|
validatorAddr sdk.ValAddress
|
||||||
|
pubkey crypto.PubKey
|
||||||
|
bond sdk.Coin
|
||||||
|
expectPass bool
|
||||||
|
}{"basic good", "a", "b", "c", "d", "e", commission1, sdk.OneInt(), valAddr1, pk1, coinPos, true}
|
||||||
|
|
||||||
|
description := NewDescription(tc.moniker, tc.identity, tc.website, tc.securityContact, tc.details)
|
||||||
|
msg := NewMsgCreateValidator(tc.validatorAddr, tc.pubkey, tc.bond, description, tc.CommissionRates, tc.minSelfDelegation)
|
||||||
|
bs, err := yaml.Marshal(msg)
|
||||||
|
require.NoError(t, err)
|
||||||
|
bechifiedPub, err := sdk.Bech32ifyConsPub(msg.PubKey)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
want := fmt.Sprintf(`|
|
||||||
|
commission:
|
||||||
|
rate: "0.000000000000000000"
|
||||||
|
max_rate: "0.000000000000000000"
|
||||||
|
max_change_rate: "0.000000000000000000"
|
||||||
|
minselfdelegation: "1"
|
||||||
|
delegatoraddress: %s
|
||||||
|
validatoraddress: %s
|
||||||
|
pubkey: %s
|
||||||
|
value:
|
||||||
|
denom: stake
|
||||||
|
amount: "1000"
|
||||||
|
`, msg.DelegatorAddress, msg.ValidatorAddress, bechifiedPub)
|
||||||
|
|
||||||
|
require.Equal(t, want, string(bs))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue