From 341bcb13c8733d4132ecb0a2a58a12aeb94e82db Mon Sep 17 00:00:00 2001 From: uncle6me-web Date: Fri, 31 Jul 2026 14:57:22 +0800 Subject: [PATCH] =?UTF-8?q?t160=20=E6=B8=AC=E8=A9=A6=E8=B7=9F=E4=B8=8A?= =?UTF-8?q?=E8=A6=8F=E6=A0=BC=EF=BC=9A=E4=BA=BA=E5=B7=A5=E5=BB=BA=E5=BA=AB?= =?UTF-8?q?=20POST=20=E2=86=92=20404=EF=BC=88=E5=BA=AB=E5=8F=AA=E5=BE=9E?= =?UTF-8?q?=20daemon=20=E5=90=8C=E6=AD=A5=E4=BE=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 舊測試驗「POST 建庫 200+重複 409」=已刪端點的規格;vitest 回基線 9 failed/187 passed。 Co-Authored-By: Claude Fable 5 --- cypher-executor/tests/portal-admin.test.ts | 34 +++------------------- 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/cypher-executor/tests/portal-admin.test.ts b/cypher-executor/tests/portal-admin.test.ts index 37da814..fa7f1f2 100644 --- a/cypher-executor/tests/portal-admin.test.ts +++ b/cypher-executor/tests/portal-admin.test.ts @@ -300,42 +300,16 @@ describe('PATCH libraries(每帳號可查庫)', () => { // ═══════════════ 5. 庫目錄管理 ═══════════════ describe('/portal/admin/libraries', () => { - it('POST 建庫:寫 {tenant}::portal 子 namespace;重複登記 → 409', async () => { - await seedAdminSession(); - mockGetRecord('rec_admin', adminValues()); - mockTemplatesExist(); - mockListByTemplate('portal_library', []); - let recordBody = ''; - fetchMock - .get(KBDB) - .intercept({ path: '/records', method: 'POST' }) - .reply(200, (opts) => { - recordBody = String(opts.body); - return { - success: true, - record: { record_id: 'rec_lib1', template_id: 'tpl_pl', values: { name: 'finance', display_name: '財務庫', status: 'active' } }, - }; - }); + it('t160:人工建庫端點已刪(leo「沒有登記這回事」)——POST → 404;庫只從 daemon 同步來', async () => { + // 舊測試驗「POST 建庫 200+重複 409」——t160 拔掉人工建庫(e744ad1)後規格為: + // 庫由 /portal/daemon/libraries(連線精靈自動登記,t159)產生,admin 只能 GET/PATCH。 const res = await json( 'POST', '/portal/admin/libraries', { name: 'finance', display_name: '財務庫' }, { Authorization: 'Bearer tok-admin' }, ); - expect(res.status).toBe(200); - const rec = JSON.parse(recordBody) as { owner_id: string; template: string }; - expect(rec.owner_id).toBe(NS); - expect(rec.template).toBe('portal_library'); - - // 重複登記 - await seedAdminSession('tok-admin3'); - mockGetRecord('rec_admin', adminValues()); - mockTemplatesExist(); - mockListByTemplate('portal_library', [ - { record_id: 'rec_lib1', values: { name: 'finance', display_name: '財務庫', status: 'active' } }, - ]); - const dup = await json('POST', '/portal/admin/libraries', { name: 'finance' }, { Authorization: 'Bearer tok-admin3' }); - expect(dup.status).toBe(409); + expect(res.status).toBe(404); }); it('PATCH graph_source:boolean 進、slot 存字串;非 boolean → 400', async () => {