From 68d1555975d0d0a9fe5ad7b1d4b4c2448e362986 Mon Sep 17 00:00:00 2001 From: 4gray Date: Mon, 27 Jul 2026 11:36:20 +0200 Subject: [PATCH] fix(stalker): canonicalize replay MAC values --- apps/stalker-mock-server/src/app/replay/replay-run.spec.ts | 5 ++--- apps/stalker-mock-server/src/app/replay/replay-symbols.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/stalker-mock-server/src/app/replay/replay-run.spec.ts b/apps/stalker-mock-server/src/app/replay/replay-run.spec.ts index 1fcd64af3..3738d492c 100644 --- a/apps/stalker-mock-server/src/app/replay/replay-run.spec.ts +++ b/apps/stalker-mock-server/src/app/replay/replay-run.spec.ts @@ -163,7 +163,7 @@ describe('ReplayRun symbols and exact matching', () => { 'password', 'username', ]); - expect(firstSymbols['mac']).toMatch(/^02(?::[0-9a-f]{2}){5}$/); + expect(firstSymbols['mac']).toMatch(/^02(?::[0-9A-F]{2}){5}$/); expect(firstSymbols['username']).toMatch(/^test-credential-[0-9a-f]+$/); expect(firstSymbols['password']).not.toBe(firstSymbols['username']); expect(firstSymbols).not.toHaveProperty('token'); @@ -636,8 +636,7 @@ describe('ReplayRun scheduled expiry and retained-byte defense', () => { ); } await jest.advanceTimersByTimeAsync( - REPLAY_RUN_HARD_LIFETIME_MS - - 5 * (REPLAY_RUN_INACTIVITY_MS - 1) + REPLAY_RUN_HARD_LIFETIME_MS - 5 * (REPLAY_RUN_INACTIVITY_MS - 1) ); expect(await Promise.all(settled)).toEqual( diff --git a/apps/stalker-mock-server/src/app/replay/replay-symbols.ts b/apps/stalker-mock-server/src/app/replay/replay-symbols.ts index a6a99cced..d584e6e03 100644 --- a/apps/stalker-mock-server/src/app/replay/replay-symbols.ts +++ b/apps/stalker-mock-server/src/app/replay/replay-symbols.ts @@ -27,7 +27,7 @@ function generatedValue(node: ReplayGenerateNode, runId: string): string { const hash = digest(runId, node.symbol, node.valueKind); switch (node.valueKind) { case 'mac': - return `02:${hash.slice(0, 2)}:${hash.slice(2, 4)}:${hash.slice(4, 6)}:${hash.slice(6, 8)}:${hash.slice(8, 10)}`; + return `02:${hash.slice(0, 2)}:${hash.slice(2, 4)}:${hash.slice(4, 6)}:${hash.slice(6, 8)}:${hash.slice(8, 10)}`.toUpperCase(); case 'credential': return `test-credential-${hash.slice(0, 24)}`; case 'token':