portal-auth P3 測試:21 項(HTML 零租戶字串/enforce 繞不過/越庫 404/graph 粗閘/workflows 唯讀)
- portal-data.test.ts:/portal HTML 殼機械斷言(無 'leo'/X-Arcrun-API-Key//kbdb//Mira); search 注入證明(caller 帶 library=hr&owner_id=evil 被靜默覆蓋);entries/:id 越庫/ 跨租戶/不存在同一句 404+NULL→general;graph 403 不打 plugin/放行轉發/disabled 來源排除;workflows 非 admin 403、admin 唯讀無 webhook_url、workflowsVisible 單元 - portal-auth.test.ts session 測試補 P3 能力欄位(graph_allowed/workflows_visible) - wrangler.test.toml 補 ANALYTICS_KV mock+KBDB_GRAPH_URL 假 host(絕不外連) - cypher 154/155(唯一失敗=executor 不存在零件 pre-existing,git stash 複驗); kbdb 20/20;兩包 tsc exit 0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -264,12 +264,17 @@ describe('GET /portal/session', () => {
|
||||
it('有效 session → 回 display_name/role/libraries,無租戶字串', async () => {
|
||||
await seedPortalSession('tok-1', 'rec_1');
|
||||
mockGetRecord('rec_1', activeUserValues());
|
||||
// P3:session 多回 graph_allowed(D-4)——非 ["*"] 用戶要查庫目錄算 graph 來源庫
|
||||
mockListByTemplate('portal_library', []);
|
||||
const res = await json('GET', '/portal/session', undefined, { Authorization: 'Bearer tok-1' });
|
||||
expect(res.status).toBe(200);
|
||||
const data = (await res.json()) as Record<string, unknown>;
|
||||
expect(data.valid).toBe(true);
|
||||
expect(data.libraries).toEqual(['general', 'finance']);
|
||||
expect('tenant' in data).toBe(false);
|
||||
// P3 能力欄位:來源庫預設 general、本用戶有 general → graph 放行;workflows 預設 admin-only
|
||||
expect(data.graph_allowed).toBe(true);
|
||||
expect(data.workflows_visible).toBe(false);
|
||||
});
|
||||
|
||||
it('帳號被停用 → 既有 session 立即失效(403)且 KV session 被清', async () => {
|
||||
|
||||
Reference in New Issue
Block a user