148 lines
3.5 KiB
Go
148 lines
3.5 KiB
Go
package types_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/cosmos/cosmos-sdk/x/ibc/04-channel/types"
|
|
)
|
|
|
|
const (
|
|
testPort1 = "firstport"
|
|
testPort2 = "secondport"
|
|
testConnectionIDA = "connectionidatob"
|
|
|
|
testChannel1 = "firstchannel"
|
|
testChannel2 = "secondchannel"
|
|
|
|
testChannelOrder = types.ORDERED
|
|
testChannelVersion = "1.0"
|
|
)
|
|
|
|
func TestValidateGenesis(t *testing.T) {
|
|
counterparty1 := types.NewCounterparty(testPort1, testChannel1)
|
|
counterparty2 := types.NewCounterparty(testPort2, testChannel2)
|
|
testCases := []struct {
|
|
name string
|
|
genState types.GenesisState
|
|
expPass bool
|
|
}{
|
|
{
|
|
name: "default",
|
|
genState: types.DefaultGenesisState(),
|
|
expPass: true,
|
|
},
|
|
{
|
|
name: "valid genesis",
|
|
genState: types.NewGenesisState(
|
|
[]types.IdentifiedChannel{
|
|
types.NewIdentifiedChannel(
|
|
testPort1, testChannel1, types.NewChannel(
|
|
types.INIT, testChannelOrder, counterparty2, []string{testConnectionIDA}, testChannelVersion,
|
|
),
|
|
),
|
|
types.NewIdentifiedChannel(
|
|
testPort2, testChannel2, types.NewChannel(
|
|
types.INIT, testChannelOrder, counterparty1, []string{testConnectionIDA}, testChannelVersion,
|
|
),
|
|
),
|
|
},
|
|
[]types.PacketAckCommitment{
|
|
types.NewPacketAckCommitment(testPort2, testChannel2, 1, []byte("ack")),
|
|
},
|
|
[]types.PacketAckCommitment{
|
|
types.NewPacketAckCommitment(testPort1, testChannel1, 1, []byte("commit_hash")),
|
|
},
|
|
[]types.PacketSequence{
|
|
types.NewPacketSequence(testPort1, testChannel1, 1),
|
|
},
|
|
[]types.PacketSequence{
|
|
types.NewPacketSequence(testPort2, testChannel2, 1),
|
|
},
|
|
[]types.PacketSequence{
|
|
types.NewPacketSequence(testPort2, testChannel2, 1),
|
|
},
|
|
),
|
|
expPass: true,
|
|
},
|
|
{
|
|
name: "invalid channel",
|
|
genState: types.GenesisState{
|
|
Channels: []types.IdentifiedChannel{
|
|
types.NewIdentifiedChannel(
|
|
testPort1, "(testChannel1)", types.NewChannel(
|
|
types.INIT, testChannelOrder, counterparty2, []string{testConnectionIDA}, testChannelVersion,
|
|
),
|
|
),
|
|
},
|
|
},
|
|
expPass: false,
|
|
},
|
|
{
|
|
name: "invalid ack",
|
|
genState: types.GenesisState{
|
|
Acknowledgements: []types.PacketAckCommitment{
|
|
types.NewPacketAckCommitment(testPort2, testChannel2, 1, nil),
|
|
},
|
|
},
|
|
expPass: false,
|
|
},
|
|
{
|
|
name: "invalid commitment",
|
|
genState: types.GenesisState{
|
|
Commitments: []types.PacketAckCommitment{
|
|
types.NewPacketAckCommitment(testPort1, testChannel1, 1, nil),
|
|
},
|
|
},
|
|
expPass: false,
|
|
},
|
|
{
|
|
name: "invalid send seq",
|
|
genState: types.GenesisState{
|
|
SendSequences: []types.PacketSequence{
|
|
types.NewPacketSequence(testPort1, testChannel1, 0),
|
|
},
|
|
},
|
|
expPass: false,
|
|
},
|
|
{
|
|
name: "invalid recv seq",
|
|
genState: types.GenesisState{
|
|
RecvSequences: []types.PacketSequence{
|
|
types.NewPacketSequence(testPort1, "(testChannel1)", 1),
|
|
},
|
|
},
|
|
expPass: false,
|
|
},
|
|
{
|
|
name: "invalid recv seq 2",
|
|
genState: types.GenesisState{
|
|
RecvSequences: []types.PacketSequence{
|
|
types.NewPacketSequence("(testPort1)", testChannel1, 1),
|
|
},
|
|
},
|
|
expPass: false,
|
|
},
|
|
{
|
|
name: "invalid ack seq",
|
|
genState: types.GenesisState{
|
|
AckSequences: []types.PacketSequence{
|
|
types.NewPacketSequence(testPort1, "(testChannel1)", 1),
|
|
},
|
|
},
|
|
expPass: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
tc := tc
|
|
err := tc.genState.Validate()
|
|
if tc.expPass {
|
|
require.NoError(t, err, tc.name)
|
|
} else {
|
|
require.Error(t, err, tc.name)
|
|
}
|
|
}
|
|
}
|