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>
88 lines
2.4 KiB
TypeScript
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',
|
|
);
|
|
});
|
|
});
|