gw <-> po contracts tests
This commit is contained in:
@@ -492,6 +492,9 @@ func transferFromReceipt(req *chainv1.SubmitTransferRequest, receipt *connectorv
|
||||
transfer.Destination = req.GetDestination()
|
||||
transfer.RequestedAmount = req.GetAmount()
|
||||
transfer.NetAmount = req.GetAmount()
|
||||
transfer.IntentRef = strings.TrimSpace(req.GetIntentRef())
|
||||
transfer.OperationRef = strings.TrimSpace(req.GetOperationRef())
|
||||
transfer.PaymentRef = strings.TrimSpace(req.GetPaymentRef())
|
||||
}
|
||||
if receipt != nil {
|
||||
transfer.TransferRef = strings.TrimSpace(receipt.GetOperationId())
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
moneyv1 "github.com/tech/sendico/pkg/proto/common/money/v1"
|
||||
connectorv1 "github.com/tech/sendico/pkg/proto/connector/v1"
|
||||
chainv1 "github.com/tech/sendico/pkg/proto/gateway/chain/v1"
|
||||
"google.golang.org/grpc"
|
||||
@@ -13,6 +14,11 @@ import (
|
||||
|
||||
type stubConnectorClient struct {
|
||||
listReq *connectorv1.ListAccountsRequest
|
||||
getReq *connectorv1.GetOperationRequest
|
||||
|
||||
submitReq *connectorv1.SubmitOperationRequest
|
||||
submitResp *connectorv1.SubmitOperationResponse
|
||||
getResp *connectorv1.GetOperationResponse
|
||||
}
|
||||
|
||||
func (s *stubConnectorClient) GetCapabilities(ctx context.Context, in *connectorv1.GetCapabilitiesRequest, opts ...grpc.CallOption) (*connectorv1.GetCapabilitiesResponse, error) {
|
||||
@@ -37,10 +43,18 @@ func (s *stubConnectorClient) GetBalance(ctx context.Context, in *connectorv1.Ge
|
||||
}
|
||||
|
||||
func (s *stubConnectorClient) SubmitOperation(ctx context.Context, in *connectorv1.SubmitOperationRequest, opts ...grpc.CallOption) (*connectorv1.SubmitOperationResponse, error) {
|
||||
s.submitReq = in
|
||||
if s.submitResp != nil {
|
||||
return s.submitResp, nil
|
||||
}
|
||||
return &connectorv1.SubmitOperationResponse{}, nil
|
||||
}
|
||||
|
||||
func (s *stubConnectorClient) GetOperation(ctx context.Context, in *connectorv1.GetOperationRequest, opts ...grpc.CallOption) (*connectorv1.GetOperationResponse, error) {
|
||||
s.getReq = in
|
||||
if s.getResp != nil {
|
||||
return s.getResp, nil
|
||||
}
|
||||
return &connectorv1.GetOperationResponse{}, nil
|
||||
}
|
||||
|
||||
@@ -66,3 +80,84 @@ func TestListManagedWallets_ForwardsOrganizationRef(t *testing.T) {
|
||||
require.Equal(t, "owner-1", stub.listReq.GetOwnerRefFilter().GetValue())
|
||||
require.Equal(t, connectorv1.AccountKind_CHAIN_MANAGED_WALLET, stub.listReq.GetKind())
|
||||
}
|
||||
|
||||
func TestTransferFromReceipt_PreservesRequestReferences(t *testing.T) {
|
||||
req := &chainv1.SubmitTransferRequest{
|
||||
IdempotencyKey: "idem-1",
|
||||
OrganizationRef: "org-1",
|
||||
SourceWalletRef: "wallet-src",
|
||||
Amount: &moneyv1.Money{Amount: "12.34", Currency: "USDT"},
|
||||
IntentRef: "intent-1",
|
||||
OperationRef: "payment-1:hop_2_settlement_fx_convert",
|
||||
PaymentRef: "payment-1",
|
||||
}
|
||||
receipt := &connectorv1.OperationReceipt{
|
||||
OperationId: "payment-1:hop_2_settlement_fx_convert",
|
||||
ProviderRef: "provider-1",
|
||||
Status: connectorv1.OperationStatus_OPERATION_WAITING,
|
||||
}
|
||||
|
||||
transfer := transferFromReceipt(req, receipt)
|
||||
require.NotNil(t, transfer)
|
||||
require.Equal(t, "payment-1:hop_2_settlement_fx_convert", transfer.GetTransferRef())
|
||||
require.Equal(t, "intent-1", transfer.GetIntentRef())
|
||||
require.Equal(t, "payment-1:hop_2_settlement_fx_convert", transfer.GetOperationRef())
|
||||
require.Equal(t, "payment-1", transfer.GetPaymentRef())
|
||||
require.Equal(t, chainv1.TransferStatus_TRANSFER_WAITING, transfer.GetStatus())
|
||||
}
|
||||
|
||||
func TestSubmitTransfer_ForwardsOperationAndIntentReferences(t *testing.T) {
|
||||
stub := &stubConnectorClient{
|
||||
submitResp: &connectorv1.SubmitOperationResponse{
|
||||
Receipt: &connectorv1.OperationReceipt{
|
||||
OperationId: "payment-1:hop_2_settlement_fx_convert",
|
||||
Status: connectorv1.OperationStatus_OPERATION_WAITING,
|
||||
ProviderRef: "provider-1",
|
||||
},
|
||||
},
|
||||
}
|
||||
client := NewWithClient(Config{}, stub)
|
||||
|
||||
resp, err := client.SubmitTransfer(context.Background(), &chainv1.SubmitTransferRequest{
|
||||
IdempotencyKey: "idem-1",
|
||||
OrganizationRef: "org-1",
|
||||
SourceWalletRef: "wallet-src",
|
||||
Destination: &chainv1.TransferDestination{
|
||||
Destination: &chainv1.TransferDestination_ManagedWalletRef{
|
||||
ManagedWalletRef: "wallet-dst",
|
||||
},
|
||||
},
|
||||
Amount: &moneyv1.Money{Amount: "12.34", Currency: "USDT"},
|
||||
IntentRef: "intent-1",
|
||||
OperationRef: "payment-1:hop_2_settlement_fx_convert",
|
||||
PaymentRef: "payment-1",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, stub.submitReq)
|
||||
require.NotNil(t, stub.submitReq.GetOperation())
|
||||
require.Equal(t, "intent-1", stub.submitReq.GetOperation().GetIntentRef())
|
||||
require.Equal(t, "payment-1:hop_2_settlement_fx_convert", stub.submitReq.GetOperation().GetOperationRef())
|
||||
require.NotNil(t, resp.GetTransfer())
|
||||
require.Equal(t, "payment-1:hop_2_settlement_fx_convert", resp.GetTransfer().GetTransferRef())
|
||||
require.Equal(t, "payment-1:hop_2_settlement_fx_convert", resp.GetTransfer().GetOperationRef())
|
||||
require.Equal(t, "intent-1", resp.GetTransfer().GetIntentRef())
|
||||
}
|
||||
|
||||
func TestGetTransfer_UsesTransferRefAsOperationID(t *testing.T) {
|
||||
stub := &stubConnectorClient{
|
||||
getResp: &connectorv1.GetOperationResponse{
|
||||
Operation: &connectorv1.Operation{
|
||||
OperationId: "transfer-1",
|
||||
Status: connectorv1.OperationStatus_OPERATION_PROCESSING,
|
||||
},
|
||||
},
|
||||
}
|
||||
client := NewWithClient(Config{}, stub)
|
||||
|
||||
resp, err := client.GetTransfer(context.Background(), &chainv1.GetTransferRequest{TransferRef: "transfer-1"})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, stub.getReq)
|
||||
require.Equal(t, "transfer-1", stub.getReq.GetOperationId())
|
||||
require.NotNil(t, resp.GetTransfer())
|
||||
require.Equal(t, "transfer-1", resp.GetTransfer().GetTransferRef())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user