@openora/core 0.4.1-canary.149 → 0.4.1-canary.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/schemas/wallet-tx.d.ts +2 -1
- package/dist/contracts/schemas/wallet-tx.d.ts.map +1 -1
- package/dist/contracts/schemas/wallet-tx.js +1 -0
- package/dist/contracts/schemas/wallet-tx.js.map +1 -1
- package/dist/wallet/__tests__/reconciliation.service.int.test.js +85 -0
- package/dist/wallet/__tests__/reconciliation.service.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.service.int.test.js +169 -2
- package/dist/wallet/__tests__/wallet.service.int.test.js.map +1 -1
- package/dist/wallet/contract/index.d.ts +5 -0
- package/dist/wallet/contract/index.d.ts.map +1 -1
- package/dist/wallet/drizzle/migrations/0021_mean_chameleon.sql +3 -0
- package/dist/wallet/drizzle/migrations/meta/0021_snapshot.json +1986 -0
- package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/wallet/plugin.d.ts.map +1 -1
- package/dist/wallet/plugin.js +9 -1
- package/dist/wallet/plugin.js.map +1 -1
- package/dist/wallet/router/index.d.ts +3 -0
- package/dist/wallet/router/index.d.ts.map +1 -1
- package/dist/wallet/schema/index.d.ts +4 -4
- package/dist/wallet/schema/index.d.ts.map +1 -1
- package/dist/wallet/schema/index.js +5 -2
- package/dist/wallet/schema/index.js.map +1 -1
- package/dist/wallet/service/reconciliation-finding.service.d.ts +38 -9
- package/dist/wallet/service/reconciliation-finding.service.d.ts.map +1 -1
- package/dist/wallet/service/reconciliation-finding.service.js +41 -6
- package/dist/wallet/service/reconciliation-finding.service.js.map +1 -1
- package/dist/wallet/service/reconciliation.service.d.ts +19 -3
- package/dist/wallet/service/reconciliation.service.d.ts.map +1 -1
- package/dist/wallet/service/reconciliation.service.js +69 -7
- package/dist/wallet/service/reconciliation.service.js.map +1 -1
- package/dist/wallet/service/wallet.service.d.ts.map +1 -1
- package/dist/wallet/service/wallet.service.js +35 -3
- package/dist/wallet/service/wallet.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ export declare const WALLET_TRANSACTION_STATUSES: readonly ["pending", "processi
|
|
|
4
4
|
export declare const WALLET_RAILS: readonly ["crypto", "fiat"];
|
|
5
5
|
export declare const WALLET_CUSTODY_SWEEP_STATUSES: readonly ["pending", "processing", "completed", "failed", "unknown"];
|
|
6
6
|
export declare const WALLET_JOB_RUN_STATUSES: readonly ["running", "completed", "skipped", "failed", "abandoned"];
|
|
7
|
-
export declare const WALLET_RECONCILIATION_FINDING_KINDS: readonly ["missing_deposit", "unattributed_deposit", "amount_mismatch", "currency_mismatch", "status_mismatch", "unknown_at_provider", "unconfigured_asset", "stuck_sweep"];
|
|
7
|
+
export declare const WALLET_RECONCILIATION_FINDING_KINDS: readonly ["missing_deposit", "unattributed_deposit", "amount_mismatch", "currency_mismatch", "status_mismatch", "unknown_at_provider", "unconfigured_asset", "stuck_sweep", "rg_limit_breach"];
|
|
8
8
|
export declare const WALLET_RECONCILIATION_FINDING_STATUSES: readonly ["open", "resolved"];
|
|
9
9
|
export declare const WalletTransactionTypeSchema: z.ZodEnum<{
|
|
10
10
|
withdrawal: "withdrawal";
|
|
@@ -58,6 +58,7 @@ export declare const WalletReconciliationFindingKindSchema: z.ZodEnum<{
|
|
|
58
58
|
unknown_at_provider: "unknown_at_provider";
|
|
59
59
|
unconfigured_asset: "unconfigured_asset";
|
|
60
60
|
stuck_sweep: "stuck_sweep";
|
|
61
|
+
rg_limit_breach: "rg_limit_breach";
|
|
61
62
|
}>;
|
|
62
63
|
export declare const WalletReconciliationFindingStatusSchema: z.ZodEnum<{
|
|
63
64
|
open: "open";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-tx.d.ts","sourceRoot":"","sources":["../../../src/contracts/schemas/wallet-tx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAKzB,eAAO,MAAM,wBAAwB,kKAe3B,CAAC;AAEX,eAAO,MAAM,2BAA2B,+FAU9B,CAAC;AAKX,eAAO,MAAM,YAAY,6BAA8B,CAAC;AAMxD,eAAO,MAAM,6BAA6B,sEAMhC,CAAC;AAEX,eAAO,MAAM,uBAAuB,qEAM1B,CAAC;AAEX,eAAO,MAAM,mCAAmC,
|
|
1
|
+
{"version":3,"file":"wallet-tx.d.ts","sourceRoot":"","sources":["../../../src/contracts/schemas/wallet-tx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAKzB,eAAO,MAAM,wBAAwB,kKAe3B,CAAC;AAEX,eAAO,MAAM,2BAA2B,+FAU9B,CAAC;AAKX,eAAO,MAAM,YAAY,6BAA8B,CAAC;AAMxD,eAAO,MAAM,6BAA6B,sEAMhC,CAAC;AAEX,eAAO,MAAM,uBAAuB,qEAM1B,CAAC;AAEX,eAAO,MAAM,mCAAmC,gMAUtC,CAAC;AAEX,eAAO,MAAM,sCAAsC,+BAAgC,CAAC;AAEpF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAAmC,CAAC;AAC5E,eAAO,MAAM,6BAA6B;;;;;;;;EAAsC,CAAC;AACjF,eAAO,MAAM,gBAAgB;;;EAAuB,CAAC;AACrD,eAAO,MAAM,8BAA8B;;;;;;EAAwC,CAAC;AACpF,eAAO,MAAM,wBAAwB;;;;;;EAAkC,CAAC;AACxE,eAAO,MAAM,qCAAqC;;;;;;;;;;EAA8C,CAAC;AACjG,eAAO,MAAM,uCAAuC;;;EAEnD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AACpG,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CACrD,OAAO,uCAAuC,CAC/C,CAAC;AAEF,eAAO,MAAM,yBAAyB,yCAA0C,CAAC;AAEjF,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAG1F"}
|
|
@@ -64,6 +64,7 @@ export const WALLET_RECONCILIATION_FINDING_KINDS = [
|
|
|
64
64
|
'unknown_at_provider',
|
|
65
65
|
'unconfigured_asset',
|
|
66
66
|
'stuck_sweep',
|
|
67
|
+
'rg_limit_breach',
|
|
67
68
|
];
|
|
68
69
|
export const WALLET_RECONCILIATION_FINDING_STATUSES = ['open', 'resolved'];
|
|
69
70
|
export const WalletTransactionTypeSchema = z.enum(WALLET_TRANSACTION_TYPES);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-tx.js","sourceRoot":"","sources":["../../../src/contracts/schemas/wallet-tx.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,iFAAiF;AACjF,mFAAmF;AACnF,qCAAqC;AACrC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS;IACT,YAAY;IACZ,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,eAAe;IACf,cAAc;IACd,UAAU;IACV,SAAS;IACT,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,SAAS;IACT,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,UAAU;IACV,kFAAkF;IAClF,qFAAqF;IACrF,SAAS;IACT,WAAW;CACH,CAAC;AAEX,oFAAoF;AACpF,qFAAqF;AACrF,qDAAqD;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAC;AAExD,kFAAkF;AAClF,sFAAsF;AACtF,mFAAmF;AACnF,sFAAsF;AACtF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,SAAS;IACT,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,iBAAiB;IACjB,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;
|
|
1
|
+
{"version":3,"file":"wallet-tx.js","sourceRoot":"","sources":["../../../src/contracts/schemas/wallet-tx.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,iFAAiF;AACjF,mFAAmF;AACnF,qCAAqC;AACrC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS;IACT,YAAY;IACZ,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,eAAe;IACf,cAAc;IACd,UAAU;IACV,SAAS;IACT,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,SAAS;IACT,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,UAAU;IACV,kFAAkF;IAClF,qFAAqF;IACrF,SAAS;IACT,WAAW;CACH,CAAC;AAEX,oFAAoF;AACpF,qFAAqF;AACrF,qDAAqD;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAC;AAExD,kFAAkF;AAClF,sFAAsF;AACtF,mFAAmF;AACnF,sFAAsF;AACtF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,SAAS;IACT,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,iBAAiB;IACjB,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;IACb,iBAAiB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAU,CAAC;AAEpF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;AACjG,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC,IAAI,CAC3D,sCAAsC,CACvC,CAAC;AAYF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAEjF,MAAM,UAAU,OAAO,CAAC,QAAgB,EAAE,gBAAoC;IAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,IAAI,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACjG,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC"}
|
|
@@ -49,6 +49,7 @@ function makeServices(payment, overrides = {}) {
|
|
|
49
49
|
paymentProviders,
|
|
50
50
|
audit,
|
|
51
51
|
platformConfig,
|
|
52
|
+
rgLimits: overrides.rgLimits,
|
|
52
53
|
});
|
|
53
54
|
return { wallet, reconciliation, audit, events };
|
|
54
55
|
}
|
|
@@ -415,6 +416,90 @@ describe('ReconciliationService.resolveFinding', () => {
|
|
|
415
416
|
expect(resolved.status).toBe('resolved');
|
|
416
417
|
expect(resolved.transactionId).toBe(creditTx.transactionId);
|
|
417
418
|
});
|
|
419
|
+
it('files an rg_limit_breach when an admin hand-credits a deposit past the player limit', async () => {
|
|
420
|
+
const finding = await seedFinding();
|
|
421
|
+
const w = await seedWallet('BTC', '0');
|
|
422
|
+
const rgLimits = mock({
|
|
423
|
+
checkDeposit: vi.fn(async () => ({
|
|
424
|
+
allowed: false,
|
|
425
|
+
limitType: 'deposit',
|
|
426
|
+
period: 'daily',
|
|
427
|
+
limit: '0.5',
|
|
428
|
+
used: '0.4',
|
|
429
|
+
})),
|
|
430
|
+
});
|
|
431
|
+
const { wallet: walletSvc, reconciliation } = makeServices(listTransactionsReturning([]), {
|
|
432
|
+
identityReader: mock({
|
|
433
|
+
...makeIdentityReader(),
|
|
434
|
+
getPlayerIdByUserId: vi.fn().mockResolvedValue(randomUUID()),
|
|
435
|
+
}),
|
|
436
|
+
rgLimits,
|
|
437
|
+
});
|
|
438
|
+
const creditTx = await walletSvc.manualAdjust({
|
|
439
|
+
adminId: randomUUID(),
|
|
440
|
+
userId: w.userId,
|
|
441
|
+
direction: 'credit',
|
|
442
|
+
amount: '1',
|
|
443
|
+
currency: 'BTC',
|
|
444
|
+
reason: 'reconciliation credit',
|
|
445
|
+
idempotencyKey: randomUUID(),
|
|
446
|
+
ip: null,
|
|
447
|
+
userAgent: null,
|
|
448
|
+
});
|
|
449
|
+
await reconciliation.resolveFinding(randomUUID(), finding.id, {
|
|
450
|
+
outcome: 'credited',
|
|
451
|
+
transactionId: creditTx.transactionId,
|
|
452
|
+
});
|
|
453
|
+
// A manual_credit is invisible to the deposit window, so the credit itself is the
|
|
454
|
+
// attempted move - the opposite of the webhook path, which asks with '0'.
|
|
455
|
+
// The stored decimal, not the admin's input string: the gate is asked with the
|
|
456
|
+
// ledger's own amount.
|
|
457
|
+
expect(rgLimits.checkDeposit).toHaveBeenCalledWith(expect.anything(), w.userId, '1.000000000000000000', 'BTC');
|
|
458
|
+
const [breach] = await db.drizzle.db
|
|
459
|
+
.select()
|
|
460
|
+
.from(walletReconciliationFinding)
|
|
461
|
+
.where(eq(walletReconciliationFinding.externalId, finding.id));
|
|
462
|
+
expect(breach).toMatchObject({
|
|
463
|
+
kind: 'rg_limit_breach',
|
|
464
|
+
status: 'open',
|
|
465
|
+
amount: '1.000000000000000000',
|
|
466
|
+
transactionId: creditTx.transactionId,
|
|
467
|
+
});
|
|
468
|
+
expect(breach?.detail).toContain('daily deposit limit of 0.5');
|
|
469
|
+
});
|
|
470
|
+
it('files no breach when the hand-credited deposit stays inside the limit', async () => {
|
|
471
|
+
const finding = await seedFinding();
|
|
472
|
+
const w = await seedWallet('BTC', '0');
|
|
473
|
+
const { wallet: walletSvc, reconciliation } = makeServices(listTransactionsReturning([]), {
|
|
474
|
+
identityReader: mock({
|
|
475
|
+
...makeIdentityReader(),
|
|
476
|
+
getPlayerIdByUserId: vi.fn().mockResolvedValue(randomUUID()),
|
|
477
|
+
}),
|
|
478
|
+
rgLimits: mock({
|
|
479
|
+
checkDeposit: vi.fn(async () => ({ allowed: true })),
|
|
480
|
+
}),
|
|
481
|
+
});
|
|
482
|
+
const creditTx = await walletSvc.manualAdjust({
|
|
483
|
+
adminId: randomUUID(),
|
|
484
|
+
userId: w.userId,
|
|
485
|
+
direction: 'credit',
|
|
486
|
+
amount: '1',
|
|
487
|
+
currency: 'BTC',
|
|
488
|
+
reason: 'reconciliation credit',
|
|
489
|
+
idempotencyKey: randomUUID(),
|
|
490
|
+
ip: null,
|
|
491
|
+
userAgent: null,
|
|
492
|
+
});
|
|
493
|
+
await reconciliation.resolveFinding(randomUUID(), finding.id, {
|
|
494
|
+
outcome: 'credited',
|
|
495
|
+
transactionId: creditTx.transactionId,
|
|
496
|
+
});
|
|
497
|
+
const breaches = await db.drizzle.db
|
|
498
|
+
.select()
|
|
499
|
+
.from(walletReconciliationFinding)
|
|
500
|
+
.where(eq(walletReconciliationFinding.kind, 'rg_limit_breach'));
|
|
501
|
+
expect(breaches).toHaveLength(0);
|
|
502
|
+
});
|
|
418
503
|
it('a double-resolve is a no-op: second call does not write a second audit entry', async () => {
|
|
419
504
|
const finding = await seedFinding();
|
|
420
505
|
const payment = listTransactionsReturning([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconciliation.service.int.test.js","sourceRoot":"","sources":["../../../src/wallet/__tests__/reconciliation.service.int.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reconciliation.service.int.test.js","sourceRoot":"","sources":["../../../src/wallet/__tests__/reconciliation.service.int.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1369,10 +1369,10 @@ describe('WalletService.getOrCreateDepositAddress (real PG)', () => {
|
|
|
1369
1369
|
});
|
|
1370
1370
|
});
|
|
1371
1371
|
describe('WalletService.creditDepositByAddress (real PG)', () => {
|
|
1372
|
-
async function seedAddress(userId, address, currency = 'BTC', network) {
|
|
1372
|
+
async function seedAddress(userId, address, currency = 'BTC', network, providerName = 'custody') {
|
|
1373
1373
|
await db.drizzle.db
|
|
1374
1374
|
.insert(walletDepositAddress)
|
|
1375
|
-
.values({ userId, currency, address, network, providerName
|
|
1375
|
+
.values({ userId, currency, address, network, providerName });
|
|
1376
1376
|
}
|
|
1377
1377
|
it('resolves the address, credits the wallet, and emits deposit.completed', async () => {
|
|
1378
1378
|
const { svc, events } = makeService();
|
|
@@ -1412,6 +1412,173 @@ describe('WalletService.creditDepositByAddress (real PG)', () => {
|
|
|
1412
1412
|
status: 'open',
|
|
1413
1413
|
});
|
|
1414
1414
|
});
|
|
1415
|
+
function gateDeciding(checkDeposit) {
|
|
1416
|
+
return mock({ checkDeposit: vi.fn(checkDeposit) });
|
|
1417
|
+
}
|
|
1418
|
+
async function findingsFor(externalId) {
|
|
1419
|
+
return db.drizzle.db
|
|
1420
|
+
.select()
|
|
1421
|
+
.from(walletReconciliationFinding)
|
|
1422
|
+
.where(eq(walletReconciliationFinding.externalId, externalId));
|
|
1423
|
+
}
|
|
1424
|
+
it('credits a deposit over the RG limit and files a finding for the excess', async () => {
|
|
1425
|
+
const rgLimits = gateDeciding(async () => ({
|
|
1426
|
+
allowed: false,
|
|
1427
|
+
limitType: 'deposit',
|
|
1428
|
+
period: 'daily',
|
|
1429
|
+
limit: '1',
|
|
1430
|
+
used: '0.5',
|
|
1431
|
+
}));
|
|
1432
|
+
const { svc, events } = makeService({ rgLimits });
|
|
1433
|
+
const w = await seedWallet({ currency: 'BTC', balance: '0' });
|
|
1434
|
+
await seedAddress(w.userId, 'bc1qoverlimit');
|
|
1435
|
+
const externalId = randomUUID();
|
|
1436
|
+
await svc.creditDepositByAddress({
|
|
1437
|
+
kind: 'deposit',
|
|
1438
|
+
address: 'bc1qoverlimit',
|
|
1439
|
+
amount: '2',
|
|
1440
|
+
currency: 'BTC',
|
|
1441
|
+
externalId,
|
|
1442
|
+
txHash: '0xoverlimit',
|
|
1443
|
+
});
|
|
1444
|
+
expect(await balanceOf(w.userId)).toBe(2);
|
|
1445
|
+
expect(emittedTopics(events)).toEqual(['wallet.deposit.completed']);
|
|
1446
|
+
// '0' as the attempted move: the credit is already committed and counted in the
|
|
1447
|
+
// player's window, so the gate is asked whether that window now passes the limit.
|
|
1448
|
+
expect(rgLimits.checkDeposit).toHaveBeenCalledWith(expect.anything(), w.userId, '0', 'BTC');
|
|
1449
|
+
const findings = await findingsFor(externalId);
|
|
1450
|
+
expect(findings).toHaveLength(1);
|
|
1451
|
+
expect(findings[0]).toMatchObject({ kind: 'rg_limit_breach', status: 'open' });
|
|
1452
|
+
expect(findings[0]?.detail).toContain('daily deposit limit of 1');
|
|
1453
|
+
});
|
|
1454
|
+
it('files a second finding for a second over-limit deposit under its own externalId', async () => {
|
|
1455
|
+
const { svc } = makeService({
|
|
1456
|
+
rgLimits: gateDeciding(async () => ({
|
|
1457
|
+
allowed: false,
|
|
1458
|
+
limitType: 'deposit',
|
|
1459
|
+
period: 'daily',
|
|
1460
|
+
limit: '1',
|
|
1461
|
+
used: '2',
|
|
1462
|
+
})),
|
|
1463
|
+
});
|
|
1464
|
+
const w = await seedWallet({ currency: 'BTC', balance: '0' });
|
|
1465
|
+
await seedAddress(w.userId, 'bc1qoverlimittwice');
|
|
1466
|
+
const first = randomUUID();
|
|
1467
|
+
const second = randomUUID();
|
|
1468
|
+
for (const externalId of [first, second]) {
|
|
1469
|
+
await svc.creditDepositByAddress({
|
|
1470
|
+
kind: 'deposit',
|
|
1471
|
+
address: 'bc1qoverlimittwice',
|
|
1472
|
+
amount: '2',
|
|
1473
|
+
currency: 'BTC',
|
|
1474
|
+
externalId,
|
|
1475
|
+
txHash: `0x${externalId}`,
|
|
1476
|
+
});
|
|
1477
|
+
}
|
|
1478
|
+
// The dedup key makes a replayed webhook safe; it must not also swallow a genuinely
|
|
1479
|
+
// new breach under a different vendor id.
|
|
1480
|
+
expect(await findingsFor(first)).toHaveLength(1);
|
|
1481
|
+
expect(await findingsFor(second)).toHaveLength(1);
|
|
1482
|
+
});
|
|
1483
|
+
it('files a finding per provider when two vendors reuse the same externalId', async () => {
|
|
1484
|
+
const { svc } = makeService({
|
|
1485
|
+
rgLimits: gateDeciding(async () => ({
|
|
1486
|
+
allowed: false,
|
|
1487
|
+
limitType: 'deposit',
|
|
1488
|
+
period: 'daily',
|
|
1489
|
+
limit: '1',
|
|
1490
|
+
used: '2',
|
|
1491
|
+
})),
|
|
1492
|
+
});
|
|
1493
|
+
// A player holds one deposit address per currency, so two vendors means two players.
|
|
1494
|
+
const one = await seedWallet({ currency: 'BTC', balance: '0' });
|
|
1495
|
+
const two = await seedWallet({ currency: 'BTC', balance: '0' });
|
|
1496
|
+
await seedAddress(one.userId, 'bc1qvendorone', 'BTC', undefined, 'custody');
|
|
1497
|
+
await seedAddress(two.userId, 'bc1qvendortwo', 'BTC', undefined, 'other-custody');
|
|
1498
|
+
// An externalId is only unique WITHIN a vendor, so a key of (kind, externalId) alone
|
|
1499
|
+
// would treat the second vendor's breach as a duplicate and silently drop it.
|
|
1500
|
+
const shared = randomUUID();
|
|
1501
|
+
for (const address of ['bc1qvendorone', 'bc1qvendortwo']) {
|
|
1502
|
+
await svc.creditDepositByAddress({
|
|
1503
|
+
kind: 'deposit',
|
|
1504
|
+
address,
|
|
1505
|
+
amount: '2',
|
|
1506
|
+
currency: 'BTC',
|
|
1507
|
+
externalId: shared,
|
|
1508
|
+
txHash: `0x${address}`,
|
|
1509
|
+
});
|
|
1510
|
+
}
|
|
1511
|
+
expect(await balanceOf(one.userId)).toBe(2);
|
|
1512
|
+
expect(await balanceOf(two.userId)).toBe(2);
|
|
1513
|
+
const findings = await findingsFor(shared);
|
|
1514
|
+
expect(findings).toHaveLength(2);
|
|
1515
|
+
expect(findings.map((f) => f.providerName).sort()).toEqual(['custody', 'other-custody']);
|
|
1516
|
+
});
|
|
1517
|
+
it('files the finding on a replayed webhook whose first attempt never recorded one', async () => {
|
|
1518
|
+
const { svc } = makeService({
|
|
1519
|
+
rgLimits: gateDeciding(async () => ({
|
|
1520
|
+
allowed: false,
|
|
1521
|
+
limitType: 'deposit',
|
|
1522
|
+
period: 'daily',
|
|
1523
|
+
limit: '1',
|
|
1524
|
+
used: '3',
|
|
1525
|
+
})),
|
|
1526
|
+
});
|
|
1527
|
+
const w = await seedWallet({ currency: 'BTC', balance: '0' });
|
|
1528
|
+
await seedAddress(w.userId, 'bc1qreplayfinding');
|
|
1529
|
+
const externalId = randomUUID();
|
|
1530
|
+
const event = {
|
|
1531
|
+
kind: 'deposit',
|
|
1532
|
+
address: 'bc1qreplayfinding',
|
|
1533
|
+
amount: '3',
|
|
1534
|
+
currency: 'BTC',
|
|
1535
|
+
externalId,
|
|
1536
|
+
txHash: '0xreplayfinding',
|
|
1537
|
+
};
|
|
1538
|
+
await svc.creditDepositByAddress(event);
|
|
1539
|
+
await db.drizzle.db
|
|
1540
|
+
.delete(walletReconciliationFinding)
|
|
1541
|
+
.where(eq(walletReconciliationFinding.externalId, externalId));
|
|
1542
|
+
await svc.creditDepositByAddress(event);
|
|
1543
|
+
expect(await balanceOf(w.userId)).toBe(3);
|
|
1544
|
+
expect(await findingsFor(externalId)).toHaveLength(1);
|
|
1545
|
+
});
|
|
1546
|
+
it('files no finding for a deposit inside the RG limit', async () => {
|
|
1547
|
+
const { svc } = makeService({ rgLimits: gateDeciding(async () => ({ allowed: true })) });
|
|
1548
|
+
const w = await seedWallet({ currency: 'BTC', balance: '0' });
|
|
1549
|
+
await seedAddress(w.userId, 'bc1qinlimit');
|
|
1550
|
+
const externalId = randomUUID();
|
|
1551
|
+
await svc.creditDepositByAddress({
|
|
1552
|
+
kind: 'deposit',
|
|
1553
|
+
address: 'bc1qinlimit',
|
|
1554
|
+
amount: '0.1',
|
|
1555
|
+
currency: 'BTC',
|
|
1556
|
+
externalId,
|
|
1557
|
+
txHash: '0xinlimit',
|
|
1558
|
+
});
|
|
1559
|
+
expect(await balanceOf(w.userId)).toBe(0.1);
|
|
1560
|
+
expect(await findingsFor(externalId)).toHaveLength(0);
|
|
1561
|
+
});
|
|
1562
|
+
it('still credits a deposit already on chain when the RG check itself fails', async () => {
|
|
1563
|
+
const { svc } = makeService({
|
|
1564
|
+
rgLimits: gateDeciding(async () => {
|
|
1565
|
+
throw new Error('rate reader down');
|
|
1566
|
+
}),
|
|
1567
|
+
});
|
|
1568
|
+
const w = await seedWallet({ currency: 'BTC', balance: '0' });
|
|
1569
|
+
await seedAddress(w.userId, 'bc1qgatedown');
|
|
1570
|
+
const externalId = randomUUID();
|
|
1571
|
+
await svc.creditDepositByAddress({
|
|
1572
|
+
kind: 'deposit',
|
|
1573
|
+
address: 'bc1qgatedown',
|
|
1574
|
+
amount: '0.3',
|
|
1575
|
+
currency: 'BTC',
|
|
1576
|
+
externalId,
|
|
1577
|
+
txHash: '0xgatedown',
|
|
1578
|
+
});
|
|
1579
|
+
expect(await balanceOf(w.userId)).toBe(0.3);
|
|
1580
|
+
expect(await findingsFor(externalId)).toHaveLength(0);
|
|
1581
|
+
});
|
|
1415
1582
|
it('is idempotent on a replayed externalId', async () => {
|
|
1416
1583
|
const { svc, events } = makeService();
|
|
1417
1584
|
const w = await seedWallet({ currency: 'BTC', balance: '0' });
|