拆分腾讯会话 Cookie 与复核截图辅助逻辑
This commit is contained in:
@@ -5,10 +5,13 @@ import {
|
||||
normalizeLoginType,
|
||||
parseViewportSpec,
|
||||
} from './session-browser-config.js'
|
||||
import { normalizeTencentCookieMap } from './session-cookie-map.js'
|
||||
import {
|
||||
buildArtifactsPayload,
|
||||
buildRedeemPayload,
|
||||
} from './session-payload.js'
|
||||
import { ensureReviewScreenshot } from './session-review.js'
|
||||
import { resolveInitialQrSessionState } from './session-state.js'
|
||||
import {
|
||||
REDEEM_SUCCESS_AUTO_CLOSE_MS,
|
||||
resolveTencentSessionExpiresAt,
|
||||
@@ -138,3 +141,68 @@ test('buildArtifactsPayload only exposes internal artifact paths in debug mode',
|
||||
reviewScreenshotPath: '/tmp/session/review.png',
|
||||
})
|
||||
})
|
||||
|
||||
test('normalizeTencentCookieMap fills required defaults and derived proxy cookie', () => {
|
||||
assert.deepEqual(
|
||||
normalizeTencentCookieMap([
|
||||
{ name: 'openid', value: 'openid-1' },
|
||||
{ name: 'access_token', value: 'token-1' },
|
||||
{ name: '', value: 'ignored' },
|
||||
]),
|
||||
{
|
||||
openid: 'openid-1',
|
||||
access_token: 'token-1',
|
||||
acctype: 'qc',
|
||||
appid: '101491592',
|
||||
iegams_milo_proxylogin_qc: '101491592_$$_openid-1_$$_token-1',
|
||||
},
|
||||
)
|
||||
})
|
||||
|
||||
test('resolveInitialQrSessionState creates waiting-scan snapshot with ttl', () => {
|
||||
assert.deepEqual(
|
||||
resolveInitialQrSessionState('wx', {
|
||||
updatedAt: '2026-04-14T09:30:00.000Z',
|
||||
nowMs: 1_700_000_000_000,
|
||||
sessionTtlMs: 1_800_000,
|
||||
}),
|
||||
{
|
||||
status: 'waiting_scan',
|
||||
notice: '请使用微信扫码登录',
|
||||
updatedAt: '2026-04-14T09:30:00.000Z',
|
||||
expiresAt: 1_700_001_800_000,
|
||||
},
|
||||
)
|
||||
})
|
||||
|
||||
test('ensureReviewScreenshot writes screenshot state and skips unchanged signature', async () => {
|
||||
const screenshotCalls = []
|
||||
const session = {
|
||||
sessionId: 'txbs-demo',
|
||||
loginType: 'qq',
|
||||
sessionDir: '/tmp/session-demo',
|
||||
page: {
|
||||
async screenshot(options) {
|
||||
screenshotCalls.push(options)
|
||||
},
|
||||
},
|
||||
lastReview: null,
|
||||
}
|
||||
|
||||
const activityInfo = {
|
||||
role: {
|
||||
roleId: '1001',
|
||||
roleName: '测试角色',
|
||||
},
|
||||
}
|
||||
|
||||
assert.equal(await ensureReviewScreenshot(session, activityInfo), true)
|
||||
assert.equal(screenshotCalls.length, 1)
|
||||
assert.equal(session.lastReview.roleId, '1001')
|
||||
assert.equal(session.lastReview.roleName, '测试角色')
|
||||
assert.equal(session.lastReview.signature, 'qq|1001|测试角色')
|
||||
assert.match(session.lastReview.screenshotPath, /role-review\.png$/)
|
||||
|
||||
assert.equal(await ensureReviewScreenshot(session, activityInfo), false)
|
||||
assert.equal(screenshotCalls.length, 1)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user