github.com/iotexproject/iotex-core@v1.14.1-rc1/action/protocol/staking/ethabi/stakecandidatebyname_test.go (about)

     1  package ethabi
     2  
     3  import (
     4  	"encoding/hex"
     5  	"reflect"
     6  	"testing"
     7  
     8  	"github.com/iotexproject/iotex-proto/golang/iotexapi"
     9  	"github.com/iotexproject/iotex-proto/golang/iotextypes"
    10  	"github.com/stretchr/testify/require"
    11  	"google.golang.org/protobuf/proto"
    12  )
    13  
    14  func TestBuildReadStateRequestCandidateByName(t *testing.T) {
    15  	r := require.New(t)
    16  
    17  	data, _ := hex.DecodeString("6da1bb770000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000")
    18  	req, err := BuildReadStateRequest(data)
    19  
    20  	r.Nil(err)
    21  	r.EqualValues("*ethabi.CandidateByNameStateContext", reflect.TypeOf(req).String())
    22  
    23  	method := &iotexapi.ReadStakingDataMethod{
    24  		Method: iotexapi.ReadStakingDataMethod_CANDIDATE_BY_NAME,
    25  	}
    26  	methodBytes, _ := proto.Marshal(method)
    27  	r.EqualValues(methodBytes, req.Parameters().MethodName)
    28  
    29  	arguments := &iotexapi.ReadStakingDataRequest{
    30  		Request: &iotexapi.ReadStakingDataRequest_CandidateByName_{
    31  			CandidateByName: &iotexapi.ReadStakingDataRequest_CandidateByName{
    32  				CandName: "hello",
    33  			},
    34  		},
    35  	}
    36  	argumentsBytes, _ := proto.Marshal(arguments)
    37  	r.EqualValues([][]byte{argumentsBytes}, req.Parameters().Arguments)
    38  }
    39  
    40  func TestCandidateByNameToEth(t *testing.T) {
    41  	r := require.New(t)
    42  
    43  	candidate := &iotextypes.CandidateV2{
    44  		OwnerAddress:       "io1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqps833xv",
    45  		OperatorAddress:    "io1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqz75y8gn",
    46  		RewardAddress:      "io1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrzsj4p",
    47  		Name:               "hello",
    48  		TotalWeightedVotes: "10000000000000000000",
    49  		SelfStakeBucketIdx: 100,
    50  		SelfStakingTokens:  "5000000000000000000",
    51  	}
    52  
    53  	candidateBytes, _ := proto.Marshal(candidate)
    54  	resp := &iotexapi.ReadStateResponse{
    55  		Data: candidateBytes,
    56  	}
    57  
    58  	ctx := &CandidateByNameStateContext{}
    59  	data, err := ctx.EncodeToEth(resp)
    60  	r.Nil(err)
    61  	r.EqualValues("000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", data)
    62  }