| 1234567891011121314151617181920212223 |
- import test from 'node:test';
- import assert from 'node:assert/strict';
- import fs from 'node:fs';
- import {sessionIdentityFunction, deployAccountSessionIdentity} from '../../scripts/deploy-account-session-identity.mjs';
- const prior = fs.readFileSync(new URL('../../deploy/account-binding-short-links-20261112/previous-account-binding.mjs', import.meta.url), 'utf8').replaceAll('\r\n', '\n');
- test('开课补丁仅替换绑定解析与开课块,保存、账号确认和外围代码保持原字节', () => {
- const start=prior.indexOf(' async function resolve(ownerId, key, account'), end=prior.indexOf(' const originalSave =',start);
- const prefix=prior.slice(0,start),suffix=prior.slice(end);
- const output=sessionIdentityFunction(prior.replace(/^import .*;\n/gm,'').replace(/^export /gm,''));
- assert.ok(output.startsWith(prefix.replace(/^import .*;\n/gm,'').replace(/^export /gm,'')));
- assert.ok(output.endsWith(suffix));
- assert.ok(output.includes('allowMissingTenant: true'));
- assert.ok(output.includes('accountId: p.participant.account.accountId ?? b.platformUserId'));
- assert.throws(()=>sessionIdentityFunction(''),/BLOCK_MISMATCH/);
- });
- test('未知线上版本阻止开课函数补丁,不发生远程写入', async () => {
- const calls=[];
- const request=async(method,route)=>{calls.push({method,route});return{name:'ksfStartWorkshopSession',path:'/ksfStartWorkshopSession',code:'unknown-version'};};
- await assert.rejects(()=>deployAccountSessionIdentity({request,apply:true}),/UNKNOWN_SESSION_IDENTITY_FUNCTION_VERSION/);
- assert.deepEqual(calls.map(row=>row.method),['GET']);
- });
|