api_test.go 3.01 KB
Newer Older
1
package api
2 3

import (
Hamdi Allam's avatar
Hamdi Allam committed
4
	"math/big"
5 6 7 8
	"net/http"
	"net/http/httptest"
	"testing"

Will Cory's avatar
Will Cory committed
9 10
	"github.com/ethereum-optimism/optimism/indexer/database"
	"github.com/ethereum/go-ethereum/common"
11 12 13
	"github.com/stretchr/testify/assert"
)

Hamdi Allam's avatar
Hamdi Allam committed
14 15
// MockBridgeTransfersView mocks the BridgeTransfersView interface
type MockBridgeTransfersView struct{}
16

Hamdi Allam's avatar
Hamdi Allam committed
17 18
var (
	deposit = database.L1BridgeDeposit{
Hamdi Allam's avatar
Hamdi Allam committed
19 20 21 22
		TransactionSourceHash:     common.HexToHash("abc"),
		CrossDomainMessengerNonce: &database.U256{Int: big.NewInt(0)},
		Tx:                        database.Transaction{},
		TokenPair:                 database.TokenPair{},
Hamdi Allam's avatar
Hamdi Allam committed
23 24 25
	}

	withdrawal = database.L2BridgeWithdrawal{
Hamdi Allam's avatar
Hamdi Allam committed
26 27 28 29
		TransactionWithdrawalHash: common.HexToHash("0x456"),
		CrossDomainMessengerNonce: &database.U256{Int: big.NewInt(0)},
		Tx:                        database.Transaction{},
		TokenPair:                 database.TokenPair{},
Hamdi Allam's avatar
Hamdi Allam committed
30 31 32 33 34
	}
)

func (mbv *MockBridgeTransfersView) L1BridgeDeposit(hash common.Hash) (*database.L1BridgeDeposit, error) {
	return &deposit, nil
Hamdi Allam's avatar
Hamdi Allam committed
35 36
}

Hamdi Allam's avatar
Hamdi Allam committed
37 38
func (mbv *MockBridgeTransfersView) L1BridgeDepositByCrossDomainMessengerNonce(nonce *big.Int) (*database.L1BridgeDeposit, error) {
	return &deposit, nil
Hamdi Allam's avatar
Hamdi Allam committed
39 40
}

Hamdi Allam's avatar
Hamdi Allam committed
41 42
func (mbv *MockBridgeTransfersView) L1BridgeDepositsByAddress(address common.Address) ([]*database.L1BridgeDepositWithTransactionHashes, error) {
	return []*database.L1BridgeDepositWithTransactionHashes{
43
		{
Hamdi Allam's avatar
Hamdi Allam committed
44 45
			L1BridgeDeposit:   deposit,
			L1TransactionHash: common.HexToHash("0x123"),
46
		},
Will Cory's avatar
Will Cory committed
47 48
	}, nil
}
49

Hamdi Allam's avatar
Hamdi Allam committed
50
func (mbv *MockBridgeTransfersView) L2BridgeWithdrawal(address common.Hash) (*database.L2BridgeWithdrawal, error) {
Hamdi Allam's avatar
Hamdi Allam committed
51
	return &withdrawal, nil
Hamdi Allam's avatar
Hamdi Allam committed
52 53
}

Hamdi Allam's avatar
Hamdi Allam committed
54 55
func (mbv *MockBridgeTransfersView) L2BridgeWithdrawalByCrossDomainMessengerNonce(nonce *big.Int) (*database.L2BridgeWithdrawal, error) {
	return &withdrawal, nil
Hamdi Allam's avatar
Hamdi Allam committed
56 57
}

Hamdi Allam's avatar
Hamdi Allam committed
58 59 60 61 62 63 64
func (mbv *MockBridgeTransfersView) L2BridgeWithdrawalsByAddress(address common.Address) ([]*database.L2BridgeWithdrawalWithTransactionHashes, error) {
	return []*database.L2BridgeWithdrawalWithTransactionHashes{
		{
			L2BridgeWithdrawal: withdrawal,
			L2TransactionHash:  common.HexToHash("0x789"),
		},
	}, nil
Hamdi Allam's avatar
Hamdi Allam committed
65 66
}

67
func TestHealthz(t *testing.T) {
Hamdi Allam's avatar
Hamdi Allam committed
68
	api := NewApi(&MockBridgeTransfersView{})
69 70 71 72 73 74 75 76 77
	request, err := http.NewRequest("GET", "/healthz", nil)
	assert.Nil(t, err)

	responseRecorder := httptest.NewRecorder()
	api.Router.ServeHTTP(responseRecorder, request)

	assert.Equal(t, http.StatusOK, responseRecorder.Code)
}

Hamdi Allam's avatar
Hamdi Allam committed
78 79
func TestL1BridgeDepositsHandler(t *testing.T) {
	api := NewApi(&MockBridgeTransfersView{})
Will Cory's avatar
Will Cory committed
80 81
	request, err := http.NewRequest("GET", "/api/v0/deposits/0x123", nil)
	assert.Nil(t, err)
82

Will Cory's avatar
Will Cory committed
83 84
	responseRecorder := httptest.NewRecorder()
	api.Router.ServeHTTP(responseRecorder, request)
85

Will Cory's avatar
Will Cory committed
86 87
	assert.Equal(t, http.StatusOK, responseRecorder.Code)
}
88

Hamdi Allam's avatar
Hamdi Allam committed
89 90
func TestL2BridgeWithdrawalsByAddressHandler(t *testing.T) {
	api := NewApi(&MockBridgeTransfersView{})
Will Cory's avatar
Will Cory committed
91 92
	request, err := http.NewRequest("GET", "/api/v0/withdrawals/0x123", nil)
	assert.Nil(t, err)
93

Will Cory's avatar
Will Cory committed
94 95
	responseRecorder := httptest.NewRecorder()
	api.Router.ServeHTTP(responseRecorder, request)
96

Will Cory's avatar
Will Cory committed
97
	assert.Equal(t, http.StatusOK, responseRecorder.Code)
98
}