Skip to content

Commit 5b36e01

Browse files
mergify[bot]damiannolancrodriguezvega
authored
fix: return correct types in wasm tests and add expected err (backport #5883) (#5887)
* fix: return correct types in wasm tests and add expected err (#5883) Co-authored-by: Cian Hatton cian@interchain.io (cherry picked from commit 6b11895) # Conflicts: # modules/light-clients/08-wasm/types/querier_test.go * fix conflicts * remove duplicate code * remove duplicate code * fix test * fix: address test failures --------- Co-authored-by: Damian Nolan <damiannolan@gmail.com> Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
1 parent 76d755c commit 5b36e01

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

modules/light-clients/08-wasm/types/querier_test.go

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ func (suite *TypesTestSuite) TestStargateQuery() {
131131
testCases := []struct {
132132
name string
133133
malleate func()
134+
expError error
134135
}{
135136
{
136137
"success: custom query",
@@ -141,7 +142,7 @@ func (suite *TypesTestSuite) TestStargateQuery() {
141142

142143
ibcwasm.SetQueryPlugins(&querierPlugin)
143144

144-
suite.mockVM.RegisterQueryCallback(types.StatusMsg{}, func(_ wasmvm.Checksum, _ wasmvmtypes.Env, _ []byte, store wasmvm.KVStore, _ wasmvm.GoAPI, querier wasmvm.Querier, _ wasmvm.GasMeter, _ uint64, _ wasmvmtypes.UFraction) ([]byte, uint64, error) {
145+
suite.mockVM.RegisterQueryCallback(types.TimestampAtHeightMsg{}, func(_ wasmvm.Checksum, _ wasmvmtypes.Env, _ []byte, store wasmvm.KVStore, _ wasmvm.GoAPI, querier wasmvm.Querier, _ wasmvm.GasMeter, _ uint64, _ wasmvmtypes.UFraction) ([]byte, uint64, error) {
145146
queryRequest := types.QueryChecksumsRequest{}
146147
bz, err := queryRequest.Marshal()
147148
suite.Require().NoError(err)
@@ -165,9 +166,13 @@ func (suite *TypesTestSuite) TestStargateQuery() {
165166

166167
store.Set(testKey, value)
167168

168-
return resp, wasmtesting.DefaultGasUsed, nil
169+
result, err := json.Marshal(types.TimestampAtHeightResult{})
170+
suite.Require().NoError(err)
171+
172+
return result, wasmtesting.DefaultGasUsed, nil
169173
})
170174
},
175+
nil,
171176
},
172177
{
173178
// The following test sets a mock proof key and value in the ibc store and registers a query callback on the Status msg.
@@ -194,7 +199,7 @@ func (suite *TypesTestSuite) TestStargateQuery() {
194199
merklePath, err := commitmenttypes.ApplyPrefix(suite.chainA.GetPrefix(), merklePath)
195200
suite.Require().NoError(err)
196201

197-
suite.mockVM.RegisterQueryCallback(types.StatusMsg{}, func(_ wasmvm.Checksum, _ wasmvmtypes.Env, _ []byte, _ wasmvm.KVStore, _ wasmvm.GoAPI, querier wasmvm.Querier, _ wasmvm.GasMeter, _ uint64, _ wasmvmtypes.UFraction) ([]byte, uint64, error) {
202+
suite.mockVM.RegisterQueryCallback(types.TimestampAtHeightMsg{}, func(_ wasmvm.Checksum, _ wasmvmtypes.Env, _ []byte, _ wasmvm.KVStore, _ wasmvm.GoAPI, querier wasmvm.Querier, _ wasmvm.GasMeter, _ uint64, _ wasmvmtypes.UFraction) ([]byte, uint64, error) {
198203
queryRequest := clienttypes.QueryVerifyMembershipRequest{
199204
ClientId: endpoint.ClientID,
200205
Proof: proof,
@@ -220,7 +225,10 @@ func (suite *TypesTestSuite) TestStargateQuery() {
220225

221226
suite.Require().True(respData.Success)
222227

223-
return resp, wasmtesting.DefaultGasUsed, nil
228+
result, err := json.Marshal(types.TimestampAtHeightResult{})
229+
suite.Require().NoError(err)
230+
231+
return result, wasmtesting.DefaultGasUsed, nil
224232
})
225233

226234
suite.mockVM.RegisterSudoCallback(types.VerifyMembershipMsg{}, func(_ wasmvm.Checksum, _ wasmvmtypes.Env, sudoMsg []byte, store wasmvm.KVStore,
@@ -247,11 +255,12 @@ func (suite *TypesTestSuite) TestStargateQuery() {
247255
return &wasmvmtypes.Response{Data: bz}, wasmtesting.DefaultGasUsed, nil
248256
})
249257
},
258+
nil,
250259
},
251260
{
252261
"failure: default querier",
253262
func() {
254-
suite.mockVM.RegisterQueryCallback(types.StatusMsg{}, func(_ wasmvm.Checksum, _ wasmvmtypes.Env, _ []byte, store wasmvm.KVStore, _ wasmvm.GoAPI, querier wasmvm.Querier, _ wasmvm.GasMeter, _ uint64, _ wasmvmtypes.UFraction) ([]byte, uint64, error) {
263+
suite.mockVM.RegisterQueryCallback(types.TimestampAtHeightMsg{}, func(_ wasmvm.Checksum, _ wasmvmtypes.Env, _ []byte, store wasmvm.KVStore, _ wasmvm.GoAPI, querier wasmvm.Querier, _ wasmvm.GasMeter, _ uint64, _ wasmvmtypes.UFraction) ([]byte, uint64, error) {
255264
queryRequest := types.QueryChecksumsRequest{}
256265
bz, err := queryRequest.Marshal()
257266
suite.Require().NoError(err)
@@ -270,6 +279,7 @@ func (suite *TypesTestSuite) TestStargateQuery() {
270279
return nil, wasmtesting.DefaultGasUsed, err
271280
})
272281
},
282+
wasmvmtypes.UnsupportedRequest{Kind: fmt.Sprintf("'%s' path is not allowed from the contract", typeURL)},
273283
},
274284
}
275285

@@ -286,7 +296,19 @@ func (suite *TypesTestSuite) TestStargateQuery() {
286296

287297
clientStore := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), endpoint.ClientID)
288298
clientState := endpoint.GetClientState()
289-
clientState.Status(suite.chainA.GetContext(), clientStore, suite.chainA.App.AppCodec())
299+
300+
// NOTE: we register query callbacks against: types.TimestampAtHeightMsg{}
301+
// in practise, this can against any client state msg, however registering against types.StatusMsg{} introduces recursive loops
302+
// due to test case: "success: verify membership query"
303+
_, err = clientState.GetTimestampAtHeight(suite.chainA.GetContext(), clientStore, suite.chainA.App.AppCodec(), clienttypes.NewHeight(1, 100))
304+
305+
expPass := tc.expError == nil
306+
if expPass {
307+
suite.Require().NoError(err)
308+
} else {
309+
// use error contains as wasmvm errors do not implement errors.Is method
310+
suite.Require().ErrorContains(err, tc.expError.Error())
311+
}
290312

291313
if expDiscardedState {
292314
suite.Require().False(clientStore.Has(testKey))

0 commit comments

Comments
 (0)