159 lines
3.5 KiB
Go
159 lines
3.5 KiB
Go
package keeper_test
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"cosmossdk.io/x/evidence/exported"
|
|
"cosmossdk.io/x/evidence/types"
|
|
|
|
"github.com/cosmos/cosmos-sdk/types/query"
|
|
)
|
|
|
|
func (suite *KeeperTestSuite) TestQueryEvidence() {
|
|
var (
|
|
req *types.QueryEvidenceRequest
|
|
evidence []exported.Evidence
|
|
)
|
|
|
|
testCases := []struct {
|
|
msg string
|
|
malleate func()
|
|
expPass bool
|
|
expErrMsg string
|
|
posttests func(res *types.QueryEvidenceResponse)
|
|
}{
|
|
{
|
|
"invalid request with empty evidence hash",
|
|
func() {
|
|
req = &types.QueryEvidenceRequest{Hash: ""}
|
|
},
|
|
false,
|
|
"invalid request; hash is empty",
|
|
func(res *types.QueryEvidenceResponse) {},
|
|
},
|
|
{
|
|
"evidence not found",
|
|
func() {
|
|
numEvidence := 1
|
|
evidence = suite.populateEvidence(suite.ctx, numEvidence)
|
|
evidenceHash := strings.ToUpper(hex.EncodeToString(evidence[0].Hash()))
|
|
reqHash := strings.Repeat("a", len(evidenceHash))
|
|
req = types.NewQueryEvidenceRequest(reqHash)
|
|
},
|
|
false,
|
|
"not found",
|
|
func(res *types.QueryEvidenceResponse) {
|
|
},
|
|
},
|
|
{
|
|
"non-existent evidence",
|
|
func() {
|
|
reqHash := "DF0C23E8634E480F84B9D5674A7CDC9816466DEC28A3358F73260F68D28D7660"
|
|
req = types.NewQueryEvidenceRequest(reqHash)
|
|
},
|
|
false,
|
|
"evidence DF0C23E8634E480F84B9D5674A7CDC9816466DEC28A3358F73260F68D28D7660 not found",
|
|
func(res *types.QueryEvidenceResponse) {
|
|
},
|
|
},
|
|
{
|
|
"success",
|
|
func() {
|
|
numEvidence := 100
|
|
evidence = suite.populateEvidence(suite.ctx, numEvidence)
|
|
req = types.NewQueryEvidenceRequest(strings.ToUpper(hex.EncodeToString(evidence[0].Hash())))
|
|
},
|
|
true,
|
|
"",
|
|
func(res *types.QueryEvidenceResponse) {
|
|
var evi exported.Evidence
|
|
err := suite.encCfg.InterfaceRegistry.UnpackAny(res.Evidence, &evi)
|
|
suite.Require().NoError(err)
|
|
suite.Require().NotNil(evi)
|
|
suite.Require().Equal(evi, evidence[0])
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
|
|
suite.SetupTest()
|
|
|
|
tc.malleate()
|
|
res, err := suite.queryClient.Evidence(suite.ctx, req)
|
|
|
|
if tc.expPass {
|
|
suite.Require().NoError(err)
|
|
suite.Require().NotNil(res)
|
|
} else {
|
|
suite.Require().Error(err)
|
|
suite.Require().Contains(err.Error(), tc.expErrMsg)
|
|
suite.Require().Nil(res)
|
|
}
|
|
|
|
tc.posttests(res)
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *KeeperTestSuite) TestQueryAllEvidence() {
|
|
var req *types.QueryAllEvidenceRequest
|
|
|
|
testCases := []struct {
|
|
msg string
|
|
malleate func()
|
|
expPass bool
|
|
posttests func(res *types.QueryAllEvidenceResponse)
|
|
}{
|
|
{
|
|
"success without evidence",
|
|
func() {
|
|
req = &types.QueryAllEvidenceRequest{}
|
|
},
|
|
true,
|
|
func(res *types.QueryAllEvidenceResponse) {
|
|
suite.Require().Empty(res.Evidence)
|
|
},
|
|
},
|
|
{
|
|
"success",
|
|
func() {
|
|
numEvidence := 100
|
|
_ = suite.populateEvidence(suite.ctx, numEvidence)
|
|
pageReq := &query.PageRequest{
|
|
Key: nil,
|
|
Limit: 50,
|
|
CountTotal: false,
|
|
}
|
|
req = types.NewQueryAllEvidenceRequest(pageReq)
|
|
},
|
|
true,
|
|
func(res *types.QueryAllEvidenceResponse) {
|
|
suite.Equal(len(res.Evidence), 50)
|
|
suite.NotNil(res.Pagination.NextKey)
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
|
|
suite.SetupTest()
|
|
|
|
tc.malleate()
|
|
res, err := suite.queryClient.AllEvidence(suite.ctx, req)
|
|
|
|
if tc.expPass {
|
|
suite.Require().NoError(err)
|
|
suite.Require().NotNil(res)
|
|
} else {
|
|
suite.Require().Error(err)
|
|
suite.Require().Nil(res)
|
|
}
|
|
|
|
tc.posttests(res)
|
|
})
|
|
}
|
|
}
|