import { test } from 'node:test' import assert from 'node:assert/strict' import { resetUserTokenBridgeStateForTest, syncUserTokenToBridge } from '../src/shared/auth/user-token-bridge.ts' import type { TokenPushTarget } from '../src/shared/auth/user-token-bridge.ts' function collector() { const pushed: string[] = [] return { target: { push: (value: string) => pushed.push(value) } as TokenPushTarget, pushed, } } test('令牌变化时推送,重复值不重复推送', () => { resetUserTokenBridgeStateForTest() const { target, pushed } = collector() assert.equal(syncUserTokenToBridge('abc', target), true) assert.equal(syncUserTokenToBridge('abc', target), false, '同值不重复推送') assert.equal(syncUserTokenToBridge(' def ', target), true, '去空白后不同则推送') assert.deepEqual(pushed, ['abc', 'def']) }) test('登出推空串以清空 Python 侧令牌', () => { resetUserTokenBridgeStateForTest() const { target, pushed } = collector() syncUserTokenToBridge('abc', target) assert.equal(syncUserTokenToBridge('', target), true) assert.deepEqual(pushed, ['abc', '']) }) test('没有可用的桥时返回 false 且不记录状态(后续有桥仍会推送)', () => { resetUserTokenBridgeStateForTest() const { target, pushed } = collector() assert.equal(syncUserTokenToBridge('abc', null), false, '无桥不推送') assert.equal(syncUserTokenToBridge('abc', target), true, '之后有桥仍推送') assert.deepEqual(pushed, ['abc']) }) test('推送目标抛异常时返回 false', () => { resetUserTokenBridgeStateForTest() const throwing: TokenPushTarget = { push: () => { throw new Error('bridge down') }, } assert.equal(syncUserTokenToBridge('abc', throwing), false) })