forked from synapsecns/sanguine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanvil_test.go
65 lines (48 loc) · 1.98 KB
/
anvil_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package anvil_test
import (
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/params"
. "github.com/stretchr/testify/assert"
"github.com/synapsecns/sanguine/ethergo/backends/base"
"github.com/synapsecns/sanguine/ethergo/util"
"math/big"
)
// Make sure a hardforked rpc will have a balance.
func (a *AnvilSuite) TestFundAccount() {
fundedAccount := base.MockAccount(a.T())
ether := big.NewInt(params.Ether)
a.backend.FundAccount(a.GetTestContext(), fundedAccount.Address, *ether)
realBalance, err := a.backend.BalanceAt(a.GetTestContext(), fundedAccount.Address, nil)
a.Require().NoError(err)
Equal(a.T(), ether, realBalance)
}
func (a *AnvilSuite) TestGetTxContext() {
res := a.backend.GetTxContext(a.GetTestContext(), nil)
prevCount, err := a.counter.GetCount(&bind.CallOpts{Context: a.GetTestContext()})
a.Require().NoError(err)
res.TransactOpts.NoSend = true
tx, err := a.counter.IncrementCounter(res.TransactOpts)
a.Require().NoError(err)
sender, err := util.TxToCall(tx)
a.Require().NoError(err)
Equal(a.T(), res.TransactOpts.From, sender.From)
a.backend.WaitForConfirmation(a.GetTestContext(), tx)
newCount, err := a.counter.GetCount(&bind.CallOpts{Context: a.GetTestContext()})
a.Require().NoError(err)
Equal(a.T(), prevCount.Uint64()+1, newCount.Uint64())
}
func (a *AnvilSuite) TestImpersonateAccount() {
ogCount, err := a.counter.GetVitalikCount(&bind.CallOpts{Context: a.GetTestContext()})
a.Require().NoError(err)
// impersonate vitalik, and send the fren some eth
err = a.backend.ImpersonateAccount(a.GetTestContext(), vitalik, func(transactOpts *bind.TransactOpts) *types.Transaction {
tx, err := a.counter.VitalikIncrement(transactOpts)
a.Require().NoError(err)
return tx
})
a.Require().NoError(err)
vitalikCount, err := a.counter.GetVitalikCount(&bind.CallOpts{Context: a.GetTestContext()})
a.Require().NoError(err)
Equal(a.T(), ogCount.Uint64()+10, vitalikCount.Uint64())
}