fixed rail & operation names
This commit is contained in:
@@ -26,7 +26,7 @@ import (
|
||||
|
||||
const (
|
||||
ledgerConnectorID = "ledger"
|
||||
ledgerRailName = "LEDGER"
|
||||
ledgerRailName = discovery.RailLedger
|
||||
|
||||
opParamOperation = "operation"
|
||||
opParamToMoney = "to_money"
|
||||
@@ -175,6 +175,7 @@ func (c *ledgerClient) CreateTransaction(ctx context.Context, tx rail.LedgerTx)
|
||||
if money.GetCurrency() == "" || money.GetAmount() == "" {
|
||||
return "", merrors.InvalidArgument("ledger: amount is required")
|
||||
}
|
||||
tx = normalizeLedgerTxRails(tx)
|
||||
|
||||
description := strings.TrimSpace(tx.Description)
|
||||
metadata := ledgerTxMetadata(tx.Metadata, tx)
|
||||
@@ -849,7 +850,17 @@ func (c *ledgerClient) callContext(ctx context.Context) (context.Context, contex
|
||||
}
|
||||
|
||||
func isLedgerRail(value string) bool {
|
||||
return strings.EqualFold(strings.TrimSpace(value), ledgerRailName)
|
||||
return normalizeRail(value) == ledgerRailName
|
||||
}
|
||||
|
||||
func normalizeLedgerTxRails(tx rail.LedgerTx) rail.LedgerTx {
|
||||
tx.FromRail = normalizeRail(tx.FromRail)
|
||||
tx.ToRail = normalizeRail(tx.ToRail)
|
||||
return tx
|
||||
}
|
||||
|
||||
func normalizeRail(value string) string {
|
||||
return discovery.NormalizeRail(value)
|
||||
}
|
||||
|
||||
func cloneMoney(input *moneyv1.Money) *moneyv1.Money {
|
||||
@@ -881,10 +892,10 @@ func ledgerTxMetadata(base map[string]string, tx rail.LedgerTx) map[string]strin
|
||||
if val := strings.TrimSpace(tx.PaymentPlanID); val != "" {
|
||||
meta[txMetaPaymentPlanID] = val
|
||||
}
|
||||
if val := strings.TrimSpace(tx.FromRail); val != "" {
|
||||
if val := normalizeRail(tx.FromRail); val != "" {
|
||||
meta[txMetaFromRail] = val
|
||||
}
|
||||
if val := strings.TrimSpace(tx.ToRail); val != "" {
|
||||
if val := normalizeRail(tx.ToRail); val != "" {
|
||||
meta[txMetaToRail] = val
|
||||
}
|
||||
if val := strings.TrimSpace(tx.ExternalReferenceID); val != "" {
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/tech/sendico/pkg/discovery"
|
||||
"github.com/tech/sendico/pkg/payments/rail"
|
||||
accountrolev1 "github.com/tech/sendico/pkg/proto/common/account_role/v1"
|
||||
moneyv1 "github.com/tech/sendico/pkg/proto/common/money/v1"
|
||||
connectorv1 "github.com/tech/sendico/pkg/proto/connector/v1"
|
||||
@@ -156,3 +157,36 @@ func TestPostExternalDebitWithCharges_SubmitsExternalOperation(t *testing.T) {
|
||||
assert.Equal(t, "op-ext-debit", resp.GetJournalEntryRef())
|
||||
assert.Equal(t, ledgerv1.EntryType_ENTRY_DEBIT, resp.GetEntryType())
|
||||
}
|
||||
|
||||
func TestCreateTransaction_NormalizesRailsForDirectionAndMetadata(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
||||
var captured *connectorv1.Operation
|
||||
stub := &stubConnector{
|
||||
submitFn: func(ctx context.Context, req *connectorv1.SubmitOperationRequest) (*connectorv1.SubmitOperationResponse, error) {
|
||||
captured = req.GetOperation()
|
||||
return &connectorv1.SubmitOperationResponse{Receipt: &connectorv1.OperationReceipt{OperationId: "op-tx"}}, nil
|
||||
},
|
||||
}
|
||||
|
||||
client := NewWithClient(Config{}, stub)
|
||||
ref, err := client.CreateTransaction(ctx, rail.LedgerTx{
|
||||
IdempotencyKey: "idem-tx",
|
||||
OrganizationRef: "org-1",
|
||||
LedgerAccountRef: "acct-1",
|
||||
Currency: "USD",
|
||||
Amount: "10",
|
||||
FromRail: "rail_ledger",
|
||||
ToRail: "crypto",
|
||||
})
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "op-tx", ref)
|
||||
require.NotNil(t, captured)
|
||||
assert.Equal(t, connectorv1.OperationType_DEBIT, captured.GetType())
|
||||
|
||||
metadata, ok := captured.GetParams().AsMap()["metadata"].(map[string]interface{})
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, discovery.RailLedger, metadata["from_rail"])
|
||||
assert.Equal(t, discovery.RailCrypto, metadata["to_rail"])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user