2023-01-18 07:42:14 -08:00
|
|
|
package parser
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"io"
|
|
|
|
"net/http"
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"go.uber.org/zap"
|
|
|
|
)
|
|
|
|
|
|
|
|
var timeout int64 = 10
|
|
|
|
|
|
|
|
type RoundTripFunc func(req *http.Request) *http.Response
|
|
|
|
|
|
|
|
// RoundTrip interface implementation.
|
|
|
|
func (r RoundTripFunc) RoundTrip(request *http.Request) (*http.Response, error) {
|
|
|
|
return r(request), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewParserVAAAPITestClient create a
|
|
|
|
func NewParserVAAAPITestClient(rountTripFunc RoundTripFunc) ParserVAAAPIClient {
|
|
|
|
parserVaaClient, _ := NewParserVAAAPIClient(timeout, "", zap.NewExample())
|
|
|
|
parserVaaClient.Client = http.Client{
|
|
|
|
Timeout: time.Duration(10) * time.Second,
|
|
|
|
Transport: RoundTripFunc(rountTripFunc),
|
|
|
|
}
|
|
|
|
return parserVaaClient
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestSuccessVAAParser test success vaa parser.
|
|
|
|
func TestSuccessVAAParser(t *testing.T) {
|
|
|
|
parserVaaClient := NewParserVAAAPITestClient(func(request *http.Request) *http.Response {
|
|
|
|
return &http.Response{
|
|
|
|
StatusCode: http.StatusCreated,
|
|
|
|
Body: io.NopCloser(strings.NewReader(`{"appID": "PORTAL_TOKEN_BRIDGE","chainId": 4, "address": "000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", "sequence": "226769", "result": {"fee": 0,"type": "Transfer","payloadId": 1,"amount": 10000000,"tokenAddress": "0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7","tokenChain": 2,"toAddress": "0x0000000000000000000000000ff664edd699bd85610c2782d9dbbbad704b6fc5","chain": 5}}`)),
|
|
|
|
}
|
|
|
|
})
|
|
|
|
var chainID uint16 = 4
|
|
|
|
address := "000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585"
|
|
|
|
sequence := "226769"
|
2023-07-12 08:51:17 -07:00
|
|
|
parserVaaResponse, err := parserVaaClient.ParsePayload(chainID, address, sequence, []byte{})
|
2023-01-18 07:42:14 -08:00
|
|
|
if err != nil {
|
|
|
|
t.Error("expected err zero value, got %w", err)
|
|
|
|
}
|
|
|
|
if parserVaaResponse == nil {
|
|
|
|
t.Error("expected parserVaaResponse value, got nil")
|
|
|
|
} else {
|
|
|
|
if chainID != parserVaaResponse.ChainID {
|
|
|
|
t.Errorf("expected chainID %v, got %v", chainID, parserVaaResponse.ChainID)
|
|
|
|
}
|
|
|
|
if parserVaaResponse.EmitterAddress != address {
|
|
|
|
t.Errorf("expected address %s, got %s", address, parserVaaResponse.EmitterAddress)
|
|
|
|
}
|
|
|
|
if parserVaaResponse.Sequence != sequence {
|
|
|
|
t.Errorf("expected sequence %s, got %s", sequence, parserVaaResponse.Sequence)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestNotFoundVaaParser test vaa parser not found.
|
|
|
|
func TestNotFoundVaaParser(t *testing.T) {
|
|
|
|
parserVaaClient := NewParserVAAAPITestClient(func(request *http.Request) *http.Response {
|
|
|
|
return &http.Response{
|
|
|
|
StatusCode: http.StatusNotFound,
|
|
|
|
}
|
|
|
|
})
|
2023-07-12 08:51:17 -07:00
|
|
|
parserVaaResponse, err := parserVaaClient.ParsePayload(4, "000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", "226769", []byte{})
|
2023-01-18 07:42:14 -08:00
|
|
|
if err == nil {
|
|
|
|
t.Error("expected error, got nil")
|
|
|
|
}
|
|
|
|
if !errors.Is(err, ErrNotFound) {
|
|
|
|
t.Errorf("expected ErrNotFound, got %s", err.Error())
|
|
|
|
}
|
|
|
|
if parserVaaResponse != nil {
|
|
|
|
t.Error("expected parserVaaResponse zero value, got %w", parserVaaResponse)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestBadRequestVaaParser test vaa parser bad request.
|
|
|
|
func TestBadRequestVaaParser(t *testing.T) {
|
|
|
|
parserVaaClient := NewParserVAAAPITestClient(func(request *http.Request) *http.Response {
|
|
|
|
return &http.Response{
|
|
|
|
StatusCode: http.StatusBadRequest,
|
|
|
|
}
|
|
|
|
})
|
2023-07-12 08:51:17 -07:00
|
|
|
parserVaaResponse, err := parserVaaClient.ParsePayload(4, "000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", "226769", []byte{})
|
2023-01-18 07:42:14 -08:00
|
|
|
if err == nil {
|
|
|
|
t.Error("expected error, got nil")
|
|
|
|
}
|
|
|
|
if !errors.Is(err, ErrBadRequest) {
|
|
|
|
t.Errorf("expected ErrBadRequest, got %s", err.Error())
|
|
|
|
}
|
|
|
|
if parserVaaResponse != nil {
|
|
|
|
t.Error("expected parserVaaResponse zero value, got %w", parserVaaResponse)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestUnprocessableVaaParser test vaa parser unprocessable request.
|
|
|
|
func TestUnprocessableVaaParser(t *testing.T) {
|
|
|
|
parserVaaClient := NewParserVAAAPITestClient(func(request *http.Request) *http.Response {
|
|
|
|
return &http.Response{
|
|
|
|
StatusCode: http.StatusUnprocessableEntity,
|
|
|
|
}
|
|
|
|
})
|
2023-07-12 08:51:17 -07:00
|
|
|
parserVaaResponse, err := parserVaaClient.ParsePayload(4, "000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", "26769", []byte{})
|
2023-01-18 07:42:14 -08:00
|
|
|
if err == nil {
|
|
|
|
t.Error("expected error, got nil")
|
|
|
|
}
|
|
|
|
if !errors.Is(err, ErrUnproceesableEntity) {
|
|
|
|
t.Errorf("expected ErrUnproceesableEntity, got %s", err.Error())
|
|
|
|
}
|
|
|
|
if parserVaaResponse != nil {
|
|
|
|
t.Error("expected parserVaaResponse zero value, got %w", parserVaaResponse)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestInternalErrorVaaParser test vaa parser internal error request.
|
|
|
|
func TestInternalErrorVaaParser(t *testing.T) {
|
|
|
|
parserVaaClient := NewParserVAAAPITestClient(func(request *http.Request) *http.Response {
|
|
|
|
return &http.Response{
|
|
|
|
StatusCode: http.StatusInternalServerError,
|
|
|
|
}
|
|
|
|
})
|
2023-07-12 08:51:17 -07:00
|
|
|
parserVaaResponse, err := parserVaaClient.ParsePayload(4, "000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", "226769", []byte{})
|
2023-01-18 07:42:14 -08:00
|
|
|
if err == nil {
|
|
|
|
t.Error("expected error, got nil")
|
|
|
|
}
|
|
|
|
if !errors.Is(err, ErrInternalError) {
|
|
|
|
t.Errorf("expected ErrInternalError, got %s", err.Error())
|
|
|
|
}
|
|
|
|
if parserVaaResponse != nil {
|
|
|
|
t.Error("expected parserVaaResponse zero value, got %w", parserVaaResponse)
|
|
|
|
}
|
|
|
|
}
|