forked from mirror/go-ethereum
accounts/abi/bind/backends: add TransactionByHash to SimulatedBackend (#19026)
parent
3d22a46c94
commit
555b3652dc
@ -0,0 +1,66 @@ |
||||
package backends_test |
||||
|
||||
import ( |
||||
"context" |
||||
"math/big" |
||||
"testing" |
||||
|
||||
ethereum "github.com/ethereum/go-ethereum" |
||||
"github.com/ethereum/go-ethereum/accounts/abi/bind" |
||||
"github.com/ethereum/go-ethereum/accounts/abi/bind/backends" |
||||
"github.com/ethereum/go-ethereum/common" |
||||
"github.com/ethereum/go-ethereum/core" |
||||
"github.com/ethereum/go-ethereum/core/types" |
||||
"github.com/ethereum/go-ethereum/crypto" |
||||
) |
||||
|
||||
func TestSimulatedBackend(t *testing.T) { |
||||
var gasLimit uint64 = 8000029 |
||||
key, _ := crypto.GenerateKey() // nolint: gosec
|
||||
auth := bind.NewKeyedTransactor(key) |
||||
genAlloc := make(core.GenesisAlloc) |
||||
genAlloc[auth.From] = core.GenesisAccount{Balance: big.NewInt(9223372036854775807)} |
||||
|
||||
sim := backends.NewSimulatedBackend(genAlloc, gasLimit) |
||||
|
||||
// should return an error if the tx is not found
|
||||
txHash := common.HexToHash("2") |
||||
_, isPending, err := sim.TransactionByHash(context.Background(), txHash) |
||||
|
||||
if isPending { |
||||
t.Fatal("transaction should not be pending") |
||||
} |
||||
if err != ethereum.NotFound { |
||||
t.Fatalf("err should be `ethereum.NotFound` but received %v", err) |
||||
} |
||||
|
||||
// generate a transaction and confirm you can retrieve it
|
||||
code := `6060604052600a8060106000396000f360606040526008565b00` |
||||
var gas uint64 = 3000000 |
||||
tx := types.NewContractCreation(0, big.NewInt(0), gas, big.NewInt(1), common.FromHex(code)) |
||||
tx, _ = types.SignTx(tx, types.HomesteadSigner{}, key) |
||||
|
||||
err = sim.SendTransaction(context.Background(), tx) |
||||
if err != nil { |
||||
t.Fatal("error sending transaction") |
||||
} |
||||
|
||||
txHash = tx.Hash() |
||||
_, isPending, err = sim.TransactionByHash(context.Background(), txHash) |
||||
if err != nil { |
||||
t.Fatalf("error getting transaction with hash: %v", txHash.String()) |
||||
} |
||||
if !isPending { |
||||
t.Fatal("transaction should have pending status") |
||||
} |
||||
|
||||
sim.Commit() |
||||
tx, isPending, err = sim.TransactionByHash(context.Background(), txHash) |
||||
if err != nil { |
||||
t.Fatalf("error getting transaction with hash: %v", txHash.String()) |
||||
} |
||||
if isPending { |
||||
t.Fatal("transaction should not have pending status") |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue