@omnitronix/lucky-sharky-game-engine 1.1.0 → 1.2.0

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 (77) hide show
  1. package/README.md +10 -0
  2. package/dist/__tests__/base-game.test.d.ts +2 -0
  3. package/dist/__tests__/base-game.test.d.ts.map +1 -0
  4. package/dist/__tests__/base-game.test.js +262 -0
  5. package/dist/__tests__/base-game.test.js.map +1 -0
  6. package/dist/__tests__/bonus-handlers.test.d.ts +2 -0
  7. package/dist/__tests__/bonus-handlers.test.d.ts.map +1 -0
  8. package/dist/__tests__/bonus-handlers.test.js +243 -0
  9. package/dist/__tests__/bonus-handlers.test.js.map +1 -0
  10. package/dist/__tests__/error-paths.test.d.ts +2 -0
  11. package/dist/__tests__/error-paths.test.d.ts.map +1 -0
  12. package/dist/__tests__/error-paths.test.js +328 -0
  13. package/dist/__tests__/error-paths.test.js.map +1 -0
  14. package/dist/__tests__/free-spins-handler.test.d.ts +2 -0
  15. package/dist/__tests__/free-spins-handler.test.d.ts.map +1 -0
  16. package/dist/__tests__/free-spins-handler.test.js +410 -0
  17. package/dist/__tests__/free-spins-handler.test.js.map +1 -0
  18. package/dist/__tests__/helpers/test-engine-factory.d.ts +98 -0
  19. package/dist/__tests__/helpers/test-engine-factory.d.ts.map +1 -0
  20. package/dist/__tests__/helpers/test-engine-factory.js +236 -0
  21. package/dist/__tests__/helpers/test-engine-factory.js.map +1 -0
  22. package/dist/__tests__/hold-win-handler.test.d.ts +2 -0
  23. package/dist/__tests__/hold-win-handler.test.d.ts.map +1 -0
  24. package/dist/__tests__/hold-win-handler.test.js +481 -0
  25. package/dist/__tests__/hold-win-handler.test.js.map +1 -0
  26. package/dist/__tests__/rng-gli19-compliance.test.d.ts +0 -4
  27. package/dist/__tests__/rng-gli19-compliance.test.d.ts.map +1 -1
  28. package/dist/__tests__/rng-gli19-compliance.test.js +232 -198
  29. package/dist/__tests__/rng-gli19-compliance.test.js.map +1 -1
  30. package/dist/__tests__/rng-security.test.d.ts +2 -0
  31. package/dist/__tests__/rng-security.test.d.ts.map +1 -0
  32. package/dist/__tests__/rng-security.test.js +379 -0
  33. package/dist/__tests__/rng-security.test.js.map +1 -0
  34. package/dist/__tests__/rtp-diagnostic.test.d.ts +6 -0
  35. package/dist/__tests__/rtp-diagnostic.test.d.ts.map +1 -0
  36. package/dist/__tests__/rtp-diagnostic.test.js +216 -0
  37. package/dist/__tests__/rtp-diagnostic.test.js.map +1 -0
  38. package/dist/__tests__/rtp-simulation.test.d.ts +0 -4
  39. package/dist/__tests__/rtp-simulation.test.d.ts.map +1 -1
  40. package/dist/__tests__/rtp-simulation.test.js +228 -153
  41. package/dist/__tests__/rtp-simulation.test.js.map +1 -1
  42. package/dist/__tests__/spin-generator.test.d.ts +2 -0
  43. package/dist/__tests__/spin-generator.test.d.ts.map +1 -0
  44. package/dist/__tests__/spin-generator.test.js +375 -0
  45. package/dist/__tests__/spin-generator.test.js.map +1 -0
  46. package/dist/__tests__/state-transitions.test.d.ts +2 -0
  47. package/dist/__tests__/state-transitions.test.d.ts.map +1 -0
  48. package/dist/__tests__/state-transitions.test.js +249 -0
  49. package/dist/__tests__/state-transitions.test.js.map +1 -0
  50. package/dist/__tests__/symbol-distribution.test.d.ts +2 -0
  51. package/dist/__tests__/symbol-distribution.test.d.ts.map +1 -0
  52. package/dist/__tests__/symbol-distribution.test.js +210 -0
  53. package/dist/__tests__/symbol-distribution.test.js.map +1 -0
  54. package/dist/__tests__/win-calculator.test.d.ts +2 -0
  55. package/dist/__tests__/win-calculator.test.d.ts.map +1 -0
  56. package/dist/__tests__/win-calculator.test.js +516 -0
  57. package/dist/__tests__/win-calculator.test.js.map +1 -0
  58. package/dist/config/game-logic-config/game-logic-config.d.ts.map +1 -1
  59. package/dist/config/game-logic-config/game-logic-config.js +27 -17
  60. package/dist/config/game-logic-config/game-logic-config.js.map +1 -1
  61. package/dist/logic/handlers/free-spins.handler.d.ts +2 -0
  62. package/dist/logic/handlers/free-spins.handler.d.ts.map +1 -1
  63. package/dist/logic/handlers/free-spins.handler.js +74 -6
  64. package/dist/logic/handlers/free-spins.handler.js.map +1 -1
  65. package/package.json +4 -2
  66. package/dist/__tests__/rng-seed-security.test.d.ts +0 -6
  67. package/dist/__tests__/rng-seed-security.test.d.ts.map +0 -1
  68. package/dist/__tests__/rng-seed-security.test.js +0 -263
  69. package/dist/__tests__/rng-seed-security.test.js.map +0 -1
  70. package/dist/__tests__/rng-seed-type.test.d.ts +0 -16
  71. package/dist/__tests__/rng-seed-type.test.d.ts.map +0 -1
  72. package/dist/__tests__/rng-seed-type.test.js +0 -288
  73. package/dist/__tests__/rng-seed-type.test.js.map +0 -1
  74. package/dist/__tests__/rng-stress-boundary.test.d.ts +0 -5
  75. package/dist/__tests__/rng-stress-boundary.test.d.ts.map +0 -1
  76. package/dist/__tests__/rng-stress-boundary.test.js +0 -395
  77. package/dist/__tests__/rng-stress-boundary.test.js.map +0 -1
