chore: add some visibility in tx service tests (#25469)

This commit is contained in:
Alex | Cosmos Labs 2025-10-16 15:45:50 -04:00 committed by GitHub
parent ce8bed2fd5
commit d08146003c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 99 additions and 91 deletions

View File

@ -248,64 +248,64 @@ func (s *E2ETestSuite) TestGetTxEvents_GRPC() {
expLen int
}{
{
"nil request",
nil,
true,
"request cannot be nil",
0,
name: "nil request",
req: nil,
expErr: true,
expErrMsg: "request cannot be nil",
expLen: 0,
},
{
"empty request",
&tx.GetTxsEventRequest{},
true,
"query cannot be empty",
0,
name: "empty request",
req: &tx.GetTxsEventRequest{},
expErr: true,
expErrMsg: "query cannot be empty",
expLen: 0,
},
{
"request with dummy event",
&tx.GetTxsEventRequest{Query: "foobar"},
true,
"failed to search for txs",
0,
name: "request with dummy event",
req: &tx.GetTxsEventRequest{Query: "foobar"},
expErr: true,
expErrMsg: "failed to search for txs",
expLen: 0,
},
{
"request with order-by",
&tx.GetTxsEventRequest{
name: "request with order-by",
req: &tx.GetTxsEventRequest{
Query: bankMsgSendEventAction,
OrderBy: tx.OrderBy_ORDER_BY_ASC,
},
false,
"",
3,
expErr: false,
expErrMsg: "",
expLen: 3,
},
{
"without pagination",
&tx.GetTxsEventRequest{
name: "without pagination",
req: &tx.GetTxsEventRequest{
Query: bankMsgSendEventAction,
},
false,
"",
3,
expErr: false,
expErrMsg: "",
expLen: 3,
},
{
"with pagination",
&tx.GetTxsEventRequest{
name: "with pagination",
req: &tx.GetTxsEventRequest{
Query: bankMsgSendEventAction,
Page: 1,
Limit: 2,
},
false,
"",
2,
expErr: false,
expErrMsg: "",
expLen: 2,
},
{
"with multi events",
&tx.GetTxsEventRequest{
name: "with multi events",
req: &tx.GetTxsEventRequest{
Query: fmt.Sprintf("%s AND message.module='bank'", bankMsgSendEventAction),
},
false,
"",
3,
expErr: false,
expErrMsg: "",
expLen: 3,
},
}
for _, tc := range testCases {
@ -315,18 +315,18 @@ func (s *E2ETestSuite) TestGetTxEvents_GRPC() {
if tc.expErr {
s.Require().Error(err)
s.Require().Contains(err.Error(), tc.expErrMsg)
} else {
s.Require().NoError(err)
s.Require().GreaterOrEqual(len(grpcRes.Txs), 1)
s.Require().Equal("foobar", grpcRes.Txs[0].Body.Memo)
s.Require().Equal(tc.expLen, len(grpcRes.Txs))
// Make sure fields are populated.
// ref: https://github.com/cosmos/cosmos-sdk/issues/8680
// ref: https://github.com/cosmos/cosmos-sdk/issues/8681
s.Require().NotEmpty(grpcRes.TxResponses[0].Timestamp)
s.Require().Empty(grpcRes.TxResponses[0].RawLog) // logs are empty if the transactions are successful
return
}
s.Require().NoError(err)
s.Require().GreaterOrEqual(len(grpcRes.Txs), 1)
s.Require().Equal("foobar", grpcRes.Txs[0].Body.Memo)
s.Require().Equal(tc.expLen, len(grpcRes.Txs), fmt.Sprintf("%q", grpcRes.Txs))
// Make sure fields are populated.
// ref: https://github.com/cosmos/cosmos-sdk/issues/8680
// ref: https://github.com/cosmos/cosmos-sdk/issues/8681
s.Require().NotEmpty(grpcRes.TxResponses[0].Timestamp)
s.Require().Empty(grpcRes.TxResponses[0].RawLog) // logs are empty if the transactions are successful
})
}
}
@ -341,52 +341,60 @@ func (s *E2ETestSuite) TestGetTxEvents_GRPCGateway() {
expLen int
}{
{
"empty params",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", val.APIAddress),
true,
"query cannot be empty", 0,
name: "empty params",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", val.APIAddress),
expErr: true,
expErrMsg: "query cannot be empty",
expLen: 0,
},
{
"without pagination",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s", val.APIAddress, bankMsgSendEventAction),
false,
"", 3,
name: "without pagination",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s", val.APIAddress, bankMsgSendEventAction),
expErr: false,
expErrMsg: "",
expLen: 3,
},
{
"with pagination",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&page=%d&limit=%d", val.APIAddress, bankMsgSendEventAction, 1, 2),
false,
"", 2,
name: "with pagination",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&page=%d&limit=%d", val.APIAddress, bankMsgSendEventAction, 1, 2),
expErr: false,
expErrMsg: "",
expLen: 2,
},
{
"valid request: order by asc",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s&order_by=ORDER_BY_ASC", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
false,
"", 3,
name: "valid request: order by asc",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s&order_by=ORDER_BY_ASC", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
expErr: false,
expErrMsg: "",
expLen: 3,
},
{
"valid request: order by desc",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s&order_by=ORDER_BY_DESC", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
false,
"", 3,
name: "valid request: order by desc",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s&order_by=ORDER_BY_DESC", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
expErr: false,
expErrMsg: "",
expLen: 3,
},
{
"invalid request: invalid order by",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s&order_by=invalid_order", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
true,
"is not a valid tx.OrderBy", 0,
name: "invalid request: invalid order by",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s&order_by=invalid_order", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
expErr: true,
expErrMsg: "is not a valid tx.OrderBy",
expLen: 0,
},
{
"expect pass with multiple-events",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
false,
"", 3,
name: "expect pass with multiple-events",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s&query=%s", val.APIAddress, bankMsgSendEventAction, "message.module='bank'"),
expErr: false,
expErrMsg: "",
expLen: 3,
},
{
"expect pass with escape event",
fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s", val.APIAddress, "message.action%3D'/cosmos.bank.v1beta1.MsgSend'"),
false,
"", 3,
name: "expect pass with escape event",
url: fmt.Sprintf("%s/cosmos/tx/v1beta1/txs?query=%s", val.APIAddress, "message.action%3D'/cosmos.bank.v1beta1.MsgSend'"),
expErr: false,
expErrMsg: "",
expLen: 3,
},
}
for _, tc := range testCases {
@ -395,15 +403,15 @@ func (s *E2ETestSuite) TestGetTxEvents_GRPCGateway() {
s.Require().NoError(err)
if tc.expErr {
s.Require().Contains(string(res), tc.expErrMsg)
} else {
var result tx.GetTxsEventResponse
err = val.ClientCtx.Codec.UnmarshalJSON(res, &result)
s.Require().NoError(err, "failed to unmarshal JSON: %s", res)
s.Require().GreaterOrEqual(len(result.Txs), 1)
s.Require().Equal("foobar", result.Txs[0].Body.Memo)
s.Require().NotZero(result.TxResponses[0].Height)
s.Require().Equal(tc.expLen, len(result.Txs))
return
}
var result tx.GetTxsEventResponse
err = val.ClientCtx.Codec.UnmarshalJSON(res, &result)
s.Require().NoError(err, "failed to unmarshal JSON: %s", res)
s.Require().GreaterOrEqual(len(result.Txs), 1)
s.Require().Equal("foobar", result.Txs[0].Body.Memo)
s.Require().NotZero(result.TxResponses[0].Height)
s.Require().Equal(tc.expLen, len(result.Txs), fmt.Sprintf("%q", result.Txs))
})
}
}

View File

@ -43,7 +43,7 @@ func NewTxServer(clientCtx client.Context, simulate baseAppSimulateFn, interface
var _ txtypes.ServiceServer = txServer{}
// GetTxsEvent implements the ServiceServer.TxsByEvents RPC method.
func (s txServer) GetTxsEvent(ctx context.Context, req *txtypes.GetTxsEventRequest) (*txtypes.GetTxsEventResponse, error) {
func (s txServer) GetTxsEvent(_ context.Context, req *txtypes.GetTxsEventRequest) (*txtypes.GetTxsEventResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "request cannot be nil")
}
@ -73,7 +73,7 @@ func (s txServer) GetTxsEvent(ctx context.Context, req *txtypes.GetTxsEventReque
}
// Simulate implements the ServiceServer.Simulate RPC method.
func (s txServer) Simulate(ctx context.Context, req *txtypes.SimulateRequest) (*txtypes.SimulateResponse, error) {
func (s txServer) Simulate(_ context.Context, req *txtypes.SimulateRequest) (*txtypes.SimulateResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "invalid empty tx")
}
@ -107,7 +107,7 @@ func (s txServer) Simulate(ctx context.Context, req *txtypes.SimulateRequest) (*
}
// GetTx implements the ServiceServer.GetTx RPC method.
func (s txServer) GetTx(ctx context.Context, req *txtypes.GetTxRequest) (*txtypes.GetTxResponse, error) {
func (s txServer) GetTx(_ context.Context, req *txtypes.GetTxRequest) (*txtypes.GetTxResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "request cannot be nil")
}
@ -222,7 +222,7 @@ func (s txServer) BroadcastTx(ctx context.Context, req *txtypes.BroadcastTxReque
}
// TxEncode implements the ServiceServer.TxEncode RPC method.
func (s txServer) TxEncode(ctx context.Context, req *txtypes.TxEncodeRequest) (*txtypes.TxEncodeResponse, error) {
func (s txServer) TxEncode(_ context.Context, req *txtypes.TxEncodeRequest) (*txtypes.TxEncodeResponse, error) {
if req.Tx == nil {
return nil, status.Error(codes.InvalidArgument, "invalid empty tx")
}
@ -262,7 +262,7 @@ func (s txServer) TxEncodeAmino(_ context.Context, req *txtypes.TxEncodeAminoReq
}
// TxDecode implements the ServiceServer.TxDecode RPC method.
func (s txServer) TxDecode(ctx context.Context, req *txtypes.TxDecodeRequest) (*txtypes.TxDecodeResponse, error) {
func (s txServer) TxDecode(_ context.Context, req *txtypes.TxDecodeRequest) (*txtypes.TxDecodeResponse, error) {
if req.TxBytes == nil {
return nil, status.Error(codes.InvalidArgument, "invalid empty tx bytes")
}