api_test.go 2.4 KB
Newer Older
1
package api
2 3 4 5 6 7

import (
	"net/http"
	"net/http/httptest"
	"testing"

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

Will Cory's avatar
Will Cory committed
14 15
// MockBridgeView mocks the BridgeView interface
type MockBridgeView struct{}
16

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

Will Cory's avatar
Will Cory committed
22 23 24
// DepositsByAddress mocks returning deposits by an address
func (mbv *MockBridgeView) DepositsByAddress(address common.Address) ([]*database.DepositWithTransactionHash, error) {
	return []*database.DepositWithTransactionHash{
25
		{
Will Cory's avatar
Will Cory committed
26
			Deposit: database.Deposit{
Mark Tyneway's avatar
Mark Tyneway committed
27 28
				GUID:                 uuid.MustParse(guid1),
				InitiatedL1EventGUID: guid2,
Will Cory's avatar
Will Cory committed
29 30 31 32
				Tx:                   database.Transaction{},
				TokenPair:            database.TokenPair{},
			},
			L1TransactionHash: common.HexToHash("0x123"),
33
		},
Will Cory's avatar
Will Cory committed
34 35
	}, nil
}
36

Will Cory's avatar
Will Cory committed
37 38 39
// WithdrawalsByAddress mocks returning withdrawals by an address
func (mbv *MockBridgeView) WithdrawalsByAddress(address common.Address) ([]*database.WithdrawalWithTransactionHashes, error) {
	return []*database.WithdrawalWithTransactionHashes{
40
		{
Will Cory's avatar
Will Cory committed
41
			Withdrawal: database.Withdrawal{
Mark Tyneway's avatar
Mark Tyneway committed
42 43
				GUID:                 uuid.MustParse(guid2),
				InitiatedL2EventGUID: guid1,
Will Cory's avatar
Will Cory committed
44 45 46 47 48
				WithdrawalHash:       common.HexToHash("0x456"),
				Tx:                   database.Transaction{},
				TokenPair:            database.TokenPair{},
			},
			L2TransactionHash: common.HexToHash("0x789"),
49
		},
Will Cory's avatar
Will Cory committed
50 51
	}, nil
}
52

53 54 55 56 57 58 59 60 61 62 63
func TestHealthz(t *testing.T) {
	api := NewApi(&MockBridgeView{})
	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)
}

Will Cory's avatar
Will Cory committed
64 65 66 67
func TestDepositsHandler(t *testing.T) {
	api := NewApi(&MockBridgeView{})
	request, err := http.NewRequest("GET", "/api/v0/deposits/0x123", nil)
	assert.Nil(t, err)
68

Will Cory's avatar
Will Cory committed
69 70
	responseRecorder := httptest.NewRecorder()
	api.Router.ServeHTTP(responseRecorder, request)
71

Will Cory's avatar
Will Cory committed
72 73
	assert.Equal(t, http.StatusOK, responseRecorder.Code)
}
74

Will Cory's avatar
Will Cory committed
75 76 77 78
func TestWithdrawalsHandler(t *testing.T) {
	api := NewApi(&MockBridgeView{})
	request, err := http.NewRequest("GET", "/api/v0/withdrawals/0x123", nil)
	assert.Nil(t, err)
79

Will Cory's avatar
Will Cory committed
80 81
	responseRecorder := httptest.NewRecorder()
	api.Router.ServeHTTP(responseRecorder, request)
82

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