github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/common/util_test.go (about) 1 package common 2 3 import ( 4 "fmt" 5 "testing" 6 7 apptypes "github.com/fibonacci-chain/fbc/app/types" 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func initConfig() { 13 config := sdk.GetConfig() 14 apptypes.SetBech32Prefixes(config) 15 apptypes.SetBip44CoinType(config) 16 config.Seal() 17 } 18 19 func TestHasSufCoins(t *testing.T) { 20 initConfig() 21 addr, err := sdk.AccAddressFromBech32("fb1x75n67492zjfvlwnfp080lesh93ysj8xd3y9p2") 22 require.Nil(t, err) 23 24 availDecCoins, err := sdk.ParseDecCoins(fmt.Sprintf("%d%s,%d%s", 25 200000, "btc", 100000, NativeToken)) 26 require.Nil(t, err) 27 availCoins := availDecCoins 28 29 spendDecCoins, err := sdk.ParseDecCoins(fmt.Sprintf("%d%s,%d%s", 30 200000, NativeToken, 100000, "btc")) 31 require.NoError(t, err) 32 spendCoins := spendDecCoins 33 34 err = HasSufficientCoins(addr, availCoins, spendCoins) 35 require.Error(t, err) 36 spendDecCoins, err = sdk.ParseDecCoins(fmt.Sprintf("%d%s", 37 200000, "xmr")) 38 require.Nil(t, err) 39 spendCoins = spendDecCoins 40 41 err = HasSufficientCoins(addr, availCoins, spendCoins) 42 require.Error(t, err) 43 44 spendDecCoins, err = sdk.ParseDecCoins(fmt.Sprintf("%d%s", 45 100000, "btc")) 46 require.Nil(t, err) 47 spendCoins = spendDecCoins 48 err = HasSufficientCoins(addr, availCoins, spendCoins) 49 require.Nil(t, err) 50 } 51 52 func TestBlackHoleAddress(t *testing.T) { 53 InitConfig() 54 addr := BlackHoleAddress() 55 a := addr.String() 56 fmt.Println(a) 57 require.Equal(t, "fb1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpvmzvy", addr.String()) 58 } 59 60 func TestGetFixedLengthRandomString(t *testing.T) { 61 require.Equal(t, 100, len(GetFixedLengthRandomString(100))) 62 } 63 64 func mustAccAddressFromHex(addr string) sdk.AccAddress { 65 ret, err := sdk.AccAddressFromHex(addr) 66 if err != nil { 67 panic(err) 68 } 69 return ret 70 } 71 72 func TestCheckSignerAddress(t *testing.T) { 73 testcases := []struct { 74 signers []sdk.AccAddress 75 delegators []sdk.AccAddress 76 result bool 77 }{ 78 { 79 signers: []sdk.AccAddress{ 80 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 81 }, 82 delegators: []sdk.AccAddress{ 83 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 84 }, 85 result: true, 86 }, 87 { 88 signers: []sdk.AccAddress{ 89 mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"), 90 }, 91 delegators: []sdk.AccAddress{ 92 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 93 }, 94 result: false, 95 }, 96 { 97 signers: []sdk.AccAddress{}, 98 delegators: []sdk.AccAddress{}, 99 result: false, 100 }, 101 { 102 signers: []sdk.AccAddress{ 103 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 104 }, 105 delegators: []sdk.AccAddress{}, 106 result: false, 107 }, 108 { 109 signers: []sdk.AccAddress{}, 110 delegators: []sdk.AccAddress{ 111 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 112 }, 113 result: false, 114 }, 115 116 { 117 signers: []sdk.AccAddress{ 118 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 119 mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"), 120 }, 121 delegators: []sdk.AccAddress{ 122 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 123 mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"), 124 }, 125 result: false, 126 }, 127 { 128 signers: []sdk.AccAddress{ 129 mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"), 130 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 131 }, 132 delegators: []sdk.AccAddress{ 133 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 134 mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"), 135 }, 136 result: false, 137 }, 138 { 139 signers: []sdk.AccAddress{ 140 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 141 mustAccAddressFromHex("bbE4733d85bc2b90682147779DA49caB38C0aA1F"), 142 }, 143 delegators: []sdk.AccAddress{ 144 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 145 mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"), 146 }, 147 result: false, 148 }, 149 { 150 signers: []sdk.AccAddress{ 151 mustAccAddressFromHex("c1fB47342851da0F7a6FD13866Ab37a2A125bE36"), 152 mustAccAddressFromHex("bbE4733d85bc2b90682147779DA49caB38C0aA1F"), 153 }, 154 delegators: []sdk.AccAddress{ 155 mustAccAddressFromHex("889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E"), 156 mustAccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9"), 157 }, 158 result: false, 159 }, 160 } 161 162 for _, ts := range testcases { 163 tr := CheckSignerAddress(ts.signers, ts.delegators) 164 require.Equal(t, ts.result, tr) 165 } 166 }