github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/ibc-go/modules/apps/29-fee/keeper/genesis_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/29-fee/types"
     5  	channeltypes "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/core/04-channel/types"
     6  	ibctesting "github.com/fibonacci-chain/fbc/libs/ibc-go/testing"
     7  )
     8  
     9  func (suite *KeeperTestSuite) TestInitGenesis() {
    10  	packetID := channeltypes.NewPacketId(ibctesting.MockFeePort, ibctesting.FirstChannelID, 1)
    11  
    12  	genesisState := types.GenesisState{
    13  		IdentifiedFees: []types.IdentifiedPacketFees{
    14  			{
    15  				PacketId: packetID,
    16  				PacketFees: []types.PacketFee{
    17  					{
    18  						Fee:           types.NewFee(defaultRecvFee, defaultAckFee, defaultTimeoutFee),
    19  						RefundAddress: suite.chainA.SenderAccount().GetAddress().String(),
    20  						Relayers:      nil,
    21  					},
    22  				},
    23  			},
    24  		},
    25  		FeeEnabledChannels: []types.FeeEnabledChannel{
    26  			{
    27  				PortId:    ibctesting.MockFeePort,
    28  				ChannelId: ibctesting.FirstChannelID,
    29  			},
    30  		},
    31  		RegisteredPayees: []types.RegisteredPayee{
    32  			{
    33  				Relayer:   suite.chainA.SenderAccount().GetAddress().String(),
    34  				Payee:     suite.chainB.SenderAccount().GetAddress().String(),
    35  				ChannelId: ibctesting.FirstChannelID,
    36  			},
    37  		},
    38  		RegisteredCounterpartyPayees: []types.RegisteredCounterpartyPayee{
    39  			{
    40  				Relayer:           suite.chainA.SenderAccount().GetAddress().String(),
    41  				CounterpartyPayee: suite.chainB.SenderAccount().GetAddress().String(),
    42  				ChannelId:         ibctesting.FirstChannelID,
    43  			},
    44  		},
    45  	}
    46  
    47  	suite.chainA.GetSimApp().IBCFeeKeeper.InitGenesis(suite.chainA.GetContext(), genesisState)
    48  
    49  	// check fee
    50  	feesInEscrow, found := suite.chainA.GetSimApp().IBCFeeKeeper.GetFeesInEscrow(suite.chainA.GetContext(), packetID)
    51  	suite.Require().True(found)
    52  	suite.Require().Equal(genesisState.IdentifiedFees[0].PacketFees, feesInEscrow.PacketFees)
    53  
    54  	// check fee is enabled
    55  	isEnabled := suite.chainA.GetSimApp().IBCFeeKeeper.IsFeeEnabled(suite.chainA.GetContext(), ibctesting.MockFeePort, ibctesting.FirstChannelID)
    56  	suite.Require().True(isEnabled)
    57  
    58  	// check payee addresses
    59  	payeeAddr, found := suite.chainA.GetSimApp().IBCFeeKeeper.GetPayeeAddress(suite.chainA.GetContext(), suite.chainA.SenderAccount().GetAddress().String(), ibctesting.FirstChannelID)
    60  	suite.Require().True(found)
    61  	suite.Require().Equal(genesisState.RegisteredPayees[0].Payee, payeeAddr)
    62  
    63  	// check relayers
    64  	counterpartyPayeeAddr, found := suite.chainA.GetSimApp().IBCFeeKeeper.GetCounterpartyPayeeAddress(suite.chainA.GetContext(), suite.chainA.SenderAccount().GetAddress().String(), ibctesting.FirstChannelID)
    65  	suite.Require().True(found)
    66  	suite.Require().Equal(genesisState.RegisteredCounterpartyPayees[0].CounterpartyPayee, counterpartyPayeeAddr)
    67  }
    68  
    69  func (suite *KeeperTestSuite) TestExportGenesis() {
    70  	// set fee enabled
    71  	suite.chainA.GetSimApp().IBCFeeKeeper.SetFeeEnabled(suite.chainA.GetContext(), ibctesting.MockFeePort, ibctesting.FirstChannelID)
    72  
    73  	// setup & escrow the packet fee
    74  	refundAcc := suite.chainA.SenderAccount().GetAddress()
    75  	packetID := channeltypes.NewPacketId(ibctesting.MockFeePort, ibctesting.FirstChannelID, 1)
    76  	fee := types.NewFee(defaultRecvFee, defaultAckFee, defaultTimeoutFee)
    77  
    78  	packetFee := types.NewPacketFee(fee, refundAcc.String(), []string{})
    79  	suite.chainA.GetSimApp().IBCFeeKeeper.SetFeesInEscrow(suite.chainA.GetContext(), packetID, types.NewPacketFees([]types.PacketFee{packetFee}))
    80  
    81  	// set payee address
    82  	suite.chainA.GetSimApp().IBCFeeKeeper.SetPayeeAddress(
    83  		suite.chainA.GetContext(),
    84  		suite.chainA.SenderAccount().GetAddress().String(),
    85  		suite.chainB.SenderAccount().GetAddress().String(),
    86  		ibctesting.FirstChannelID,
    87  	)
    88  
    89  	// set counterparty payee address
    90  	suite.chainA.GetSimApp().IBCFeeKeeper.SetCounterpartyPayeeAddress(
    91  		suite.chainA.GetContext(),
    92  		suite.chainA.SenderAccount().GetAddress().String(),
    93  		suite.chainB.SenderAccount().GetAddress().String(),
    94  		ibctesting.FirstChannelID,
    95  	)
    96  
    97  	// set forward relayer address
    98  	suite.chainA.GetSimApp().IBCFeeKeeper.SetRelayerAddressForAsyncAck(suite.chainA.GetContext(), packetID, suite.chainA.SenderAccount().GetAddress().String())
    99  
   100  	// export genesis
   101  	genesisState := suite.chainA.GetSimApp().IBCFeeKeeper.ExportGenesis(suite.chainA.GetContext())
   102  
   103  	// check fee enabled
   104  	suite.Require().Equal(ibctesting.FirstChannelID, genesisState.FeeEnabledChannels[0].ChannelId)
   105  	suite.Require().Equal(ibctesting.MockFeePort, genesisState.FeeEnabledChannels[0].PortId)
   106  
   107  	// check fee
   108  	suite.Require().Equal(packetID, genesisState.IdentifiedFees[0].PacketId)
   109  	suite.Require().Equal(fee, genesisState.IdentifiedFees[0].PacketFees[0].Fee)
   110  	suite.Require().Equal(refundAcc.String(), genesisState.IdentifiedFees[0].PacketFees[0].RefundAddress)
   111  	suite.Require().Equal([]string(nil), genesisState.IdentifiedFees[0].PacketFees[0].Relayers)
   112  
   113  	// check forward relayer addresses
   114  	suite.Require().Equal(suite.chainA.SenderAccount().GetAddress().String(), genesisState.ForwardRelayers[0].Address)
   115  	suite.Require().Equal(packetID, genesisState.ForwardRelayers[0].PacketId)
   116  
   117  	// check payee addresses
   118  	suite.Require().Equal(suite.chainA.SenderAccount().GetAddress().String(), genesisState.RegisteredPayees[0].Relayer)
   119  	suite.Require().Equal(suite.chainB.SenderAccount().GetAddress().String(), genesisState.RegisteredPayees[0].Payee)
   120  	suite.Require().Equal(ibctesting.FirstChannelID, genesisState.RegisteredPayees[0].ChannelId)
   121  
   122  	// check registered counterparty payee addresses
   123  	suite.Require().Equal(suite.chainA.SenderAccount().GetAddress().String(), genesisState.RegisteredCounterpartyPayees[0].Relayer)
   124  	suite.Require().Equal(suite.chainB.SenderAccount().GetAddress().String(), genesisState.RegisteredCounterpartyPayees[0].CounterpartyPayee)
   125  	suite.Require().Equal(ibctesting.FirstChannelID, genesisState.RegisteredCounterpartyPayees[0].ChannelId)
   126  }