github.com/status-im/status-go@v1.1.0/services/communitytokens/api_test.go (about) 1 package communitytokens 2 3 import ( 4 "math/big" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/ethereum/go-ethereum/common" 10 11 "github.com/status-im/status-go/services/wallet/bigint" 12 ) 13 14 func TestDeploymentParameters(t *testing.T) { 15 var testCases = []struct { 16 name string 17 parameters DeploymentParameters 18 isError bool 19 }{ 20 { 21 name: "emptyName", 22 parameters: DeploymentParameters{"", "SYMBOL", &bigint.BigInt{Int: big.NewInt(int64(123))}, false, false, false, "", "", "", "", "", nil, "", 0}, 23 isError: true, 24 }, 25 { 26 name: "emptySymbol", 27 parameters: DeploymentParameters{"NAME", "", &bigint.BigInt{Int: big.NewInt(123)}, false, false, false, "", "", "", "", "", nil, "", 0}, 28 isError: true, 29 }, 30 { 31 name: "negativeSupply", 32 parameters: DeploymentParameters{"NAME", "SYM", &bigint.BigInt{Int: big.NewInt(-123)}, false, false, false, "", "", "", "", "", nil, "", 0}, 33 isError: true, 34 }, 35 { 36 name: "zeroSupply", 37 parameters: DeploymentParameters{"NAME", "SYM", &bigint.BigInt{Int: big.NewInt(0)}, false, false, false, "", "", "", "", "", nil, "", 0}, 38 isError: false, 39 }, 40 { 41 name: "negativeSupplyAndInfinite", 42 parameters: DeploymentParameters{"NAME", "SYM", &bigint.BigInt{Int: big.NewInt(-123)}, true, false, false, "", "", "", "", "", nil, "", 0}, 43 isError: false, 44 }, 45 { 46 name: "supplyGreaterThanMax", 47 parameters: DeploymentParameters{"NAME", "SYM", &bigint.BigInt{Int: big.NewInt(maxSupply + 1)}, false, false, false, "", "", "", "", "", nil, "", 0}, 48 isError: true, 49 }, 50 { 51 name: "supplyIsMax", 52 parameters: DeploymentParameters{"NAME", "SYM", &bigint.BigInt{Int: big.NewInt(maxSupply)}, false, false, false, "", "", "", "", "", nil, "", 0}, 53 isError: false, 54 }, 55 } 56 57 for _, tc := range testCases { 58 t.Run(tc.name, func(t *testing.T) { 59 err := tc.parameters.Validate(false) 60 if tc.isError { 61 require.Error(t, err) 62 } else { 63 require.NoError(t, err) 64 } 65 }) 66 } 67 68 notInfiniteSupplyParams := DeploymentParameters{"NAME", "SYM", &bigint.BigInt{Int: big.NewInt(123)}, false, false, false, "", "", "", "", "", nil, "", 0} 69 requiredSupply := big.NewInt(123) 70 require.Equal(t, notInfiniteSupplyParams.GetSupply(), requiredSupply) 71 infiniteSupplyParams := DeploymentParameters{"NAME", "SYM", &bigint.BigInt{Int: big.NewInt(123)}, true, false, false, "", "", "", "", "", nil, "", 0} 72 requiredSupply = infiniteSupplyParams.GetInfiniteSupply() 73 require.Equal(t, infiniteSupplyParams.GetSupply(), requiredSupply) 74 } 75 76 func TestTypedDataHash(t *testing.T) { 77 sigHash := common.Hex2Bytes("dd91c30357aafeb2792b5f0facbd83995943c1ea113a906ebbeb58bfeb27dfc2") 78 domainSep := common.Hex2Bytes("4a672b5a08e88d37f7239165a0c9e03a01196587d52c638c0c99cbee5ba527c8") 79 contractAddr := "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" 80 signer := "0x54e3922e97e334905fb489be7c5df1f83cb1ce58" 81 deployer := "0x7c8999dC9a822c1f0Df42023113EDB4FDd543266" 82 goodHashResult := "0xccbb375343347491706cf4b43796f7b96ccc89c9e191a8b78679daeba1684ec7" 83 84 typedHash, err := typedStructuredDataHash(domainSep, signer, deployer, contractAddr, 420) 85 require.NoError(t, err, "creating typed structured data hash") 86 require.Equal(t, goodHashResult, typedHash.String()) 87 88 customTypedHash := customTypedStructuredDataHash(domainSep, sigHash, signer, deployer) 89 require.Equal(t, goodHashResult, customTypedHash.String()) 90 } 91 92 func TestCompressedKeyToEthAddress(t *testing.T) { 93 ethAddr, err := convert33BytesPubKeyToEthAddress("0x02bcbe39785b55a22383f82ac631ea7500e204627369c4ea01d9296af0ea573f57") 94 require.NoError(t, err, "converting pub key to address") 95 require.Equal(t, "0x0A1ec0002dDB927B03049F1aD8D589aBEA4Ba4b3", ethAddr.Hex()) 96 }