import assert from 'node:assert/strict' import test from 'node:test' import { clearStoredQueue, isBugCollectDisabledPayload, openQueue, sealQueue, } from '../src/queue/queueStorage' import type { IssueEvent } from '../src/types' const issue: IssueEvent = { type: 'issue', level: 'error', platform: 'android', fingerprint: 'fingerprint', timestamp: 1_000, appKey: 'app', release: '8.0.0', exception: { type: 'Error', value: 'secret', stacktrace: 'private stack' }, symbolicationStatus: 'unavailable', } test('persistent queue is encrypted, context-bound and tamper-evident', () => { const encrypted = sealQueue([issue], 'signing-key', 'bugcollect-queue|app') assert.equal(encrypted.includes('private stack'), false) assert.deepEqual(openQueue(encrypted, 'signing-key', 'bugcollect-queue|app', 0), [issue]) assert.throws(() => openQueue(encrypted, 'signing-key', 'bugcollect-queue|other', 0)) const parts = encrypted.split('.') parts[2] = `${parts[2][0] === 'A' ? 'B' : 'A'}${parts[2].slice(1)}` assert.throws(() => openQueue(parts.join('.'), 'signing-key', 'bugcollect-queue|app', 0)) }) test('platform disabled response recognizes the deployed message contract', () => { assert.equal( isBugCollectDisabledPayload({ code: 403, status: '1', message: 'BUGCOLLECT_DISABLED', }), true, ) assert.equal(isBugCollectDisabledPayload({ code: 'BUGCOLLECT_DISABLED' }), true) assert.equal(isBugCollectDisabledPayload({ code: 403, message: 'forbidden' }), false) }) test('cold-start disable removes a persisted queue before LogQueue is created', async () => { const removed: string[] = [] await clearStoredQueue( { async removeItem(key) { removed.push(key) }, }, 'app', ) assert.deepEqual(removed, ['@xuqm_bugcollect:queue:app']) })