121 lines
3.7 KiB
Go
121 lines
3.7 KiB
Go
package paymentapiimp
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/tech/sendico/pkg/mservice"
|
|
documentsv1 "github.com/tech/sendico/pkg/proto/billing/documents/v1"
|
|
moneyv1 "github.com/tech/sendico/pkg/proto/common/money/v1"
|
|
connectorv1 "github.com/tech/sendico/pkg/proto/connector/v1"
|
|
endpointv1 "github.com/tech/sendico/pkg/proto/payments/endpoint/v1"
|
|
orchestrationv2 "github.com/tech/sendico/pkg/proto/payments/orchestration/v2"
|
|
quotationv2 "github.com/tech/sendico/pkg/proto/payments/quotation/v2"
|
|
"go.mongodb.org/mongo-driver/v2/bson"
|
|
)
|
|
|
|
func TestOperationDocumentRequest_UsesStructuredOperationFieldsOnly(t *testing.T) {
|
|
op := &connectorv1.Operation{
|
|
OperationRef: "pay-123:hop_1",
|
|
Type: connectorv1.OperationType_TRANSFER,
|
|
Status: connectorv1.OperationStatus_OPERATION_SUCCESS,
|
|
Money: &moneyv1.Money{
|
|
Amount: "100.50",
|
|
Currency: "USDT",
|
|
},
|
|
}
|
|
|
|
req := operationDocumentRequest("org-1", mservice.ChainGateway, "requested-op", "pay-123", op)
|
|
if req == nil {
|
|
t.Fatalf("expected request")
|
|
}
|
|
|
|
if got, want := req.GetPaymentRef(), "pay-123"; got != want {
|
|
t.Fatalf("payment_ref mismatch: got=%q want=%q", got, want)
|
|
}
|
|
if got := req.GetClientName(); got != "" {
|
|
t.Fatalf("expected empty client_name from operation-only request, got=%q", got)
|
|
}
|
|
if got := req.GetClientAddress(); got != "" {
|
|
t.Fatalf("expected empty client_address from operation-only request, got=%q", got)
|
|
}
|
|
}
|
|
|
|
func TestOperationDocumentRequest_FailureCodeFromStructuredStatus(t *testing.T) {
|
|
req := operationDocumentRequest("org-1", mservice.ChainGateway, "op", "pay-123", &connectorv1.Operation{
|
|
OperationRef: "pay-123:hop_1",
|
|
Type: connectorv1.OperationType_TRANSFER,
|
|
Status: connectorv1.OperationStatus_OPERATION_FAILED,
|
|
})
|
|
if req == nil {
|
|
t.Fatalf("expected request")
|
|
}
|
|
|
|
if got, want := req.GetFailureCode(), "OPERATION_FAILED"; got != want {
|
|
t.Fatalf("failure_code mismatch: got=%q want=%q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestPaymentClientName_FromIntentComment(t *testing.T) {
|
|
payment := &orchestrationv2.Payment{
|
|
IntentSnapshot: "ationv2.QuoteIntent{
|
|
Comment: "Jane Customer",
|
|
},
|
|
}
|
|
|
|
if got, want := paymentClientName(payment), "Jane Customer"; got != want {
|
|
t.Fatalf("paymentClientName mismatch: got=%q want=%q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestPaymentClientName_FromStructuredCardEndpoint(t *testing.T) {
|
|
raw, err := bson.Marshal(map[string]string{
|
|
"firstName": "Jane",
|
|
"lastName": "Doe",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Marshal: %v", err)
|
|
}
|
|
|
|
payment := &orchestrationv2.Payment{
|
|
IntentSnapshot: "ationv2.QuoteIntent{
|
|
Destination: &endpointv1.PaymentEndpoint{
|
|
Source: &endpointv1.PaymentEndpoint_PaymentMethod{
|
|
PaymentMethod: &endpointv1.PaymentMethod{
|
|
Type: endpointv1.PaymentMethodType_PAYMENT_METHOD_TYPE_CARD,
|
|
Data: raw,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
if got, want := paymentClientName(payment), "Jane Doe"; got != want {
|
|
t.Fatalf("paymentClientName mismatch: got=%q want=%q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestEnrichOperationDocumentRequestFromPayment_SetsClientName(t *testing.T) {
|
|
req := &documentsv1.GetOperationDocumentRequest{
|
|
OperationRef: "pay-123:hop_1",
|
|
}
|
|
|
|
payment := &orchestrationv2.Payment{
|
|
PaymentRef: "pay-123",
|
|
IntentSnapshot: "ationv2.QuoteIntent{
|
|
Comment: "Client Name",
|
|
},
|
|
}
|
|
|
|
enrichOperationDocumentRequestFromPayment(req, payment)
|
|
if got, want := req.GetPaymentRef(), "pay-123"; got != want {
|
|
t.Fatalf("payment_ref mismatch: got=%q want=%q", got, want)
|
|
}
|
|
if got, want := req.GetClientName(), "Client Name"; got != want {
|
|
t.Fatalf("client_name mismatch: got=%q want=%q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestOperationDocumentRequest_Compatibility(t *testing.T) {
|
|
var _ = operationDocumentRequest("org-1", mservice.ChainGateway, "op", "pay-1", &connectorv1.Operation{})
|
|
}
|