Files
Agent-System/web/src/lib/currentDocRole.test.ts
T
weichenandCursor cf3d126436 feat(web): never name-escalate server controlled zero duty ids
Mark server summaries dutiesAuthoritative so id 0 stays fail-closed
viewer instead of matching names like a legacy local document.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 17:08:35 +00:00

88 lines
2.4 KiB
TypeScript

import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { resolveCurrentDocRole } from './currentDocRole';
const authorA = { id: 9, name: '编制人A' };
const reviewerB = { id: 2, name: '审核人B' };
const stranger = { id: 99, name: '陌生用户' };
const duties = {
authorId: 9,
author: '编制人A',
reviewerId: 2,
reviewer: '审核人B',
approverId: 3,
approver: '批准人C',
};
describe('resolveCurrentDocRole', () => {
it('resolves A as author by authoritative user id', () => {
assert.equal(resolveCurrentDocRole({ currentUser: authorA, ...duties }), 'author');
});
it('does not promote reviewer B or stranger to author', () => {
assert.equal(resolveCurrentDocRole({ currentUser: reviewerB, ...duties }), 'reviewer');
assert.equal(resolveCurrentDocRole({ currentUser: stranger, ...duties }), 'viewer');
});
it('fail-closes unknown identity to viewer even if projectPermission says author', () => {
assert.equal(
resolveCurrentDocRole({
currentUser: stranger,
...duties,
projectPermission: 'author',
}),
'viewer',
);
});
it('matches name only for legacy local docs without duty ids', () => {
assert.equal(
resolveCurrentDocRole({
currentUser: { id: 1, name: '张工' },
author: '张工',
reviewer: '李主管',
approver: '王总监',
isLegacyLocalDoc: true,
}),
'author',
);
assert.equal(
resolveCurrentDocRole({
currentUser: stranger,
author: '张工',
reviewer: '李主管',
approver: '王总监',
isLegacyLocalDoc: true,
}),
'viewer',
);
});
it('does not name-promote when server controlled duties are zero ids', () => {
assert.equal(
resolveCurrentDocRole({
currentUser: { id: 99, name: '编制人A' },
authorId: 0,
reviewerId: 0,
approverId: 0,
author: '编制人A',
reviewer: '审核人B',
approver: '批准人C',
dutiesAuthoritative: true,
governanceMode: 'controlled',
isLegacyLocalDoc: true,
}),
'viewer',
);
assert.equal(
resolveCurrentDocRole({
currentUser: { id: 99, name: '编制人A' },
author: '编制人A',
governanceMode: 'controlled',
}),
'viewer',
);
});
});