Merge pull request #1697 from CosmWasm/1693_default_version
Prevent empty channel version
This commit is contained in:
@@ -75,6 +75,9 @@ func (i IBCHandler) OnChanOpenInit(
|
||||
return "", err
|
||||
}
|
||||
if acceptedVersion == "" { // accept incoming version when nothing returned by contract
|
||||
if version == "" {
|
||||
return "", types.ErrEmpty.Wrap("version")
|
||||
}
|
||||
acceptedVersion = version
|
||||
}
|
||||
|
||||
|
||||
@@ -22,21 +22,31 @@ import (
|
||||
)
|
||||
|
||||
func TestOnChanOpenInitVersion(t *testing.T) {
|
||||
const startVersion = "v1"
|
||||
const v1 = "v1"
|
||||
specs := map[string]struct {
|
||||
contractRsp *wasmvmtypes.IBC3ChannelOpenResponse
|
||||
expVersion string
|
||||
startVersion string
|
||||
contractRsp *wasmvmtypes.IBC3ChannelOpenResponse
|
||||
expVersion string
|
||||
expErr bool
|
||||
}{
|
||||
"different version": {
|
||||
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{Version: "v2"},
|
||||
expVersion: "v2",
|
||||
startVersion: v1,
|
||||
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{Version: "v2"},
|
||||
expVersion: "v2",
|
||||
},
|
||||
"no response": {
|
||||
expVersion: startVersion,
|
||||
startVersion: v1,
|
||||
expVersion: v1,
|
||||
},
|
||||
"empty result": {
|
||||
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{},
|
||||
expVersion: startVersion,
|
||||
startVersion: v1,
|
||||
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{},
|
||||
expVersion: v1,
|
||||
},
|
||||
"empty versions should fail": {
|
||||
startVersion: "",
|
||||
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{},
|
||||
expErr: true,
|
||||
},
|
||||
}
|
||||
for name, spec := range specs {
|
||||
@@ -63,10 +73,17 @@ func TestOnChanOpenInitVersion(t *testing.T) {
|
||||
coordinator.CreateConnections(path)
|
||||
path.EndpointA.ChannelConfig = &ibctesting.ChannelConfig{
|
||||
PortID: contractInfo.IBCPortID,
|
||||
Version: startVersion,
|
||||
Version: spec.startVersion,
|
||||
Order: channeltypes.UNORDERED,
|
||||
}
|
||||
require.NoError(t, path.EndpointA.ChanOpenInit())
|
||||
// when
|
||||
gotErr := path.EndpointA.ChanOpenInit()
|
||||
// then
|
||||
if spec.expErr {
|
||||
require.Error(t, gotErr)
|
||||
return
|
||||
}
|
||||
require.NoError(t, gotErr)
|
||||
assert.Equal(t, spec.expVersion, path.EndpointA.ChannelConfig.Version)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user