@openora/core 0.4.1-canary.37 → 0.4.1-canary.39

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.
Files changed (259) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/admin-console/__tests__/backoffice.router.test.js +67 -51
  3. package/dist/admin-console/__tests__/backoffice.router.test.js.map +1 -1
  4. package/dist/admin-console/__tests__/backoffice.service.test.js +1 -13
  5. package/dist/admin-console/__tests__/backoffice.service.test.js.map +1 -1
  6. package/dist/analytics/__tests__/analytics.contract.test.js +12 -0
  7. package/dist/analytics/__tests__/analytics.contract.test.js.map +1 -1
  8. package/dist/analytics/__tests__/financial-analytics.service.test.js +3 -3
  9. package/dist/analytics/__tests__/financial-analytics.service.test.js.map +1 -1
  10. package/dist/analytics/service/financial-analytics.service.d.ts.map +1 -1
  11. package/dist/analytics/service/financial-analytics.service.js +14 -17
  12. package/dist/analytics/service/financial-analytics.service.js.map +1 -1
  13. package/dist/analytics/service/funnel-analytics.service.d.ts.map +1 -1
  14. package/dist/analytics/service/funnel-analytics.service.js +8 -11
  15. package/dist/analytics/service/funnel-analytics.service.js.map +1 -1
  16. package/dist/audit/__tests__/audit.service.test.js +128 -251
  17. package/dist/audit/__tests__/audit.service.test.js.map +1 -1
  18. package/dist/casino/gaming/__tests__/gaming.service.test.js +83 -89
  19. package/dist/casino/gaming/__tests__/gaming.service.test.js.map +1 -1
  20. package/dist/casino/lobby/__tests__/lobby.cache.test.js +42 -33
  21. package/dist/casino/lobby/__tests__/lobby.cache.test.js.map +1 -1
  22. package/dist/cms/__tests__/cms.reads.test.js +59 -80
  23. package/dist/cms/__tests__/cms.reads.test.js.map +1 -1
  24. package/dist/cms/__tests__/cms.router.test.js +62 -20
  25. package/dist/cms/__tests__/cms.router.test.js.map +1 -1
  26. package/dist/cms/__tests__/cms.service.test.js +116 -14
  27. package/dist/cms/__tests__/cms.service.test.js.map +1 -1
  28. package/dist/common/errors/__tests__/errors.mapper.test.d.ts +2 -0
  29. package/dist/common/errors/__tests__/errors.mapper.test.d.ts.map +1 -0
  30. package/dist/common/errors/__tests__/errors.mapper.test.js +59 -0
  31. package/dist/common/errors/__tests__/errors.mapper.test.js.map +1 -0
  32. package/dist/compliance/__tests__/assert.test.d.ts +2 -0
  33. package/dist/compliance/__tests__/assert.test.d.ts.map +1 -0
  34. package/dist/compliance/__tests__/assert.test.js +34 -0
  35. package/dist/compliance/__tests__/assert.test.js.map +1 -0
  36. package/dist/compliance/__tests__/compliance.service.test.js +149 -84
  37. package/dist/compliance/__tests__/compliance.service.test.js.map +1 -1
  38. package/dist/compliance/__tests__/kyc.service.test.js +247 -155
  39. package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
  40. package/dist/compliance/__tests__/limits.contract.test.d.ts +2 -0
  41. package/dist/compliance/__tests__/limits.contract.test.d.ts.map +1 -0
  42. package/dist/compliance/__tests__/limits.contract.test.js +43 -0
  43. package/dist/compliance/__tests__/limits.contract.test.js.map +1 -0
  44. package/dist/compliance/__tests__/rg-monitoring.service.test.js +256 -101
  45. package/dist/compliance/__tests__/rg-monitoring.service.test.js.map +1 -1
  46. package/dist/compliance/__tests__/rg.contract.test.js +1 -20
  47. package/dist/compliance/__tests__/rg.contract.test.js.map +1 -1
  48. package/dist/compliance/__tests__/rg.router.test.js +113 -65
  49. package/dist/compliance/__tests__/rg.router.test.js.map +1 -1
  50. package/dist/compliance/__tests__/rg.service.test.js +277 -235
  51. package/dist/compliance/__tests__/rg.service.test.js.map +1 -1
  52. package/dist/compliance/service/rg-monitoring.service.d.ts.map +1 -1
  53. package/dist/compliance/service/rg-monitoring.service.js +11 -8
  54. package/dist/compliance/service/rg-monitoring.service.js.map +1 -1
  55. package/dist/contracts/__tests__/compose-contract.test.d.ts +2 -0
  56. package/dist/contracts/__tests__/compose-contract.test.d.ts.map +1 -0
  57. package/dist/contracts/__tests__/compose-contract.test.js +27 -0
  58. package/dist/contracts/__tests__/compose-contract.test.js.map +1 -0
  59. package/dist/contracts/adapters/__tests__/token.test.d.ts +2 -0
  60. package/dist/contracts/adapters/__tests__/token.test.d.ts.map +1 -0
  61. package/dist/contracts/adapters/__tests__/token.test.js +14 -0
  62. package/dist/contracts/adapters/__tests__/token.test.js.map +1 -0
  63. package/dist/contracts/schemas/__tests__/events.test.d.ts +2 -0
  64. package/dist/contracts/schemas/__tests__/events.test.d.ts.map +1 -0
  65. package/dist/contracts/schemas/__tests__/events.test.js +51 -0
  66. package/dist/contracts/schemas/__tests__/events.test.js.map +1 -0
  67. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts +2 -0
  68. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts.map +1 -0
  69. package/dist/contracts/schemas/__tests__/igaming-config.test.js +38 -0
  70. package/dist/contracts/schemas/__tests__/igaming-config.test.js.map +1 -0
  71. package/dist/contracts/schemas/reporting.d.ts +7 -2
  72. package/dist/contracts/schemas/reporting.d.ts.map +1 -1
  73. package/dist/contracts/schemas/reporting.js +2 -1
  74. package/dist/contracts/schemas/reporting.js.map +1 -1
  75. package/dist/engagement/chat/__tests__/chat.service.test.js +524 -364
  76. package/dist/engagement/chat/__tests__/chat.service.test.js.map +1 -1
  77. package/dist/engagement/notifications/__tests__/notifications.service.test.js +125 -68
  78. package/dist/engagement/notifications/__tests__/notifications.service.test.js.map +1 -1
  79. package/dist/iam/__tests__/iam.service.test.js +367 -596
  80. package/dist/iam/__tests__/iam.service.test.js.map +1 -1
  81. package/dist/pam/identity/__tests__/admin-user-directory.test.js +144 -68
  82. package/dist/pam/identity/__tests__/admin-user-directory.test.js.map +1 -1
  83. package/dist/pam/identity/__tests__/identity.rate-limit.test.js +33 -22
  84. package/dist/pam/identity/__tests__/identity.rate-limit.test.js.map +1 -1
  85. package/dist/pam/identity/__tests__/identity.service.test.js +217 -298
  86. package/dist/pam/identity/__tests__/identity.service.test.js.map +1 -1
  87. package/dist/pam/identity/__tests__/login-enforcement.service.test.js +97 -32
  88. package/dist/pam/identity/__tests__/login-enforcement.service.test.js.map +1 -1
  89. package/dist/pam/identity/__tests__/phone-login.service.test.js +163 -134
  90. package/dist/pam/identity/__tests__/phone-login.service.test.js.map +1 -1
  91. package/dist/pam/identity/__tests__/rg-guard.test.d.ts +2 -0
  92. package/dist/pam/identity/__tests__/rg-guard.test.d.ts.map +1 -0
  93. package/dist/pam/identity/__tests__/rg-guard.test.js +21 -0
  94. package/dist/pam/identity/__tests__/rg-guard.test.js.map +1 -0
  95. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +73 -26
  96. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +1 -1
  97. package/dist/pam/player-management/__tests__/player.router.test.js +63 -46
  98. package/dist/pam/player-management/__tests__/player.router.test.js.map +1 -1
  99. package/dist/pam/player-management/__tests__/player.service.test.js +207 -111
  100. package/dist/pam/player-management/__tests__/player.service.test.js.map +1 -1
  101. package/dist/pam/profile/__tests__/profile.service.test.js +89 -41
  102. package/dist/pam/profile/__tests__/profile.service.test.js.map +1 -1
  103. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts +2 -0
  104. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts.map +1 -0
  105. package/dist/pam/shared/__tests__/shared-mappers.test.js +55 -0
  106. package/dist/pam/shared/__tests__/shared-mappers.test.js.map +1 -0
  107. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js +72 -30
  108. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js.map +1 -1
  109. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +308 -235
  110. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +1 -1
  111. package/dist/pam/tag/__tests__/tag-rule.service.test.js +136 -140
  112. package/dist/pam/tag/__tests__/tag-rule.service.test.js.map +1 -1
  113. package/dist/pam/tag/__tests__/tag.router.test.js +76 -25
  114. package/dist/pam/tag/__tests__/tag.router.test.js.map +1 -1
  115. package/dist/pam/tag/__tests__/tag.service.test.js +224 -247
  116. package/dist/pam/tag/__tests__/tag.service.test.js.map +1 -1
  117. package/dist/server/auth/__tests__/admin-guard.test.js +107 -117
  118. package/dist/server/auth/__tests__/admin-guard.test.js.map +1 -1
  119. package/dist/server/auth/__tests__/permission-levels.test.d.ts +2 -0
  120. package/dist/server/auth/__tests__/permission-levels.test.d.ts.map +1 -0
  121. package/dist/server/auth/__tests__/permission-levels.test.js +89 -0
  122. package/dist/server/auth/__tests__/permission-levels.test.js.map +1 -0
  123. package/dist/server/auth/__tests__/session-resolver.test.js +45 -13
  124. package/dist/server/auth/__tests__/session-resolver.test.js.map +1 -1
  125. package/dist/server/db/__tests__/query-helpers.test.js +72 -1
  126. package/dist/server/db/__tests__/query-helpers.test.js.map +1 -1
  127. package/dist/server/db/outbox/__tests__/relay.test.js +74 -81
  128. package/dist/server/db/outbox/__tests__/relay.test.js.map +1 -1
  129. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js +204 -154
  130. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js.map +1 -1
  131. package/dist/server/kernel/__tests__/cache.test.js +26 -13
  132. package/dist/server/kernel/__tests__/cache.test.js.map +1 -1
  133. package/dist/server/kernel/__tests__/domain-error.test.d.ts +2 -0
  134. package/dist/server/kernel/__tests__/domain-error.test.d.ts.map +1 -0
  135. package/dist/server/kernel/__tests__/domain-error.test.js +35 -0
  136. package/dist/server/kernel/__tests__/domain-error.test.js.map +1 -0
  137. package/dist/server/kernel/__tests__/error-reporter.test.d.ts +2 -0
  138. package/dist/server/kernel/__tests__/error-reporter.test.d.ts.map +1 -0
  139. package/dist/server/kernel/__tests__/error-reporter.test.js +52 -0
  140. package/dist/server/kernel/__tests__/error-reporter.test.js.map +1 -0
  141. package/dist/server/kernel/__tests__/event-bus.test.js +60 -20
  142. package/dist/server/kernel/__tests__/event-bus.test.js.map +1 -1
  143. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts +2 -0
  144. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts.map +1 -0
  145. package/dist/server/kernel/__tests__/orpc-error-map.test.js +54 -0
  146. package/dist/server/kernel/__tests__/orpc-error-map.test.js.map +1 -0
  147. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts +2 -0
  148. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts.map +1 -0
  149. package/dist/server/kernel/__tests__/platform-config-loader.test.js +112 -0
  150. package/dist/server/kernel/__tests__/platform-config-loader.test.js.map +1 -0
  151. package/dist/server/kernel/__tests__/rate-limiter.test.js +22 -13
  152. package/dist/server/kernel/__tests__/rate-limiter.test.js.map +1 -1
  153. package/dist/server/kernel/__tests__/realtime-transport.test.d.ts.map +1 -0
  154. package/dist/{testing/fakes → server/kernel}/__tests__/realtime-transport.test.js.map +1 -1
  155. package/dist/server/kernel/__tests__/redis-cache.test.js +34 -34
  156. package/dist/server/kernel/__tests__/redis-cache.test.js.map +1 -1
  157. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js +49 -44
  158. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js.map +1 -1
  159. package/dist/server/kernel/__tests__/redis-streams-broker.test.js +141 -262
  160. package/dist/server/kernel/__tests__/redis-streams-broker.test.js.map +1 -1
  161. package/dist/server/kernel/__tests__/request-context.test.d.ts +2 -0
  162. package/dist/server/kernel/__tests__/request-context.test.d.ts.map +1 -0
  163. package/dist/server/kernel/__tests__/request-context.test.js +64 -0
  164. package/dist/server/kernel/__tests__/request-context.test.js.map +1 -0
  165. package/dist/server/kernel/__tests__/router-utils.test.d.ts +2 -0
  166. package/dist/server/kernel/__tests__/router-utils.test.d.ts.map +1 -0
  167. package/dist/server/kernel/__tests__/router-utils.test.js +80 -0
  168. package/dist/server/kernel/__tests__/router-utils.test.js.map +1 -0
  169. package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
  170. package/dist/server/kernel/bullmq-job-queue.js +8 -2
  171. package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
  172. package/dist/server/runtime/__tests__/create-app.test.js +26 -18
  173. package/dist/server/runtime/__tests__/create-app.test.js.map +1 -1
  174. package/dist/testing/index.d.ts +2 -6
  175. package/dist/testing/index.d.ts.map +1 -1
  176. package/dist/testing/index.js +2 -10
  177. package/dist/testing/index.js.map +1 -1
  178. package/dist/testing/mock.d.ts +28 -16
  179. package/dist/testing/mock.d.ts.map +1 -1
  180. package/dist/testing/mock.js +58 -37
  181. package/dist/testing/mock.js.map +1 -1
  182. package/dist/testing/real-infra.d.ts +47 -0
  183. package/dist/testing/real-infra.d.ts.map +1 -0
  184. package/dist/testing/real-infra.js +122 -0
  185. package/dist/testing/real-infra.js.map +1 -0
  186. package/dist/wallet/__tests__/admin-reporting.test.js +201 -90
  187. package/dist/wallet/__tests__/admin-reporting.test.js.map +1 -1
  188. package/dist/wallet/__tests__/rail-for.test.d.ts +2 -0
  189. package/dist/wallet/__tests__/rail-for.test.d.ts.map +1 -0
  190. package/dist/wallet/__tests__/rail-for.test.js +22 -0
  191. package/dist/wallet/__tests__/rail-for.test.js.map +1 -0
  192. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +82 -63
  193. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +1 -1
  194. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +414 -437
  195. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
  196. package/dist/wallet/__tests__/wallet-commands.service.test.js +116 -155
  197. package/dist/wallet/__tests__/wallet-commands.service.test.js.map +1 -1
  198. package/dist/wallet/__tests__/wallet-kyc-gate.test.js +63 -42
  199. package/dist/wallet/__tests__/wallet-kyc-gate.test.js.map +1 -1
  200. package/dist/wallet/__tests__/wallet-webhook.router.test.js +129 -51
  201. package/dist/wallet/__tests__/wallet-webhook.router.test.js.map +1 -1
  202. package/dist/wallet/__tests__/wallet.rate-limit.test.js +74 -21
  203. package/dist/wallet/__tests__/wallet.rate-limit.test.js.map +1 -1
  204. package/dist/wallet/__tests__/wallet.router.test.js +56 -36
  205. package/dist/wallet/__tests__/wallet.router.test.js.map +1 -1
  206. package/dist/wallet/__tests__/wallet.service.test.js +623 -887
  207. package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
  208. package/package.json +1 -2
  209. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts +0 -2
  210. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts.map +0 -1
  211. package/dist/casino/lobby/__tests__/lobby.service.test.js +0 -11
  212. package/dist/casino/lobby/__tests__/lobby.service.test.js.map +0 -1
  213. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts +0 -2
  214. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts.map +0 -1
  215. package/dist/contracts/schemas/__tests__/identity-schemas.test.js +0 -43
  216. package/dist/contracts/schemas/__tests__/identity-schemas.test.js.map +0 -1
  217. package/dist/testing/fakes/__tests__/cache.test.d.ts +0 -2
  218. package/dist/testing/fakes/__tests__/cache.test.d.ts.map +0 -1
  219. package/dist/testing/fakes/__tests__/cache.test.js +0 -89
  220. package/dist/testing/fakes/__tests__/cache.test.js.map +0 -1
  221. package/dist/testing/fakes/__tests__/job-queue.test.d.ts +0 -2
  222. package/dist/testing/fakes/__tests__/job-queue.test.d.ts.map +0 -1
  223. package/dist/testing/fakes/__tests__/job-queue.test.js +0 -135
  224. package/dist/testing/fakes/__tests__/job-queue.test.js.map +0 -1
  225. package/dist/testing/fakes/__tests__/rate-limiter.test.d.ts +0 -2
  226. package/dist/testing/fakes/__tests__/rate-limiter.test.d.ts.map +0 -1
  227. package/dist/testing/fakes/__tests__/rate-limiter.test.js +0 -83
  228. package/dist/testing/fakes/__tests__/rate-limiter.test.js.map +0 -1
  229. package/dist/testing/fakes/__tests__/realtime-authorizer.test.d.ts +0 -2
  230. package/dist/testing/fakes/__tests__/realtime-authorizer.test.d.ts.map +0 -1
  231. package/dist/testing/fakes/__tests__/realtime-authorizer.test.js +0 -19
  232. package/dist/testing/fakes/__tests__/realtime-authorizer.test.js.map +0 -1
  233. package/dist/testing/fakes/__tests__/realtime-transport.test.d.ts.map +0 -1
  234. package/dist/testing/fakes/cache.d.ts +0 -14
  235. package/dist/testing/fakes/cache.d.ts.map +0 -1
  236. package/dist/testing/fakes/cache.js +0 -56
  237. package/dist/testing/fakes/cache.js.map +0 -1
  238. package/dist/testing/fakes/event-bus.d.ts +0 -17
  239. package/dist/testing/fakes/event-bus.d.ts.map +0 -1
  240. package/dist/testing/fakes/event-bus.js +0 -30
  241. package/dist/testing/fakes/event-bus.js.map +0 -1
  242. package/dist/testing/fakes/job-queue.d.ts +0 -40
  243. package/dist/testing/fakes/job-queue.d.ts.map +0 -1
  244. package/dist/testing/fakes/job-queue.js +0 -200
  245. package/dist/testing/fakes/job-queue.js.map +0 -1
  246. package/dist/testing/fakes/rate-limiter.d.ts +0 -11
  247. package/dist/testing/fakes/rate-limiter.d.ts.map +0 -1
  248. package/dist/testing/fakes/rate-limiter.js +0 -39
  249. package/dist/testing/fakes/rate-limiter.js.map +0 -1
  250. package/dist/testing/fakes/realtime-authorizer.d.ts +0 -10
  251. package/dist/testing/fakes/realtime-authorizer.d.ts.map +0 -1
  252. package/dist/testing/fakes/realtime-authorizer.js +0 -10
  253. package/dist/testing/fakes/realtime-authorizer.js.map +0 -1
  254. package/dist/testing/fakes/realtime-transport.d.ts +0 -2
  255. package/dist/testing/fakes/realtime-transport.d.ts.map +0 -1
  256. package/dist/testing/fakes/realtime-transport.js +0 -2
  257. package/dist/testing/fakes/realtime-transport.js.map +0 -1
  258. /package/dist/{testing/fakes → server/kernel}/__tests__/realtime-transport.test.d.ts +0 -0
  259. /package/dist/{testing/fakes → server/kernel}/__tests__/realtime-transport.test.js +0 -0
