github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/feesplit/types/genesis_test.go (about) 1 package types 2 3 import ( 4 "testing" 5 6 "github.com/ethereum/go-ethereum/common" 7 8 "github.com/fibonacci-chain/fbc/app/crypto/ethsecp256k1" 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 "github.com/stretchr/testify/suite" 11 ) 12 13 type GenesisTestSuite struct { 14 suite.Suite 15 address1 sdk.AccAddress 16 address2 sdk.AccAddress 17 contract1 common.Address 18 contract2 common.Address 19 } 20 21 func TestGenesisTestSuite(t *testing.T) { 22 suite.Run(t, new(GenesisTestSuite)) 23 } 24 25 func (suite *GenesisTestSuite) SetupTest() { 26 suite.address1 = sdk.AccAddress(ethsecp256k1.GenerateAddress().Bytes()) 27 suite.address2 = sdk.AccAddress(ethsecp256k1.GenerateAddress().Bytes()) 28 suite.contract1 = ethsecp256k1.GenerateAddress() 29 suite.contract2 = ethsecp256k1.GenerateAddress() 30 } 31 32 func (suite *GenesisTestSuite) TestValidateGenesis() { 33 newGen := NewGenesisState(DefaultParams(), []FeeSplit{}) 34 testCases := []struct { 35 name string 36 genState GenesisState 37 expPass bool 38 }{ 39 { 40 name: "valid genesis constructor", 41 genState: newGen, 42 expPass: true, 43 }, 44 { 45 name: "default", 46 genState: DefaultGenesisState(), 47 expPass: true, 48 }, 49 { 50 name: "valid genesis", 51 genState: GenesisState{ 52 Params: DefaultParams(), 53 FeeSplits: []FeeSplit{}, 54 }, 55 expPass: true, 56 }, 57 { 58 name: "valid genesis - with fee", 59 genState: GenesisState{ 60 Params: DefaultParams(), 61 FeeSplits: []FeeSplit{ 62 { 63 ContractAddress: suite.contract1, 64 DeployerAddress: suite.address1, 65 }, 66 { 67 ContractAddress: suite.contract2, 68 DeployerAddress: suite.address2, 69 WithdrawerAddress: suite.address2, 70 }, 71 }, 72 }, 73 expPass: true, 74 }, 75 { 76 name: "empty genesis", 77 genState: GenesisState{}, 78 expPass: false, 79 }, 80 { 81 name: "invalid genesis - duplicated fee", 82 genState: GenesisState{ 83 Params: DefaultParams(), 84 FeeSplits: []FeeSplit{ 85 { 86 ContractAddress: suite.contract1, 87 DeployerAddress: suite.address1, 88 }, 89 { 90 ContractAddress: suite.contract1, 91 DeployerAddress: suite.address1, 92 }, 93 }, 94 }, 95 expPass: false, 96 }, 97 { 98 name: "invalid genesis - duplicated fee with different deployer address", 99 genState: GenesisState{ 100 Params: DefaultParams(), 101 FeeSplits: []FeeSplit{ 102 { 103 ContractAddress: suite.contract1, 104 DeployerAddress: suite.address1, 105 }, 106 { 107 ContractAddress: suite.contract1, 108 DeployerAddress: suite.address2, 109 }, 110 }, 111 }, 112 expPass: false, 113 }, 114 { 115 name: "invalid genesis - invalid contract address", 116 genState: GenesisState{ 117 Params: DefaultParams(), 118 FeeSplits: []FeeSplit{ 119 { 120 ContractAddress: common.Address{}, 121 DeployerAddress: suite.address1, 122 }, 123 }, 124 }, 125 expPass: false, 126 }, 127 } 128 129 for _, tc := range testCases { 130 err := tc.genState.Validate() 131 if tc.expPass { 132 suite.Require().NoError(err, tc.name) 133 } else { 134 suite.Require().Error(err, tc.name) 135 } 136 } 137 }