move api/server to api/edge/bff
This commit is contained in:
116
api/edge/bff/internal/server/accountapiimp/signup_ledger_test.go
Normal file
116
api/edge/bff/internal/server/accountapiimp/signup_ledger_test.go
Normal file
@@ -0,0 +1,116 @@
|
||||
package accountapiimp
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/tech/sendico/pkg/merrors"
|
||||
"github.com/tech/sendico/pkg/model"
|
||||
chainv1 "github.com/tech/sendico/pkg/proto/gateway/chain/v1"
|
||||
ledgerv1 "github.com/tech/sendico/pkg/proto/ledger/v1"
|
||||
"github.com/tech/sendico/server/interface/api/srequest"
|
||||
"go.mongodb.org/mongo-driver/v2/bson"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type stubLedgerAccountClient struct {
|
||||
createReq *ledgerv1.CreateAccountRequest
|
||||
createResp *ledgerv1.CreateAccountResponse
|
||||
createErr error
|
||||
}
|
||||
|
||||
func (s *stubLedgerAccountClient) CreateAccount(_ context.Context, req *ledgerv1.CreateAccountRequest) (*ledgerv1.CreateAccountResponse, error) {
|
||||
s.createReq = req
|
||||
return s.createResp, s.createErr
|
||||
}
|
||||
|
||||
func (s *stubLedgerAccountClient) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestOpenOrgLedgerAccount(t *testing.T) {
|
||||
t.Run("creates operating ledger account", func(t *testing.T) {
|
||||
desc := " Main org ledger account "
|
||||
sr := &srequest.Signup{
|
||||
Account: model.AccountData{
|
||||
LoginData: model.LoginData{
|
||||
UserDataBase: model.UserDataBase{
|
||||
Login: "owner@example.com",
|
||||
},
|
||||
},
|
||||
},
|
||||
LedgerWallet: model.Describable{
|
||||
Name: " Primary Ledger ",
|
||||
Description: &desc,
|
||||
},
|
||||
}
|
||||
|
||||
org := &model.Organization{}
|
||||
org.SetID(bson.NewObjectID())
|
||||
|
||||
ledgerStub := &stubLedgerAccountClient{
|
||||
createResp: &ledgerv1.CreateAccountResponse{
|
||||
Account: &ledgerv1.LedgerAccount{LedgerAccountRef: bson.NewObjectID().Hex()},
|
||||
},
|
||||
}
|
||||
api := &AccountAPI{
|
||||
logger: zap.NewNop(),
|
||||
ledgerClient: ledgerStub,
|
||||
chainAsset: &chainv1.Asset{
|
||||
TokenSymbol: " usdt ",
|
||||
},
|
||||
}
|
||||
|
||||
err := api.openOrgLedgerAccount(context.Background(), org, sr)
|
||||
assert.NoError(t, err)
|
||||
if assert.NotNil(t, ledgerStub.createReq) {
|
||||
assert.Equal(t, org.ID.Hex(), ledgerStub.createReq.GetOrganizationRef())
|
||||
assert.Equal(t, "RUB", ledgerStub.createReq.GetCurrency())
|
||||
assert.Equal(t, ledgerv1.AccountType_ACCOUNT_TYPE_ASSET, ledgerStub.createReq.GetAccountType())
|
||||
assert.Equal(t, ledgerv1.AccountStatus_ACCOUNT_STATUS_ACTIVE, ledgerStub.createReq.GetStatus())
|
||||
assert.Equal(t, ledgerv1.AccountRole_ACCOUNT_ROLE_OPERATING, ledgerStub.createReq.GetRole())
|
||||
assert.Equal(t, map[string]string{
|
||||
"source": "signup",
|
||||
"login": "owner@example.com",
|
||||
}, ledgerStub.createReq.GetMetadata())
|
||||
if assert.NotNil(t, ledgerStub.createReq.GetDescribable()) {
|
||||
assert.Equal(t, "Primary Ledger", ledgerStub.createReq.GetDescribable().GetName())
|
||||
if assert.NotNil(t, ledgerStub.createReq.GetDescribable().Description) {
|
||||
assert.Equal(t, "Main org ledger account", ledgerStub.createReq.GetDescribable().GetDescription())
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("fails when ledger client is missing", func(t *testing.T) {
|
||||
api := &AccountAPI{
|
||||
logger: zap.NewNop(),
|
||||
chainAsset: &chainv1.Asset{
|
||||
TokenSymbol: "USDT",
|
||||
},
|
||||
}
|
||||
|
||||
err := api.openOrgLedgerAccount(context.Background(), &model.Organization{}, &srequest.Signup{})
|
||||
assert.Error(t, err)
|
||||
assert.True(t, errors.Is(err, merrors.ErrInternal))
|
||||
})
|
||||
|
||||
t.Run("fails when ledger response has empty reference", func(t *testing.T) {
|
||||
ledgerStub := &stubLedgerAccountClient{
|
||||
createResp: &ledgerv1.CreateAccountResponse{},
|
||||
}
|
||||
api := &AccountAPI{
|
||||
logger: zap.NewNop(),
|
||||
ledgerClient: ledgerStub,
|
||||
chainAsset: &chainv1.Asset{
|
||||
TokenSymbol: "USDT",
|
||||
},
|
||||
}
|
||||
|
||||
err := api.openOrgLedgerAccount(context.Background(), &model.Organization{}, &srequest.Signup{})
|
||||
assert.Error(t, err)
|
||||
assert.True(t, errors.Is(err, merrors.ErrInternal))
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user