fixed wallet listing ignoring org reference

This commit is contained in:
Stephan D
2026-01-14 17:25:21 +01:00
parent 62bc2644d4
commit 343911ebe7
33 changed files with 408 additions and 304 deletions

View File

@@ -47,8 +47,8 @@ func (c *listManagedWalletsCommand) Execute(ctx context.Context, req *chainv1.Li
}
protoWallets := make([]*chainv1.ManagedWallet, 0, len(result.Items))
for _, wallet := range result.Items {
protoWallets = append(protoWallets, toProtoManagedWallet(wallet))
for i := range result.Items {
protoWallets = append(protoWallets, toProtoManagedWallet(&result.Items[i]))
}
resp := &chainv1.ListManagedWalletsResponse{

View File

@@ -91,9 +91,10 @@ func (s *Service) ListAccounts(ctx context.Context, req *connectorv1.ListAccount
asset = parsed
}
resp, err := s.ListManagedWallets(ctx, &chainv1.ListManagedWalletsRequest{
OwnerRef: strings.TrimSpace(req.GetOwnerRef()),
Asset: asset,
Page: req.GetPage(),
OrganizationRef: strings.TrimSpace(req.GetOrganizationRef()),
OwnerRef: strings.TrimSpace(req.GetOwnerRef()),
Asset: asset,
Page: req.GetPage(),
})
if err != nil {
return nil, err

View File

@@ -11,6 +11,7 @@ import (
"time"
"github.com/stretchr/testify/require"
connectorv1 "github.com/tech/sendico/pkg/proto/connector/v1"
ichainv1 "github.com/tech/sendico/pkg/proto/gateway/chain/v1"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.uber.org/zap"
@@ -85,6 +86,46 @@ func TestCreateManagedWallet_NativeTokenWithoutContract(t *testing.T) {
require.Empty(t, resp.GetWallet().GetAsset().GetContractAddress())
}
func TestListAccounts_OrganizationRefFilters(t *testing.T) {
svc, _ := newTestService(t)
ctx := context.Background()
_, err := svc.CreateManagedWallet(ctx, &ichainv1.CreateManagedWalletRequest{
IdempotencyKey: "idem-org-1",
OrganizationRef: "org-1",
OwnerRef: "owner-1",
Asset: &ichainv1.Asset{
Chain: ichainv1.ChainNetwork_CHAIN_NETWORK_ETHEREUM_MAINNET,
TokenSymbol: "USDC",
},
})
require.NoError(t, err)
_, err = svc.CreateManagedWallet(ctx, &ichainv1.CreateManagedWalletRequest{
IdempotencyKey: "idem-org-2",
OrganizationRef: "org-2",
OwnerRef: "owner-2",
Asset: &ichainv1.Asset{
Chain: ichainv1.ChainNetwork_CHAIN_NETWORK_ETHEREUM_MAINNET,
TokenSymbol: "USDC",
},
})
require.NoError(t, err)
resp, err := svc.ListAccounts(ctx, &connectorv1.ListAccountsRequest{
OrganizationRef: "org-1",
Kind: connectorv1.AccountKind_CHAIN_MANAGED_WALLET,
})
require.NoError(t, err)
require.Len(t, resp.GetAccounts(), 1)
details := resp.GetAccounts()[0].GetProviderDetails()
require.NotNil(t, details)
orgField := details.GetFields()["organization_ref"]
require.NotNil(t, orgField)
require.Equal(t, "org-1", orgField.GetStringValue())
}
func TestSubmitTransfer_ManagedDestination(t *testing.T) {
svc, repo := newTestService(t)
ctx := context.Background()
@@ -283,7 +324,7 @@ func (w *inMemoryWallets) List(ctx context.Context, filter model.ManagedWalletFi
w.mu.Lock()
defer w.mu.Unlock()
items := make([]*model.ManagedWallet, 0, len(w.wallets))
items := make([]model.ManagedWallet, 0, len(w.wallets))
for _, wallet := range w.wallets {
if filter.OrganizationRef != "" && !strings.EqualFold(wallet.OrganizationRef, filter.OrganizationRef) {
continue
@@ -297,7 +338,7 @@ func (w *inMemoryWallets) List(ctx context.Context, filter model.ManagedWalletFi
if filter.TokenSymbol != "" && !strings.EqualFold(wallet.TokenSymbol, filter.TokenSymbol) {
continue
}
items = append(items, wallet)
items = append(items, *wallet)
}
sort.Slice(items, func(i, j int) bool {