api_test.go 3.14 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"
Mark Tyneway's avatar
Mark Tyneway committed
11
	"github.com/google/uuid"
12 13 14
	"github.com/stretchr/testify/assert"
)

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

Mark Tyneway's avatar
Mark Tyneway committed
18 19 20 21 22
const (
	guid1 = "8408b6d2-7c90-4cfc-8604-b2204116cb6a"
	guid2 = "8408b6d2-7c90-4cfc-8604-b2204116cb6b"
)

Hamdi Allam's avatar
Hamdi Allam committed
23 24
var (
	deposit = database.L1BridgeDeposit{
Hamdi Allam's avatar
Hamdi Allam committed
25 26 27 28
		GUID:                 uuid.MustParse(guid1),
		InitiatedL1EventGUID: uuid.MustParse(guid2),
		Tx:                   database.Transaction{},
		TokenPair:            database.TokenPair{},
Hamdi Allam's avatar
Hamdi Allam committed
29 30 31 32 33 34 35 36 37 38 39 40 41
	}

	withdrawal = database.L2BridgeWithdrawal{
		GUID:                 uuid.MustParse(guid2),
		InitiatedL2EventGUID: uuid.MustParse(guid1),
		WithdrawalHash:       common.HexToHash("0x456"),
		Tx:                   database.Transaction{},
		TokenPair:            database.TokenPair{},
	}
)

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

Hamdi Allam's avatar
Hamdi Allam committed
44 45
func (mbv *MockBridgeTransfersView) L1BridgeDepositByCrossDomainMessengerNonce(nonce *big.Int) (*database.L1BridgeDeposit, error) {
	return &deposit, nil
Hamdi Allam's avatar
Hamdi Allam committed
46 47
}

Hamdi Allam's avatar
Hamdi Allam committed
48 49
func (mbv *MockBridgeTransfersView) L1BridgeDepositsByAddress(address common.Address) ([]*database.L1BridgeDepositWithTransactionHashes, error) {
	return []*database.L1BridgeDepositWithTransactionHashes{
50
		{
Hamdi Allam's avatar
Hamdi Allam committed
51 52
			L1BridgeDeposit:   deposit,
			L1TransactionHash: common.HexToHash("0x123"),
53
		},
Will Cory's avatar
Will Cory committed
54 55
	}, nil
}
56

Hamdi Allam's avatar
Hamdi Allam committed
57 58
func (mbv *MockBridgeTransfersView) L2BridgeWithdrawalByWithdrawalHash(address common.Hash) (*database.L2BridgeWithdrawal, error) {
	return &withdrawal, nil
Hamdi Allam's avatar
Hamdi Allam committed
59 60
}

Hamdi Allam's avatar
Hamdi Allam committed
61 62
func (mbv *MockBridgeTransfersView) L2BridgeWithdrawalByCrossDomainMessengerNonce(nonce *big.Int) (*database.L2BridgeWithdrawal, error) {
	return &withdrawal, nil
Hamdi Allam's avatar
Hamdi Allam committed
63 64
}

Hamdi Allam's avatar
Hamdi Allam committed
65 66 67 68 69 70 71
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
72 73
}

74
func TestHealthz(t *testing.T) {
Hamdi Allam's avatar
Hamdi Allam committed
75
	api := NewApi(&MockBridgeTransfersView{})
76 77 78 79 80 81 82 83 84
	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
85 86
func TestL1BridgeDepositsHandler(t *testing.T) {
	api := NewApi(&MockBridgeTransfersView{})
Will Cory's avatar
Will Cory committed
87 88
	request, err := http.NewRequest("GET", "/api/v0/deposits/0x123", nil)
	assert.Nil(t, err)
89

Will Cory's avatar
Will Cory committed
90 91
	responseRecorder := httptest.NewRecorder()
	api.Router.ServeHTTP(responseRecorder, request)
92

Will Cory's avatar
Will Cory committed
93 94
	assert.Equal(t, http.StatusOK, responseRecorder.Code)
}
95

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

Will Cory's avatar
Will Cory committed
101 102
	responseRecorder := httptest.NewRecorder()
	api.Router.ServeHTTP(responseRecorder, request)
103

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