@@ -1,221 +1,255 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
  /**
3
- * GLI-19 Compliance Tests - Lucky Sharky
4
- * Audit Trail & Tamper Detection Verification
4
+ * GLI-19 Compliance Tests Lucky Sharky
5
+ *
6
+ * Validates RNG audit trail requirements per GLI-19 standard:
7
+ * 3.4: All RNG outcomes must have tamper-evident audit trails
8
+ * 3.5: Deterministic replay from recorded seeds
9
+ * 3.6: Hash chain integrity for audit verification
5
10
  */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- const lucky_sharky_v1_game_engine_1 = require("../lucky-sharky-v1.game-engine");
41
- const crypto = __importStar(require("crypto"));
42
- describe('GLI-19 Compliance - Audit Trail & Tamper Detection', () => {
43
- let engine;
11
+ const test_engine_factory_1 = require("./helpers/test-engine-factory");
12
+ describe('GLI-19 Compliance — Lucky Sharky', () => {
44
13
  beforeEach(() => {
45
- engine = new lucky_sharky_v1_game_engine_1.LuckySharkyV1GameEngine();
14
+ (0, test_engine_factory_1.resetCommandIdCounter)();
46
15
  });
47
- async function initSession() {
48
- return engine.processCommand(null, null, {
49
- id: 'init-gli19',
50
- type: 'INIT_SESSION_STATE',
51
- payload: { betAmountThresholds: [1, 2, 5, 10], defaultBetAmount: 1 },
52
- });
53
- }
54
- async function executeSpin(publicState, privateState) {
55
- return engine.processCommand(publicState, privateState, {
56
- id: `spin-${Math.random().toString(36).slice(2)}`,
57
- type: 'SPIN',
58
- payload: { sessionId: 'test', betAmount: 1, gameCode: 'lucky-sharky', gameVersion: '1.0.0', lines: 10, creditsPerLine: 1 },
59
- });
60
- }
61
- function canonicalizeForHash(outcome) {
62
- const entries = Object.entries(outcome)
63
- .map(([actionId, record]) => ({
64
- actionId, result: Number(record.result), seed: String(record.seed),
65
- min: Number(record.min), max: Number(record.max),
66
- }))
67
- .sort((a, b) => a.actionId.localeCompare(b.actionId));
68
- return JSON.stringify(entries);
69
- }
70
- function generateHash(data) {
71
- return crypto.createHash('sha256').update(data).digest('hex');
72
- }
73
- // ============================================================
74
- // AUDIT TRAIL COMPLETENESS (GLI-19 3.4)
75
- // ============================================================
76
- describe('Section 3.4: Audit Trail Completeness', () => {
77
- it('should include all required fields in RNG records', async () => {
78
- const init = await initSession();
79
- const spin = await executeSpin(init.publicState, init.privateState);
80
- expect(spin.rngOutcome).toBeDefined();
81
- for (const [actionId, record] of Object.entries(spin.rngOutcome)) {
82
- expect(record).toHaveProperty('seed');
83
- expect(record).toHaveProperty('result');
84
- expect(record).toHaveProperty('min');
85
- expect(record).toHaveProperty('max');
86
- expect(typeof actionId).toBe('string');
87
- expect(actionId.length).toBeGreaterThan(0);
16
+ describe('Audit Trail Completeness', () => {
17
+ it('should include rngOutcome in every spin result', async () => {
18
+ const engine = (0, test_engine_factory_1.createEngine)();
19
+ const session = await (0, test_engine_factory_1.initSession)(engine);
20
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
21
+ expect(result.rngOutcome).toBeDefined();
22
+ expect(typeof result.rngOutcome).toBe('object');
23
+ // Validate structure: must have at least 3 RNG calls for a spin (reels need randomness)
24
+ expect(Object.keys(result.rngOutcome || {}).length).toBeGreaterThanOrEqual(3);
25
+ });
26
+ it('should have non-empty rngOutcome for spins', async () => {
27
+ const engine = (0, test_engine_factory_1.createEngine)();
28
+ const session = await (0, test_engine_factory_1.initSession)(engine);
29
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
30
+ const keys = Object.keys(result.rngOutcome || {});
31
+ // Spins need at least 3 RNG calls (one per reel minimum, typically 5 for 5-reel games)
32
+ expect(keys.length).toBeGreaterThanOrEqual(3);
33
+ });
34
+ it('should include seed, result, min, max for each RNG action', async () => {
35
+ const engine = (0, test_engine_factory_1.createEngine)();
36
+ const session = await (0, test_engine_factory_1.initSession)(engine);
37
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
38
+ const outcome = result.rngOutcome;
39
+ const validation = (0, test_engine_factory_1.validateRngOutcome)(outcome);
40
+ expect(validation.valid).toBe(true);
41
+ if (!validation.valid) {
42
+ console.error('Validation errors:', validation.errors);
88
43
  }
89
44
  });
90
- it('should track at least one RNG call per spin', async () => {
91
- const init = await initSession();
92
- const spin = await executeSpin(init.publicState, init.privateState);
93
- expect(Object.keys(spin.rngOutcome || {}).length).toBeGreaterThan(0);
45
+ it('should record all RNG actions with unique actionIds', async () => {
46
+ const engine = (0, test_engine_factory_1.createEngine)();
47
+ const session = await (0, test_engine_factory_1.initSession)(engine);
48
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
49
+ const actionIds = Object.keys(result.rngOutcome || {});
50
+ const uniqueIds = new Set(actionIds);
51
+ expect(uniqueIds.size).toBe(actionIds.length);
52
+ });
53
+ it('should have results within declared min/max bounds', async () => {
54
+ const engine = (0, test_engine_factory_1.createEngine)();
55
+ const session = await (0, test_engine_factory_1.initSession)(engine);
56
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
57
+ for (const [actionId, record] of Object.entries(result.rngOutcome || {})) {
58
+ const rec = record;
59
+ expect(rec.result).toBeGreaterThanOrEqual(rec.min);
60
+ expect(rec.result).toBeLessThanOrEqual(rec.max);
61
+ }
62
+ });
63
+ it('should provide audit trails for multiple consecutive spins', async () => {
64
+ const engine = (0, test_engine_factory_1.createEngine)();
65
+ const session = await (0, test_engine_factory_1.initSession)(engine);
66
+ let pub = session.publicState;
67
+ let priv = session.privateState;
68
+ for (let i = 0; i < 5; i++) {
69
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, pub, priv);
70
+ expect(result.rngOutcome).toBeDefined();
71
+ // Each spin must have at least 3 RNG calls
72
+ expect(Object.keys(result.rngOutcome || {}).length).toBeGreaterThanOrEqual(3);
73
+ const validation = (0, test_engine_factory_1.validateRngOutcome)(result.rngOutcome);
74
+ expect(validation.valid).toBe(true);
75
+ pub = result.publicState;
76
+ priv = result.privateState;
77
+ }
78
+ });
79
+ });
80
+ describe('Tamper Detection via SHA-256', () => {
81
+ it('should produce valid SHA-256 hashes from rngOutcome', async () => {
82
+ const engine = (0, test_engine_factory_1.createEngine)();
83
+ const session = await (0, test_engine_factory_1.initSession)(engine);
84
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
85
+ const hash = (0, test_engine_factory_1.hashRngOutcome)(result.rngOutcome);
86
+ expect((0, test_engine_factory_1.isValidSha256)(hash)).toBe(true);
87
+ });
88
+ it('should produce different hashes for different outcomes', async () => {
89
+ const engine = (0, test_engine_factory_1.createEngine)();
90
+ const session = await (0, test_engine_factory_1.initSession)(engine);
91
+ const result1 = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
92
+ const result2 = await (0, test_engine_factory_1.executeSpin)(engine, result1.publicState, result1.privateState);
93
+ const hash1 = (0, test_engine_factory_1.hashRngOutcome)(result1.rngOutcome);
94
+ const hash2 = (0, test_engine_factory_1.hashRngOutcome)(result2.rngOutcome);
95
+ // Extremely unlikely to collide with different RNG calls
96
+ expect(hash1).not.toBe(hash2);
97
+ });
98
+ it('should produce identical hashes for identical outcomes', async () => {
99
+ const { engine, mockRng } = (0, test_engine_factory_1.createEngineWithMockRng)([5, 10, 3, 7, 2, 8, 1, 4, 6, 9]);
100
+ const session = await (0, test_engine_factory_1.initSession)(engine);
101
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
102
+ const hash1 = (0, test_engine_factory_1.hashRngOutcome)(result.rngOutcome);
103
+ const hash2 = (0, test_engine_factory_1.hashRngOutcome)(result.rngOutcome);
104
+ expect(hash1).toBe(hash2);
105
+ });
106
+ it('should detect tampering when a single field is modified', async () => {
107
+ const engine = (0, test_engine_factory_1.createEngine)();
108
+ const session = await (0, test_engine_factory_1.initSession)(engine);
109
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
110
+ const originalHash = (0, test_engine_factory_1.hashRngOutcome)(result.rngOutcome);
111
+ // Tamper with one record
112
+ const tampered = (0, test_engine_factory_1.cloneState)(result.rngOutcome);
113
+ const firstKey = Object.keys(tampered)[0];
114
+ if (firstKey) {
115
+ tampered[firstKey].result += 1;
116
+ }
117
+ const tamperedHash = (0, test_engine_factory_1.hashRngOutcome)(tampered);
118
+ expect(tamperedHash).not.toBe(originalHash);
94
119
  });
95
- it('should have unique actionIds within command', async () => {
96
- const init = await initSession();
97
- const spin = await executeSpin(init.publicState, init.privateState);
98
- const actionIds = Object.keys(spin.rngOutcome || {});
99
- expect(actionIds.length).toBe(new Set(actionIds).size);
120
+ it('should detect tampering when actionId ordering changes', async () => {
121
+ const engine = (0, test_engine_factory_1.createEngine)();
122
+ const session = await (0, test_engine_factory_1.initSession)(engine);
123
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
124
+ // Canonical form sorts by actionId, so re-ordering keys shouldn't change hash
125
+ const canonical1 = (0, test_engine_factory_1.canonicalizeRngOutcome)(result.rngOutcome);
126
+ const reversed = {};
127
+ const keys = Object.keys(result.rngOutcome).reverse();
128
+ for (const key of keys) {
129
+ reversed[key] = result.rngOutcome[key];
130
+ }
131
+ const canonical2 = (0, test_engine_factory_1.canonicalizeRngOutcome)(reversed);
132
+ expect(canonical1).toBe(canonical2);
100
133
  });
101
134
  });
102
- // ============================================================
103
- // TAMPER DETECTION (GLI-19 3.4.2)
104
- // ============================================================
105
- describe('Section 3.4.2: Tamper Detection', () => {
106
- it('should detect modified seed', async () => {
107
- const init = await initSession();
108
- const spin = await executeSpin(init.publicState, init.privateState);
109
- const originalHash = generateHash(canonicalizeForHash(spin.rngOutcome));
110
- const tampered = JSON.parse(JSON.stringify(spin.rngOutcome));
111
- const key = Object.keys(tampered)[0];
112
- tampered[key].seed = tampered[key].seed + 1;
113
- expect(generateHash(canonicalizeForHash(tampered))).not.toBe(originalHash);
114
- });
115
- it('should detect modified result', async () => {
116
- const init = await initSession();
117
- const spin = await executeSpin(init.publicState, init.privateState);
118
- const originalHash = generateHash(canonicalizeForHash(spin.rngOutcome));
119
- const tampered = JSON.parse(JSON.stringify(spin.rngOutcome));
120
- const key = Object.keys(tampered)[0];
121
- tampered[key].result = tampered[key].result + 1;
122
- expect(generateHash(canonicalizeForHash(tampered))).not.toBe(originalHash);
123
- });
124
- it('should detect inserted record', async () => {
125
- const init = await initSession();
126
- const spin = await executeSpin(init.publicState, init.privateState);
127
- const originalHash = generateHash(canonicalizeForHash(spin.rngOutcome));
128
- const tampered = { ...spin.rngOutcome, injected: { result: 5, seed: 99999, min: 0, max: 100 } };
129
- expect(generateHash(canonicalizeForHash(tampered))).not.toBe(originalHash);
130
- });
131
- it('should detect removed record', async () => {
132
- const init = await initSession();
133
- const spin = await executeSpin(init.publicState, init.privateState);
134
- const originalHash = generateHash(canonicalizeForHash(spin.rngOutcome));
135
- const tampered = { ...spin.rngOutcome };
136
- delete tampered[Object.keys(tampered)[0]];
137
- expect(generateHash(canonicalizeForHash(tampered))).not.toBe(originalHash);
138
- });
139
- it('should detect modified actionId', async () => {
140
- const init = await initSession();
141
- const spin = await executeSpin(init.publicState, init.privateState);
142
- const originalHash = generateHash(canonicalizeForHash(spin.rngOutcome));
143
- const entries = Object.entries(spin.rngOutcome);
144
- const tampered = {};
145
- entries.forEach(([key, value], i) => {
146
- tampered[i === 0 ? 'tampered_' + key : key] = value;
147
- });
148
- expect(generateHash(canonicalizeForHash(tampered))).not.toBe(originalHash);
149
- });
150
- it('should handle record reordering (canonicalization sorts)', () => {
151
- const outcome1 = {
152
- action_z: { result: 5, seed: 100, min: 0, max: 10 },
153
- action_a: { result: 6, seed: 200, min: 0, max: 10 },
154
- };
155
- const outcome2 = {
156
- action_a: { result: 6, seed: 200, min: 0, max: 10 },
157
- action_z: { result: 5, seed: 100, min: 0, max: 10 },
158
- };
159
- expect(generateHash(canonicalizeForHash(outcome1))).toBe(generateHash(canonicalizeForHash(outcome2)));
135
+ describe('Deterministic Replay', () => {
136
+ it('should produce identical outcomes with same mock RNG sequence', async () => {
137
+ const sequence = [5, 10, 3, 7, 2, 8, 1, 4, 6, 9, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19];
138
+ const { engine: engine1, mockRng: mock1 } = (0, test_engine_factory_1.createEngineWithMockRng)([...sequence]);
139
+ const session1 = await (0, test_engine_factory_1.initSession)(engine1);
140
+ const result1 = await (0, test_engine_factory_1.executeSpin)(engine1, session1.publicState, session1.privateState);
141
+ const { engine: engine2, mockRng: mock2 } = (0, test_engine_factory_1.createEngineWithMockRng)([...sequence]);
142
+ const session2 = await (0, test_engine_factory_1.initSession)(engine2);
143
+ const result2 = await (0, test_engine_factory_1.executeSpin)(engine2, session2.publicState, session2.privateState);
144
+ expect(result1.outcome).toEqual(result2.outcome);
145
+ });
146
+ it('should produce identical RNG outcomes with same mock sequence', async () => {
147
+ const sequence = [5, 10, 3, 7, 2, 8, 1, 4, 6, 9, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19];
148
+ const { engine: engine1 } = (0, test_engine_factory_1.createEngineWithMockRng)([...sequence]);
149
+ const session1 = await (0, test_engine_factory_1.initSession)(engine1);
150
+ const result1 = await (0, test_engine_factory_1.executeSpin)(engine1, session1.publicState, session1.privateState);
151
+ const { engine: engine2 } = (0, test_engine_factory_1.createEngineWithMockRng)([...sequence]);
152
+ const session2 = await (0, test_engine_factory_1.initSession)(engine2);
153
+ const result2 = await (0, test_engine_factory_1.executeSpin)(engine2, session2.publicState, session2.privateState);
154
+ const hash1 = (0, test_engine_factory_1.hashRngOutcome)(result1.rngOutcome);
155
+ const hash2 = (0, test_engine_factory_1.hashRngOutcome)(result2.rngOutcome);
156
+ expect(hash1).toBe(hash2);
157
+ });
158
+ it('should produce different outcomes with different mock sequences', async () => {
159
+ const { engine: engine1 } = (0, test_engine_factory_1.createEngineWithMockRng)([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
160
+ const session1 = await (0, test_engine_factory_1.initSession)(engine1);
161
+ const result1 = await (0, test_engine_factory_1.executeSpin)(engine1, session1.publicState, session1.privateState);
162
+ const { engine: engine2 } = (0, test_engine_factory_1.createEngineWithMockRng)([9, 9, 9, 9, 9, 9, 9, 9, 9, 9]);
163
+ const session2 = await (0, test_engine_factory_1.initSession)(engine2);
164
+ const result2 = await (0, test_engine_factory_1.executeSpin)(engine2, session2.publicState, session2.privateState);
165
+ const hash1 = (0, test_engine_factory_1.hashRngOutcome)(result1.rngOutcome);
166
+ const hash2 = (0, test_engine_factory_1.hashRngOutcome)(result2.rngOutcome);
167
+ expect(hash1).not.toBe(hash2);
160
168
  });
161
169
  });
162
- // ============================================================
163
- // DETERMINISTIC REPLAY (GLI-19 4.2.1)
164
- // ============================================================
165
- describe('Section 4.2.1: Deterministic Replay', () => {
166
- it('should produce identical hash after serialization', async () => {
167
- const init = await initSession();
168
- const spin = await executeSpin(init.publicState, init.privateState);
169
- const originalHash = generateHash(canonicalizeForHash(spin.rngOutcome));
170
- const serialized = JSON.stringify(spin.rngOutcome);
171
- const restored = JSON.parse(serialized);
172
- expect(generateHash(canonicalizeForHash(restored))).toBe(originalHash);
173
- });
174
- it('should produce identical hash for number and string seeds', async () => {
175
- const init = await initSession();
176
- const spin = await executeSpin(init.publicState, init.privateState);
177
- const hashWithNumbers = generateHash(canonicalizeForHash(spin.rngOutcome));
178
- const withStrings = {};
179
- for (const [k, v] of Object.entries(spin.rngOutcome)) {
180
- withStrings[k] = { ...v, seed: String(v.seed) };
170
+ describe('Hash Chain Integrity', () => {
171
+ it('should maintain a hash chain across multiple spins', async () => {
172
+ const engine = (0, test_engine_factory_1.createEngine)();
173
+ const session = await (0, test_engine_factory_1.initSession)(engine);
174
+ const hashChain = [];
175
+ let pub = session.publicState;
176
+ let priv = session.privateState;
177
+ for (let i = 0; i < 5; i++) {
178
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, pub, priv);
179
+ const hash = (0, test_engine_factory_1.hashRngOutcome)(result.rngOutcome);
180
+ expect((0, test_engine_factory_1.isValidSha256)(hash)).toBe(true);
181
+ hashChain.push(hash);
182
+ pub = result.publicState;
183
+ priv = result.privateState;
181
184
  }
182
- expect(generateHash(canonicalizeForHash(withStrings))).toBe(hashWithNumbers);
185
+ // All hashes should be unique (no repeated outcomes)
186
+ const uniqueHashes = new Set(hashChain);
187
+ expect(uniqueHashes.size).toBe(hashChain.length);
183
188
  });
184
- it('should be reproducible across multiple calls', async () => {
185
- const init = await initSession();
186
- const spin = await executeSpin(init.publicState, init.privateState);
187
- const hashes = Array(100).fill(0).map(() => generateHash(canonicalizeForHash(spin.rngOutcome)));
188
- expect(new Set(hashes).size).toBe(1);
189
+ it('should allow chained hash verification', async () => {
190
+ const engine = (0, test_engine_factory_1.createEngine)();
191
+ const session = await (0, test_engine_factory_1.initSession)(engine);
192
+ let pub = session.publicState;
193
+ let priv = session.privateState;
194
+ let prevHash = (0, test_engine_factory_1.hashString)('genesis');
195
+ for (let i = 0; i < 3; i++) {
196
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, pub, priv);
197
+ const outcomeHash = (0, test_engine_factory_1.hashRngOutcome)(result.rngOutcome);
198
+ const chainedHash = (0, test_engine_factory_1.hashString)(prevHash + outcomeHash);
199
+ expect((0, test_engine_factory_1.isValidSha256)(chainedHash)).toBe(true);
200
+ prevHash = chainedHash;
201
+ pub = result.publicState;
202
+ priv = result.privateState;
203
+ }
189
204
  });
190
205
  });
191
- // ============================================================
192
- // DATA INTEGRITY
193
- // ============================================================
194
- describe('Data Integrity', () => {
195
- it('should verify result within bounds', async () => {
196
- const init = await initSession();
197
- const spin = await executeSpin(init.publicState, init.privateState);
198
- for (const [, record] of Object.entries(spin.rngOutcome)) {
199
- expect(record.result).toBeGreaterThanOrEqual(record.min);
200
- expect(record.result).toBeLessThanOrEqual(record.max);
206
+ describe('RNG Record Validation', () => {
207
+ it('should have numeric result values', async () => {
208
+ const engine = (0, test_engine_factory_1.createEngine)();
209
+ const session = await (0, test_engine_factory_1.initSession)(engine);
210
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
211
+ for (const [, record] of Object.entries(result.rngOutcome || {})) {
212
+ const rec = record;
213
+ expect(typeof rec.result).toBe('number');
214
+ expect(isFinite(rec.result)).toBe(true);
201
215
  }
202
216
  });
203
- it('should verify all values are finite', async () => {
204
- const init = await initSession();
205
- const spin = await executeSpin(init.publicState, init.privateState);
206
- for (const [, record] of Object.entries(spin.rngOutcome)) {
207
- expect(Number.isFinite(record.seed)).toBe(true);
208
- expect(Number.isFinite(record.result)).toBe(true);
209
- expect(Number.isFinite(record.min)).toBe(true);
210
- expect(Number.isFinite(record.max)).toBe(true);
217
+ it('should have numeric min/max values', async () => {
218
+ const engine = (0, test_engine_factory_1.createEngine)();
219
+ const session = await (0, test_engine_factory_1.initSession)(engine);
220
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
221
+ for (const [, record] of Object.entries(result.rngOutcome || {})) {
222
+ const rec = record;
223
+ expect(typeof rec.min).toBe('number');
224
+ expect(typeof rec.max).toBe('number');
225
+ expect(rec.min).toBeLessThanOrEqual(rec.max);
211
226
  }
212
227
  });
213
- it('should produce consistent SHA-256 hash format', async () => {
214
- const init = await initSession();
215
- const spin = await executeSpin(init.publicState, init.privateState);
216
- const hash = generateHash(canonicalizeForHash(spin.rngOutcome));
217
- expect(hash.length).toBe(64);
218
- expect(/^[a-f0-9]+$/.test(hash)).toBe(true);
228
+ it('should have seed values present for every record', async () => {
229
+ const engine = (0, test_engine_factory_1.createEngine)();
230
+ const session = await (0, test_engine_factory_1.initSession)(engine);
231
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
232
+ for (const [, record] of Object.entries(result.rngOutcome || {})) {
233
+ const rec = record;
234
+ expect(rec.seed).toBeDefined();
235
+ expect(rec.seed !== null).toBe(true);
236
+ // Seed must be a number or string (not undefined/null/empty)
237
+ expect(['number', 'string'].includes(typeof rec.seed)).toBe(true);
238
+ }
239
+ });
240
+ it('should pass full outcome validation', async () => {
241
+ const engine = (0, test_engine_factory_1.createEngine)();
242
+ const session = await (0, test_engine_factory_1.initSession)(engine);
243
+ // Run 10 spins
244
+ let pub = session.publicState;
245
+ let priv = session.privateState;
246
+ for (let i = 0; i < 10; i++) {
247
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, pub, priv);
248
+ const validation = (0, test_engine_factory_1.validateRngOutcome)(result.rngOutcome);
249
+ expect(validation.valid).toBe(true);
250
+ pub = result.publicState;
251
+ priv = result.privateState;
252
+ }
219
253
  });
220
254
  });
221
255
  });
@@ -1 +1 @@
1
- {"version":3,"file":"rng-gli19-compliance.test.js","sourceRoot":"","sources":["../../src/__tests__/rng-gli19-compliance.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rng-gli19-compliance.test.js","sourceRoot":"","sources":["../../src/__tests__/rng-gli19-compliance.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rng-security.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rng-security.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rng-security.test.ts"],"names":[],"mappings":""}