@@ -1,110 +1,265 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { findOneOrThrow } from '@openora/core/server';
3
- import { mockDb } from '../../testing/mock.js';
1
+ import { describe, it, expect, vi, beforeAll, afterAll, beforeEach } from 'vitest';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { eq, sql } from 'drizzle-orm';
4
+ import { createTestDb } from '@openora/core/testing';
5
+ import { wallet, walletTransaction } from '@openora/core/wallet/schema';
6
+ import { game, gameRound } from '@openora/core/casino/schema/gaming';
7
+ import { user, session } from '@openora/core/pam/schema/identity';
8
+ import { migrate as migrateWallet } from '@openora/core/wallet/migrate';
9
+ import { migrate as migrateGaming } from '@openora/core/casino/migrate/gaming';
10
+ import { migrate as migrateIdentity } from '@openora/core/pam/migrate/identity';
11
+ import { mock } from '../../testing/mock.js';
12
+ import { migrate } from '../migrate.js';
13
+ import { userLimit, rgFlag, rgExclusion } from '../schema/index.js';
4
14
  import { RgMonitoringService } from '../service/rg-monitoring.service.js';
5
- import { userLimit, rgFlag } from '../schema/index.js';
6
- import { walletTransaction } from '@openora/core/wallet/schema';
7
- // Routing Drizzle stub: awaited selects resolve by the table passed to `.from()`;
8
- // inserts/updates are captured for assertions.
9
- function routingDb(cfg) {
10
- const selectMap = new Map(cfg.selects);
11
- function selectChain() {
12
- let table;
13
- const c = {
14
- from: (t) => {
15
- table = t;
16
- return c;
17
- },
18
- innerJoin: () => c,
19
- where: () => c,
20
- orderBy: () => c,
21
- limit: () => c,
22
- offset: () => c,
23
- then: (resolve) => resolve(selectMap.get(table) ?? []),
24
- };
25
- return c;
26
- }
27
- const db = {
28
- select: () => selectChain(),
29
- insert: (table) => {
30
- const c = {
31
- values: (v) => {
32
- cfg.onInsert?.(table, v);
33
- return c;
34
- },
35
- onConflictDoUpdate: () => c,
36
- returning: () => Promise.resolve([]),
37
- then: (resolve) => resolve(undefined),
38
- };
39
- return c;
40
- },
41
- update: (table) => {
42
- const c = {
43
- set: (s) => {
44
- cfg.onUpdate?.(table, s);
45
- return c;
46
- },
47
- where: () => c,
48
- returning: () => Promise.resolve([]),
49
- then: (resolve) => resolve(undefined),
50
- };
51
- return c;
52
- },
53
- };
54
- return mockDb(db);
15
+ let db;
16
+ const makeService = (directory) => new RgMonitoringService({ drizzle: db.drizzle, ...(directory ? { directory } : {}) });
17
+ async function seedDepositLimit(userId, amount, period = 'daily') {
18
+ await db.drizzle.db
19
+ .insert(userLimit)
20
+ .values({ userId, type: 'deposit', amount, minutes: null, period });
21
+ }
22
+ async function seedDeposit(userId, amount, createdAt = new Date()) {
23
+ const [walletRow] = await db.drizzle.db
24
+ .insert(wallet)
25
+ .values({ userId, balance: '0', currency: 'USD' })
26
+ .onConflictDoNothing()
27
+ .returning();
28
+ const [existing] = await db.drizzle.db.select().from(wallet).where(eq(wallet.userId, userId));
29
+ await db.drizzle.db.insert(walletTransaction).values({
30
+ walletId: (walletRow ?? existing).id,
31
+ type: 'deposit',
32
+ amount,
33
+ currency: 'USD',
34
+ status: 'completed',
35
+ createdAt,
36
+ });
55
37
  }
56
- const USER = 'user-1';
57
- const depositLimit = {
58
- id: 'l1',
59
- userId: USER,
60
- type: 'deposit',
61
- amount: '100',
62
- minutes: null,
63
- period: 'daily',
64
- };
65
- describe('RgMonitoringService.evaluateUser (80% boundary)', () => {
38
+ async function seedBet(userId, betAmount) {
39
+ const [g] = await db.drizzle.db
40
+ .insert(game)
41
+ .values({ name: 'Slot', provider: 'mock', category: 'slots' })
42
+ .returning();
43
+ await db.drizzle.db
44
+ .insert(gameRound)
45
+ .values({ gameId: g.id, userId, betAmount, currency: 'USD' });
46
+ }
47
+ async function seedSession(userId, startedMinutesAgo) {
48
+ const [u] = await db.drizzle.db
49
+ .insert(user)
50
+ .values({ id: userId, name: 'P', email: `${userId}@test.dev`, emailVerified: true })
51
+ .returning();
52
+ await db.drizzle.db.insert(session).values({
53
+ userId: u.id,
54
+ token: randomUUID(),
55
+ expiresAt: new Date(Date.now() + 3600_000),
56
+ createdAt: new Date(Date.now() - startedMinutesAgo * 60_000),
57
+ });
58
+ }
59
+ const SESSION_DETAIL = { sessionMinutes: 55, limitMinutes: 60, pct: 92 };
60
+ async function flagsOf(userId) {
61
+ return db.drizzle.db.select().from(rgFlag).where(eq(rgFlag.userId, userId));
62
+ }
63
+ beforeAll(async () => {
64
+ db = await createTestDb([migrate, migrateWallet, migrateGaming, migrateIdentity]);
65
+ });
66
+ afterAll(async () => {
67
+ await db.drop();
68
+ });
69
+ beforeEach(async () => {
70
+ await db.drizzle.db.execute(sql `TRUNCATE ${rgFlag}, ${rgExclusion}, ${userLimit}, ${walletTransaction}, ${wallet}, ${gameRound}, ${game}, ${session}, ${user} RESTART IDENTITY CASCADE`);
71
+ });
72
+ describe('RgMonitoringService.evaluateUser - deposit limits (real PG)', () => {
66
73
  it('raises a limit_threshold flag at exactly 80% of the limit', async () => {
67
- const inserts = [];
68
- const db = routingDb({
69
- selects: [
70
- [userLimit, [depositLimit]],
71
- [walletTransaction, [{ total: '80' }]],
72
- [rgFlag, []],
73
- ],
74
- onInsert: (table, values) => inserts.push({ table, values }),
74
+ const userId = randomUUID();
75
+ await seedDepositLimit(userId, '100');
76
+ await seedDeposit(userId, '80');
77
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
78
+ const flags = await flagsOf(userId);
79
+ expect(flags).toHaveLength(1);
80
+ expect(flags[0]).toMatchObject({
81
+ flagType: 'limit_threshold',
82
+ limitType: 'deposit',
83
+ status: 'active',
75
84
  });
76
- await new RgMonitoringService({ drizzle: db }).evaluateUser(USER, 'wallet.deposit.completed');
77
- expect(inserts).toHaveLength(1);
78
- const insert = findOneOrThrow(inserts, new Error('expected an insert'));
79
- expect(insert.table).toBe(rgFlag);
80
- expect(insert.values).toMatchObject({ flagType: 'limit_threshold', limitType: 'deposit' });
81
- });
82
- it('clears the flag when spend drops below 80%', async () => {
83
- const updates = [];
84
- const db = routingDb({
85
- selects: [
86
- [userLimit, [depositLimit]],
87
- [walletTransaction, [{ total: '79' }]],
88
- [rgFlag, []],
89
- ],
90
- onUpdate: (table, set) => updates.push({ table, set }),
85
+ expect(flags[0]?.detail).toMatchObject({ pct: 80, period: 'daily' });
86
+ });
87
+ it('stays quiet just below the threshold', async () => {
88
+ const userId = randomUUID();
89
+ await seedDepositLimit(userId, '100');
90
+ await seedDeposit(userId, '79');
91
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
92
+ expect(await flagsOf(userId)).toHaveLength(0);
93
+ });
94
+ it('clears an existing flag once spend drops back below the threshold', async () => {
95
+ const userId = randomUUID();
96
+ await seedDepositLimit(userId, '100');
97
+ await seedDeposit(userId, '80');
98
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
99
+ await db.drizzle.db.delete(walletTransaction);
100
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
101
+ const [flag] = await flagsOf(userId);
102
+ expect(flag).toMatchObject({ status: 'cleared' });
103
+ expect(flag?.clearedAt).toBeInstanceOf(Date);
104
+ });
105
+ it('updates the existing flag detail instead of raising a duplicate', async () => {
106
+ const userId = randomUUID();
107
+ await seedDepositLimit(userId, '100');
108
+ await seedDeposit(userId, '80');
109
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
110
+ await seedDeposit(userId, '20');
111
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
112
+ const flags = await flagsOf(userId);
113
+ expect(flags).toHaveLength(1);
114
+ expect(flags[0]?.detail).toMatchObject({ pct: 100 });
115
+ });
116
+ it('ignores deposits made outside the limit period window', async () => {
117
+ const userId = randomUUID();
118
+ await seedDepositLimit(userId, '100');
119
+ await seedDeposit(userId, '90', new Date(Date.now() - 48 * 3600_000));
120
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
121
+ expect(await flagsOf(userId)).toHaveLength(0);
122
+ });
123
+ it('skips the session limit on a deposit trigger', async () => {
124
+ const userId = randomUUID();
125
+ await db.drizzle.db
126
+ .insert(userLimit)
127
+ .values({ userId, type: 'session', amount: null, minutes: 60, period: 'session' });
128
+ await makeService().evaluateUser(userId, 'wallet.deposit.completed');
129
+ expect(await flagsOf(userId)).toHaveLength(0);
130
+ });
131
+ });
132
+ describe('RgMonitoringService.evaluateUser - wager limits (real PG)', () => {
133
+ it('sums game rounds for a wager limit', async () => {
134
+ const userId = randomUUID();
135
+ await db.drizzle.db
136
+ .insert(userLimit)
137
+ .values({ userId, type: 'wager', amount: '100', minutes: null, period: 'daily' });
138
+ await seedBet(userId, '90');
139
+ await makeService().evaluateUser(userId, 'gaming.round.ended');
140
+ const [flag] = await flagsOf(userId);
141
+ expect(flag).toMatchObject({ flagType: 'limit_threshold', limitType: 'wager' });
142
+ });
143
+ });
144
+ describe('RgMonitoringService.evaluateUser - blocked login (real PG)', () => {
145
+ it('labels the flag with self_exclusion when one is active', async () => {
146
+ const userId = randomUUID();
147
+ await db.drizzle.db.insert(rgExclusion).values({
148
+ userId,
149
+ kind: 'self_exclusion',
150
+ status: 'active',
151
+ reason: 'stop',
152
+ isPermanent: true,
153
+ createdBy: randomUUID(),
154
+ });
155
+ await makeService().evaluateUser(userId, 'rg.exclusion.login_blocked');
156
+ const [flag] = await flagsOf(userId);
157
+ expect(flag).toMatchObject({ flagType: 'self_excluded_login', limitType: null });
158
+ expect(flag?.detail).toMatchObject({ kind: 'self_exclusion' });
159
+ });
160
+ it('labels the flag with cooling_off when that is the only active exclusion', async () => {
161
+ const userId = randomUUID();
162
+ await db.drizzle.db.insert(rgExclusion).values({
163
+ userId,
164
+ kind: 'cooling_off',
165
+ status: 'active',
166
+ reason: 'break',
167
+ expiresAt: new Date(Date.now() + 3600_000),
168
+ createdBy: randomUUID(),
169
+ });
170
+ await makeService().evaluateUser(userId, 'rg.exclusion.login_blocked');
171
+ const [flag] = await flagsOf(userId);
172
+ expect(flag?.detail).toMatchObject({ kind: 'cooling_off' });
173
+ });
174
+ it('records a null kind when nothing is active any more', async () => {
175
+ const userId = randomUUID();
176
+ await makeService().evaluateUser(userId, 'rg.exclusion.login_blocked');
177
+ const [flag] = await flagsOf(userId);
178
+ expect(flag?.detail).toMatchObject({ kind: null });
179
+ });
180
+ });
181
+ describe('RgMonitoringService.sweep (real PG)', () => {
182
+ it('raises a session_time flag once the active session reaches the limit band', async () => {
183
+ const userId = randomUUID();
184
+ await db.drizzle.db
185
+ .insert(userLimit)
186
+ .values({ userId, type: 'session', amount: null, minutes: 60, period: 'session' });
187
+ await seedSession(userId, 50);
188
+ await makeService().sweep();
189
+ const [flag] = await flagsOf(userId);
190
+ expect(flag).toMatchObject({ flagType: 'session_time', status: 'active' });
191
+ });
192
+ it('leaves a short session unflagged', async () => {
193
+ const userId = randomUUID();
194
+ await db.drizzle.db
195
+ .insert(userLimit)
196
+ .values({ userId, type: 'session', amount: null, minutes: 60, period: 'session' });
197
+ await seedSession(userId, 10);
198
+ await makeService().sweep();
199
+ expect(await flagsOf(userId)).toHaveLength(0);
200
+ });
201
+ it('clears the flag once the session is gone', async () => {
202
+ const userId = randomUUID();
203
+ await db.drizzle.db
204
+ .insert(userLimit)
205
+ .values({ userId, type: 'session', amount: null, minutes: 60, period: 'session' });
206
+ await seedSession(userId, 50);
207
+ await makeService().sweep();
208
+ await db.drizzle.db.delete(session).where(eq(session.userId, userId));
209
+ await makeService().sweep();
210
+ const [flag] = await flagsOf(userId);
211
+ expect(flag).toMatchObject({ status: 'cleared' });
212
+ });
213
+ });
214
+ describe('RgMonitoringService.listFlags (real PG)', () => {
215
+ it('filters by flag type and reports the unpaginated total', async () => {
216
+ const userId = randomUUID();
217
+ await db.drizzle.db.insert(rgFlag).values([
218
+ {
219
+ userId,
220
+ flagType: 'limit_threshold',
221
+ limitType: 'deposit',
222
+ detail: SESSION_DETAIL,
223
+ },
224
+ { userId, flagType: 'session_time', limitType: null, detail: SESSION_DETAIL },
225
+ ]);
226
+ const result = await makeService().listFlags({
227
+ page: 1,
228
+ limit: 10,
229
+ flagType: 'limit_threshold',
91
230
  });
92
- await new RgMonitoringService({ drizzle: db }).evaluateUser(USER, 'wallet.deposit.completed');
93
- expect(updates).toHaveLength(1);
94
- const update = findOneOrThrow(updates, new Error('expected an update'));
95
- expect(update.table).toBe(rgFlag);
96
- expect(update.set).toMatchObject({ status: 'cleared' });
97
- });
98
- it('raises a self_excluded_login flag on a blocked-login trigger', async () => {
99
- const inserts = [];
100
- const db = routingDb({
101
- selects: [[rgFlag, []]],
102
- onInsert: (table, values) => inserts.push({ table, values }),
231
+ expect(result.total).toBe(1);
232
+ expect(result.items[0]).toMatchObject({ flagType: 'limit_threshold', limitType: 'deposit' });
233
+ });
234
+ it('enriches rows with the player directory when one is bound', async () => {
235
+ const userId = randomUUID();
236
+ await db.drizzle.db
237
+ .insert(rgFlag)
238
+ .values({ userId, flagType: 'session_time', limitType: null, detail: SESSION_DETAIL });
239
+ const directory = mock({
240
+ lookupPlayers: vi.fn(async (ids) => ids.map((id) => mock({ userId: id, username: 'player1', email: 'p@test.dev' }))),
103
241
  });
104
- await new RgMonitoringService({ drizzle: db }).evaluateUser(USER, 'rg.exclusion.login_blocked');
105
- expect(inserts).toHaveLength(1);
106
- const insert = findOneOrThrow(inserts, new Error('expected an insert'));
107
- expect(insert.values).toMatchObject({ flagType: 'self_excluded_login', limitType: null });
242
+ const result = await makeService(directory).listFlags({ page: 1, limit: 10 });
243
+ expect(result.items[0]).toMatchObject({ username: 'player1', email: 'p@test.dev' });
244
+ });
245
+ it('leaves the identity fields null when no directory is bound', async () => {
246
+ const userId = randomUUID();
247
+ await db.drizzle.db
248
+ .insert(rgFlag)
249
+ .values({ userId, flagType: 'session_time', limitType: null, detail: SESSION_DETAIL });
250
+ const result = await makeService().listFlags({ page: 1, limit: 10 });
251
+ expect(result.items[0]).toMatchObject({ username: null, email: null });
252
+ });
253
+ it('pages the rows while the total covers the whole filtered set', async () => {
254
+ const userId = randomUUID();
255
+ await db.drizzle.db.insert(rgFlag).values([
256
+ { userId, flagType: 'session_time', limitType: null, detail: SESSION_DETAIL },
257
+ { userId, flagType: 'self_excluded_login', limitType: null, detail: SESSION_DETAIL },
258
+ { userId, flagType: 'limit_threshold', limitType: 'loss', detail: SESSION_DETAIL },
259
+ ]);
260
+ const result = await makeService().listFlags({ page: 2, limit: 2 });
261
+ expect(result.total).toBe(3);
262
+ expect(result.items).toHaveLength(1);
108
263
  });
109
264
  });
110
265
  //# sourceMappingURL=rg-monitoring.service.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rg-monitoring.service.test.js","sourceRoot":"","sources":["../../../src/compliance/__tests__/rg-monitoring.service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rg-monitoring.service.test.js","sourceRoot":"","sources":["../../../src/compliance/__tests__/rg-monitoring.service.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import { ActivateCoolingOffInputSchema, ActivateSelfExclusionInputSchema, LiftCoolingOffInputSchema, LiftSelfExclusionInputSchema, RgFlagListItemSchema, SetPlayerLimitInputSchema, } from '../contract/rg.js';
2
+ import { ActivateCoolingOffInputSchema, ActivateSelfExclusionInputSchema, LiftCoolingOffInputSchema, LiftSelfExclusionInputSchema, RgFlagListItemSchema, } from '../contract/rg.js';
3
3
  const USER = '11111111-1111-4111-8111-111111111111';
4
4
  describe('RgFlagListItemSchema.detail resilience', () => {
5
5
  const base = {
@@ -23,25 +23,6 @@ describe('RgFlagListItemSchema.detail resilience', () => {
23
23
  }).success).toBe(true);
24
24
  });
25
25
  });
26
- describe('SetPlayerLimitInputSchema session invariant', () => {
27
- const money = { userId: USER, amount: '100', minutes: null };
28
- const session = { userId: USER, amount: null, minutes: 100 };
29
- it('allows a session-time limit only with the session period', () => {
30
- expect(SetPlayerLimitInputSchema.safeParse({ ...session, type: 'session', period: 'session' })
31
- .success).toBe(true);
32
- expect(SetPlayerLimitInputSchema.safeParse({ ...money, type: 'deposit', period: 'daily' }).success).toBe(true);
33
- });
34
- it('rejects a mismatched type/period', () => {
35
- expect(SetPlayerLimitInputSchema.safeParse({ ...money, type: 'deposit', period: 'session' }).success).toBe(false);
36
- expect(SetPlayerLimitInputSchema.safeParse({ ...session, type: 'session', period: 'daily' }).success).toBe(false);
37
- });
38
- it('rejects a money-type limit carrying minutes instead of amount', () => {
39
- expect(SetPlayerLimitInputSchema.safeParse({ ...session, type: 'deposit', period: 'daily' }).success).toBe(false);
40
- });
41
- it('rejects a session limit carrying amount instead of minutes', () => {
42
- expect(SetPlayerLimitInputSchema.safeParse({ ...money, type: 'session', period: 'session' }).success).toBe(false);
43
- });
44
- });
45
26
  describe('ActivateCoolingOffInputSchema', () => {
46
27
  it('accepts the 24h..1008h window with a reason', () => {
47
28
  expect(ActivateCoolingOffInputSchema.safeParse({ userId: USER, durationHours: 24, reason: 'x' })
@@ -1 +1 @@
1
- {"version":3,"file":"rg.contract.test.js","sourceRoot":"","sources":["../../../src/compliance/__tests__/rg.contract.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rg.contract.test.js","sourceRoot":"","sources":["../../../src/compliance/__tests__/rg.contract.test.ts"],"names":[],"mappings":"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"}