github.com/aigarnetwork/aigar@v0.0.0-20191115204914-d59a6eb70f8e/tests/transaction_test.go (about) 1 // Copyright 2018 The go-ethereum Authors 2 // Copyright 2019 The go-aigar Authors 3 // This file is part of the go-aigar library. 4 // 5 // The go-aigar library is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Lesser General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // The go-aigar library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public License 16 // along with the go-aigar library. If not, see <http://www.gnu.org/licenses/>. 17 18 package tests 19 20 import ( 21 "testing" 22 23 "github.com/AigarNetwork/aigar/params" 24 ) 25 26 func TestTransaction(t *testing.T) { 27 t.Parallel() 28 29 txt := new(testMatcher) 30 // These can't be parsed, invalid hex in RLP 31 txt.skipLoad("^ttWrongRLP/.*") 32 // We don't allow more than uint64 in gas amount 33 // This is a pseudo-consensus vulnerability, but not in practice 34 // because of the gas limit 35 txt.skipLoad("^ttGasLimit/TransactionWithGasLimitxPriceOverflow.json") 36 // We _do_ allow more than uint64 in gas price, as opposed to the tests 37 // This is also not a concern, as long as tx.Cost() uses big.Int for 38 // calculating the final cozt 39 txt.skipLoad(".*TransactionWithGasPriceOverflow.*") 40 41 // The nonce is too large for uint64. Not a concern, it means geth won't 42 // accept transactions at a certain point in the distant future 43 txt.skipLoad("^ttNonce/TransactionWithHighNonce256.json") 44 45 // The value is larger than uint64, which according to the test is invalid. 46 // Geth accepts it, which is not a consensus issue since we use big.Int's 47 // internally to calculate the cost 48 txt.skipLoad("^ttValue/TransactionWithHighValueOverflow.json") 49 txt.walk(t, transactionTestDir, func(t *testing.T, name string, test *TransactionTest) { 50 cfg := params.MainnetChainConfig 51 if err := txt.checkFailure(t, name, test.Run(cfg)); err != nil { 52 t.Error(err) 53 } 54 }) 55 }