From fcf51867171d1cd973c31bb48befb9f6074ed139 Mon Sep 17 00:00:00 2001 From: dauTT Date: Tue, 8 Sep 2020 16:04:54 +0200 Subject: [PATCH] Enforce ICS 20 (transfer) to only use UNORDERED channels (#6992) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Enforce ICS 20 (transfer) to only use UNORDERED channels * Cosmetic changes * Fix tests * revert and fix test issue * add tests Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Colin Axner Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- x/ibc-transfer/handler_test.go | 10 +- x/ibc-transfer/module.go | 10 +- x/ibc-transfer/module_test.go | 234 +++++++++++++++++++++ x/ibc/04-channel/keeper/grpc_query_test.go | 6 +- x/ibc/04-channel/keeper/handshake_test.go | 106 +++++----- x/ibc/04-channel/keeper/keeper_test.go | 6 +- 6 files changed, 304 insertions(+), 68 deletions(-) create mode 100644 x/ibc-transfer/module_test.go diff --git a/x/ibc-transfer/handler_test.go b/x/ibc-transfer/handler_test.go index 97f5f4d751..97784e0716 100644 --- a/x/ibc-transfer/handler_test.go +++ b/x/ibc-transfer/handler_test.go @@ -13,7 +13,7 @@ import ( ibctesting "github.com/cosmos/cosmos-sdk/x/ibc/testing" ) -type HandlerTestSuite struct { +type TransferTestSuite struct { suite.Suite coordinator *ibctesting.Coordinator @@ -23,7 +23,7 @@ type HandlerTestSuite struct { chainB *ibctesting.TestChain } -func (suite *HandlerTestSuite) SetupTest() { +func (suite *TransferTestSuite) SetupTest() { suite.coordinator = ibctesting.NewCoordinator(suite.T(), 2) suite.chainA = suite.coordinator.GetChain(ibctesting.GetChainID(0)) suite.chainB = suite.coordinator.GetChain(ibctesting.GetChainID(1)) @@ -31,7 +31,7 @@ func (suite *HandlerTestSuite) SetupTest() { // constructs a send from chainA to chainB on the established channel/connection // and sends the same coin back from chainB to chainA. -func (suite *HandlerTestSuite) TestHandleMsgTransfer() { +func (suite *TransferTestSuite) TestHandleMsgTransfer() { clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.UNORDERED) originalBalance := suite.chainA.App.BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom) @@ -88,6 +88,6 @@ func (suite *HandlerTestSuite) TestHandleMsgTransfer() { suite.Require().Zero(balance.Amount.Int64()) } -func TestHandlerTestSuite(t *testing.T) { - suite.Run(t, new(HandlerTestSuite)) +func TestTransferTestSuite(t *testing.T) { + suite.Run(t, new(TransferTestSuite)) } diff --git a/x/ibc-transfer/module.go b/x/ibc-transfer/module.go index d98462cf15..d0d5766e7a 100644 --- a/x/ibc-transfer/module.go +++ b/x/ibc-transfer/module.go @@ -194,7 +194,9 @@ func (am AppModule) OnChanOpenInit( counterparty channeltypes.Counterparty, version string, ) error { - // TODO: Enforce ordering, currently relayers use ORDERED channels + if order != channeltypes.UNORDERED { + return sdkerrors.Wrapf(channeltypes.ErrInvalidChannelOrdering, "expected %s channel, got %s ", channeltypes.UNORDERED, order) + } // Require portID is the portID transfer module is bound to boundPort := am.keeper.GetPort(ctx) @@ -211,7 +213,6 @@ func (am AppModule) OnChanOpenInit( return err } - // TODO: escrow return nil } @@ -227,7 +228,9 @@ func (am AppModule) OnChanOpenTry( version, counterpartyVersion string, ) error { - // TODO: Enforce ordering, currently relayers use ORDERED channels + if order != channeltypes.UNORDERED { + return sdkerrors.Wrapf(channeltypes.ErrInvalidChannelOrdering, "expected %s channel, got %s ", channeltypes.UNORDERED, order) + } // Require portID is the portID transfer module is bound to boundPort := am.keeper.GetPort(ctx) @@ -248,7 +251,6 @@ func (am AppModule) OnChanOpenTry( return err } - // TODO: escrow return nil } diff --git a/x/ibc-transfer/module_test.go b/x/ibc-transfer/module_test.go new file mode 100644 index 0000000000..5a3d41f30a --- /dev/null +++ b/x/ibc-transfer/module_test.go @@ -0,0 +1,234 @@ +package transfer_test + +import ( + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + "github.com/cosmos/cosmos-sdk/x/ibc-transfer/types" + channeltypes "github.com/cosmos/cosmos-sdk/x/ibc/04-channel/types" + host "github.com/cosmos/cosmos-sdk/x/ibc/24-host" + "github.com/cosmos/cosmos-sdk/x/ibc/exported" + ibctesting "github.com/cosmos/cosmos-sdk/x/ibc/testing" +) + +func (suite *TransferTestSuite) TestOnChanOpenInit() { + var ( + channel *channeltypes.Channel + testChannel ibctesting.TestChannel + connA *ibctesting.TestConnection + chanCap *capabilitytypes.Capability + ) + + testCases := []struct { + name string + malleate func() + expPass bool + }{ + + { + "success", func() {}, true, + }, + { + "invalid order - ORDERED", func() { + channel.Ordering = channeltypes.ORDERED + }, false, + }, + { + "invalid port ID", func() { + testChannel = connA.NextTestChannel(ibctesting.MockPort) + }, false, + }, + { + "invalid version", func() { + channel.Version = "version" + }, false, + }, + { + "capability already claimed", func() { + err := suite.chainA.App.ScopedTransferKeeper.ClaimCapability(suite.chainA.GetContext(), chanCap, host.ChannelCapabilityPath(testChannel.PortID, testChannel.ID)) + suite.Require().NoError(err) + }, false, + }, + } + + for _, tc := range testCases { + tc := tc + + suite.Run(tc.name, func() { + suite.SetupTest() // reset + + _, _, connA, _ = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) + testChannel = connA.NextTestChannel(ibctesting.TransferPort) + counterparty := channeltypes.NewCounterparty(testChannel.PortID, testChannel.ID) + channel = &channeltypes.Channel{ + State: channeltypes.INIT, + Ordering: channeltypes.UNORDERED, + Counterparty: counterparty, + ConnectionHops: []string{connA.ID}, + Version: types.Version, + } + + module, _, err := suite.chainA.App.IBCKeeper.PortKeeper.LookupModuleByPort(suite.chainA.GetContext(), ibctesting.TransferPort) + suite.Require().NoError(err) + + chanCap, err = suite.chainA.App.ScopedIBCKeeper.NewCapability(suite.chainA.GetContext(), host.ChannelCapabilityPath(ibctesting.TransferPort, testChannel.ID)) + suite.Require().NoError(err) + + cbs, ok := suite.chainA.App.IBCKeeper.Router.GetRoute(module) + suite.Require().True(ok) + + tc.malleate() // explicitly change fields in channel and testChannel + + err = cbs.OnChanOpenInit(suite.chainA.GetContext(), channel.Ordering, channel.GetConnectionHops(), + testChannel.PortID, testChannel.ID, chanCap, channel.Counterparty, channel.GetVersion(), + ) + + if tc.expPass { + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + + }) + } +} + +func (suite *TransferTestSuite) TestOnChanOpenTry() { + var ( + channel *channeltypes.Channel + testChannel ibctesting.TestChannel + connA *ibctesting.TestConnection + chanCap *capabilitytypes.Capability + counterpartyVersion string + ) + + testCases := []struct { + name string + malleate func() + expPass bool + }{ + + { + "success", func() {}, true, + }, + { + "invalid order - ORDERED", func() { + channel.Ordering = channeltypes.ORDERED + }, false, + }, + { + "invalid port ID", func() { + testChannel = connA.NextTestChannel(ibctesting.MockPort) + }, false, + }, + { + "invalid version", func() { + channel.Version = "version" + }, false, + }, + { + "invalid counterparty version", func() { + counterpartyVersion = "version" + }, false, + }, + { + "capability already claimed", func() { + err := suite.chainA.App.ScopedTransferKeeper.ClaimCapability(suite.chainA.GetContext(), chanCap, host.ChannelCapabilityPath(testChannel.PortID, testChannel.ID)) + suite.Require().NoError(err) + }, false, + }, + } + + for _, tc := range testCases { + tc := tc + + suite.Run(tc.name, func() { + suite.SetupTest() // reset + + _, _, connA, _ = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) + testChannel = connA.NextTestChannel(ibctesting.TransferPort) + counterparty := channeltypes.NewCounterparty(testChannel.PortID, testChannel.ID) + channel = &channeltypes.Channel{ + State: channeltypes.TRYOPEN, + Ordering: channeltypes.UNORDERED, + Counterparty: counterparty, + ConnectionHops: []string{connA.ID}, + Version: types.Version, + } + counterpartyVersion = types.Version + + module, _, err := suite.chainA.App.IBCKeeper.PortKeeper.LookupModuleByPort(suite.chainA.GetContext(), ibctesting.TransferPort) + suite.Require().NoError(err) + + chanCap, err = suite.chainA.App.ScopedIBCKeeper.NewCapability(suite.chainA.GetContext(), host.ChannelCapabilityPath(ibctesting.TransferPort, testChannel.ID)) + suite.Require().NoError(err) + + cbs, ok := suite.chainA.App.IBCKeeper.Router.GetRoute(module) + suite.Require().True(ok) + + tc.malleate() // explicitly change fields in channel and testChannel + + err = cbs.OnChanOpenTry(suite.chainA.GetContext(), channel.Ordering, channel.GetConnectionHops(), + testChannel.PortID, testChannel.ID, chanCap, channel.Counterparty, channel.GetVersion(), counterpartyVersion, + ) + + if tc.expPass { + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + + }) + } +} + +func (suite *TransferTestSuite) TestOnChanOpenAck() { + var ( + testChannel ibctesting.TestChannel + connA *ibctesting.TestConnection + counterpartyVersion string + ) + + testCases := []struct { + name string + malleate func() + expPass bool + }{ + + { + "success", func() {}, true, + }, + { + "invalid counterparty version", func() { + counterpartyVersion = "version" + }, false, + }, + } + + for _, tc := range testCases { + tc := tc + + suite.Run(tc.name, func() { + suite.SetupTest() // reset + + _, _, connA, _ = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) + testChannel = connA.NextTestChannel(ibctesting.TransferPort) + counterpartyVersion = types.Version + + module, _, err := suite.chainA.App.IBCKeeper.PortKeeper.LookupModuleByPort(suite.chainA.GetContext(), ibctesting.TransferPort) + suite.Require().NoError(err) + + cbs, ok := suite.chainA.App.IBCKeeper.Router.GetRoute(module) + suite.Require().True(ok) + + tc.malleate() // explicitly change fields in channel and testChannel + + err = cbs.OnChanOpenAck(suite.chainA.GetContext(), testChannel.PortID, testChannel.ID, counterpartyVersion) + + if tc.expPass { + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + + }) + } +} diff --git a/x/ibc/04-channel/keeper/grpc_query_test.go b/x/ibc/04-channel/keeper/grpc_query_test.go index c430b908c4..f6fbcb1d50 100644 --- a/x/ibc/04-channel/keeper/grpc_query_test.go +++ b/x/ibc/04-channel/keeper/grpc_query_test.go @@ -64,7 +64,7 @@ func (suite *KeeperTestSuite) TestQueryChannel() { func() { _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) // init channel - channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) expChannel = suite.chainA.GetChannel(channelA) @@ -379,7 +379,7 @@ func (suite *KeeperTestSuite) TestQueryChannelClientState() { func() { clientA, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) // init channel - channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) expClientState := suite.chainA.GetClientState(clientA) @@ -507,7 +507,7 @@ func (suite *KeeperTestSuite) TestQueryChannelConsensusState() { func() { clientA, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) // init channel - channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) clientState := suite.chainA.GetClientState(clientA) diff --git a/x/ibc/04-channel/keeper/handshake_test.go b/x/ibc/04-channel/keeper/handshake_test.go index 925f8a8a09..f2490568e5 100644 --- a/x/ibc/04-channel/keeper/handshake_test.go +++ b/x/ibc/04-channel/keeper/handshake_test.go @@ -34,8 +34,8 @@ func (suite *KeeperTestSuite) TestChanOpenInit() { {"success", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) features = []string{"ORDER_ORDERED", "ORDER_UNORDERED"} - suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) + suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) }, true}, {"channel already exists", func() { _, _, connA, connB, _, _ = suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) @@ -77,8 +77,8 @@ func (suite *KeeperTestSuite) TestChanOpenInit() { connA.ID, conn, ) features = []string{"ORDER_ORDERED", "ORDER_UNORDERED"} - suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) + suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) }, false}, {"connection does not support ORDERED channels", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) @@ -96,8 +96,8 @@ func (suite *KeeperTestSuite) TestChanOpenInit() { ) // NOTE: Opening UNORDERED channels is still expected to pass but ORDERED channels should fail features = []string{"ORDER_UNORDERED"} - suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) + suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) }, true}, } @@ -109,8 +109,8 @@ func (suite *KeeperTestSuite) TestChanOpenInit() { suite.SetupTest() // reset tc.malleate() - counterparty := types.NewCounterparty(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID, connB.FirstOrNextTestChannel(ibctesting.TransferPort).ID) - channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort) + counterparty := types.NewCounterparty(connB.FirstOrNextTestChannel(ibctesting.MockPort).PortID, connB.FirstOrNextTestChannel(ibctesting.MockPort).ID) + channelA := connA.FirstOrNextTestChannel(ibctesting.MockPort) cap, err := suite.chainA.App.IBCKeeper.ChannelKeeper.ChanOpenInit( suite.chainA.GetContext(), order, []string{connA.ID}, @@ -160,16 +160,16 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { testCases := []testCase{ {"success", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) - suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID) + suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.MockPort).PortID) }, true}, {"previous channel with invalid state", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) // make previous channel have wrong ordering - suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.TransferPort, ibctesting.TransferPort, types.UNORDERED) + suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.MockPort, ibctesting.MockPort, types.UNORDERED) }, false}, {"connection doesn't exist", func() { // any non-nil values of connA and connB are acceptable @@ -177,14 +177,14 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { suite.Require().NotNil(connB) // pass capability check - suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID) + suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel(ibctesting.MockPort).PortID) }, false}, {"connection is not OPEN", func() { clientA, clientB := suite.coordinator.SetupClients(suite.chainA, suite.chainB, exported.Tendermint) // pass capability check - suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID) + suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel(ibctesting.MockPort).PortID) var err error connB, connA, err = suite.coordinator.ConnOpenInit(suite.chainB, suite.chainA, clientB, clientA) @@ -192,27 +192,27 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { }, false}, {"consensus state not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) - suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID) + suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.MockPort).PortID) heightDiff = 3 // consensus state doesn't exist at this height }, false}, {"channel verification failed", func() { // not creating a channel on chainA will result in an invalid proof of existence _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID) + portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.MockPort).PortID) }, false}, {"port capability not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) portCap = capabilitytypes.NewCapability(3) }, false}, {"connection version not negotiated", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) // modify connB versions conn := suite.chainB.GetConnection(connB) @@ -225,12 +225,12 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { suite.chainB.GetContext(), connB.ID, conn, ) - suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID) + suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.MockPort).PortID) }, false}, {"connection does not support ORDERED channels", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) // modify connA versions to only support UNORDERED channels conn := suite.chainA.GetConnection(connA) @@ -243,8 +243,8 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { suite.chainA.GetContext(), connA.ID, conn, ) - suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) - portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID) + suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) + portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.MockPort).PortID) }, false}, } @@ -255,15 +255,15 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { heightDiff = 0 // must be explicitly changed in malleate tc.malleate() - counterparty := types.NewCounterparty(connA.FirstOrNextTestChannel(ibctesting.TransferPort).PortID, connA.FirstOrNextTestChannel(ibctesting.TransferPort).ID) - channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort) + counterparty := types.NewCounterparty(connA.FirstOrNextTestChannel(ibctesting.MockPort).PortID, connA.FirstOrNextTestChannel(ibctesting.MockPort).ID) + channelB := connB.FirstOrNextTestChannel(ibctesting.MockPort) channelKey := host.KeyChannel(counterparty.PortId, counterparty.ChannelId) proof, proofHeight := suite.chainA.QueryProof(channelKey) cap, err := suite.chainB.App.IBCKeeper.ChannelKeeper.ChanOpenTry( suite.chainB.GetContext(), types.ORDERED, []string{connB.ID}, - channelB.PortID, channelB.ID, portCap, counterparty, channelB.Version, connA.FirstOrNextTestChannel(ibctesting.TransferPort).Version, + channelB.PortID, channelB.ID, portCap, counterparty, channelB.Version, connA.FirstOrNextTestChannel(ibctesting.MockPort).Version, proof, malleateHeight(proofHeight, heightDiff), ) @@ -298,7 +298,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { testCases := []testCase{ {"success", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -315,7 +315,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { }, false}, {"connection not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -336,7 +336,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { suite.Require().NoError(err) // create channel in init - channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID) @@ -344,7 +344,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { }, false}, {"consensus state not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -357,7 +357,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { {"channel verification failed", func() { // chainB is INIT, chainA in TRYOPEN _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelB, channelA, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelB, channelA, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainA, suite.chainB, channelA, channelB, connA, types.ORDERED) @@ -367,7 +367,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { }, false}, {"channel capability not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -384,8 +384,8 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { tc.malleate() - channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort) - channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort) + channelA := connA.FirstOrNextTestChannel(ibctesting.MockPort) + channelB := connB.FirstOrNextTestChannel(ibctesting.MockPort) channelKey := host.KeyChannel(channelB.PortID, channelB.ID) proof, proofHeight := suite.chainB.QueryProof(channelKey) @@ -417,7 +417,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() { testCases := []testCase{ {"success", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -437,7 +437,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() { }, false}, {"connection not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -459,13 +459,13 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() { var err error connA, connB, err = suite.coordinator.ConnOpenInit(suite.chainB, suite.chainA, clientB, clientA) suite.Require().NoError(err) - channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort) + channelB := connB.FirstOrNextTestChannel(ibctesting.MockPort) suite.chainB.CreateChannelCapability(channelB.PortID, channelB.ID) channelCap = suite.chainB.GetChannelCapability(channelB.PortID, channelB.ID) }, false}, {"consensus state not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -481,7 +481,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() { {"channel verification failed", func() { // chainA is INIT, chainB in TRYOPEN _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -491,7 +491,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() { }, false}, {"channel capability not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) @@ -512,8 +512,8 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() { tc.malleate() - channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort) - channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort) + channelA := connA.FirstOrNextTestChannel(ibctesting.MockPort) + channelB := connB.FirstOrNextTestChannel(ibctesting.MockPort) channelKey := host.KeyChannel(channelA.PortID, channelA.ID) proof, proofHeight := suite.chainA.QueryProof(channelKey) @@ -551,7 +551,7 @@ func (suite *KeeperTestSuite) TestChanCloseInit() { // any non-nil values work for connections suite.Require().NotNil(connA) suite.Require().NotNil(connB) - channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort) + channelA := connA.FirstOrNextTestChannel(ibctesting.MockPort) // ensure channel capability check passes suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID) @@ -584,7 +584,7 @@ func (suite *KeeperTestSuite) TestChanCloseInit() { suite.Require().NoError(err) // create channel in init - channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) // ensure channel capability check passes suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID) @@ -603,7 +603,7 @@ func (suite *KeeperTestSuite) TestChanCloseInit() { tc.malleate() - channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort) + channelA := connA.FirstOrNextTestChannel(ibctesting.MockPort) err := suite.chainA.App.IBCKeeper.ChannelKeeper.ChanCloseInit( suite.chainA.GetContext(), channelA.PortID, channelA.ID, channelCap, @@ -643,7 +643,7 @@ func (suite *KeeperTestSuite) TestChanCloseConfirm() { // any non-nil values work for connections suite.Require().NotNil(connA) suite.Require().NotNil(connB) - channelB = connB.FirstOrNextTestChannel(ibctesting.TransferPort) + channelB = connB.FirstOrNextTestChannel(ibctesting.MockPort) // ensure channel capability check passes suite.chainB.CreateChannelCapability(channelB.PortID, channelB.ID) @@ -673,7 +673,7 @@ func (suite *KeeperTestSuite) TestChanCloseConfirm() { suite.Require().NoError(err) // create channel in init - channelB, _, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelB, _, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) // ensure channel capability check passes @@ -713,8 +713,8 @@ func (suite *KeeperTestSuite) TestChanCloseConfirm() { tc.malleate() - channelA = connA.FirstOrNextTestChannel(ibctesting.TransferPort) - channelB = connB.FirstOrNextTestChannel(ibctesting.TransferPort) + channelA = connA.FirstOrNextTestChannel(ibctesting.MockPort) + channelB = connB.FirstOrNextTestChannel(ibctesting.MockPort) channelKey := host.KeyChannel(channelA.PortID, channelA.ID) proof, proofHeight := suite.chainA.QueryProof(channelKey) diff --git a/x/ibc/04-channel/keeper/keeper_test.go b/x/ibc/04-channel/keeper/keeper_test.go index ca1d6018e1..2ed6291e17 100644 --- a/x/ibc/04-channel/keeper/keeper_test.go +++ b/x/ibc/04-channel/keeper/keeper_test.go @@ -40,12 +40,12 @@ func (suite *KeeperTestSuite) TestSetChannel() { _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) // check for channel to be created on chainB - channelA := connA.NextTestChannel(ibctesting.TransferPort) + channelA := connA.NextTestChannel(ibctesting.MockPort) _, found := suite.chainA.App.IBCKeeper.ChannelKeeper.GetChannel(suite.chainA.GetContext(), channelA.PortID, channelA.ID) suite.False(found) // init channel - channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED) + channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.NoError(err) storedChannel, found := suite.chainA.App.IBCKeeper.ChannelKeeper.GetChannel(suite.chainA.GetContext(), channelA.PortID, channelA.ID) @@ -77,7 +77,7 @@ func (suite KeeperTestSuite) TestGetAllChannels() { connA1, connB1 := suite.coordinator.CreateConnection(suite.chainA, suite.chainB, clientA, clientB) // channel2 is on a second connection on chainA - testchannel2, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA1, connB1, ibctesting.TransferPort, ibctesting.TransferPort, types.UNORDERED) + testchannel2, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA1, connB1, ibctesting.MockPort, ibctesting.MockPort, types.UNORDERED) suite.Require().NoError(err) counterparty2 := types.Counterparty{