test(resource-rule): 半殘情境的 D1 名字改用安裝器真正會取的那個(-db,非 -kbdb)
上一筆 commit 之後才發現的:fixture 的 half-finished 情境沿用了
installed/renamed 的歷史 D1 名(-kbdb),但那顆殘骸是安裝器留下的,
安裝器真正會取的名字是 `${baseName}-db`。名字不對,這個情境就測不到
真的那條路(D1 會被判成「不同名 ⇒ 照舊新建」而不是接回來)。
把 d1Title 加進情境定義、installerRequirements 收一個 d1CreateName 參數,
half-finished 用 -db、其餘照舊 -kbdb。
實跑:node shared/resource-rule/tests/half-finished-install.mjs → 全部通過
Refs: inkstone/Arcrun#123
This commit is contained in:
@@ -70,7 +70,7 @@ section('① 驗收線本身:半殘帳號 + 安裝器再按一次 → 裝得
|
||||
const api = apiFor(account, cfRejectsDuplicateNames(account));
|
||||
// mode='init':安裝器看的是自己的紀錄(`deployed:<account>:`),上次沒裝完就沒有那筆
|
||||
// ⇒ 這一輪照定義是「新裝」。半殘狀態必須在 init 這條路上就被處理掉。
|
||||
const plan = await planResources(api, installerRequirements(), 'init');
|
||||
const plan = await planResources(api, installerRequirements(true, `${BASE_NAME}-db`), 'init');
|
||||
|
||||
check(plan.blockers.length === 0, `不該有任何 blocker(實得 ${plan.blockers.length} 條)`);
|
||||
if (plan.blockers.length) console.log(plan.blockers.map((b) => ` · ${b}`).join('\n'));
|
||||
@@ -104,7 +104,7 @@ section('② 對照組:修好之前是什麼下場(沒有聲明 createNameIs
|
||||
// 舊版會直接送 POST,然後被 CF 用「title already exists」打回來。
|
||||
const account = makeAccount('half-finished');
|
||||
const api = apiFor(account, cfRejectsDuplicateNames(account));
|
||||
const plan = await planResources(api, installerRequirements(false), 'init');
|
||||
const plan = await planResources(api, installerRequirements(false, `${BASE_NAME}-db`), 'init');
|
||||
|
||||
check(plan.blockers.length > 0, '證明不了是自己的 → 一定要停手(fail-closed)');
|
||||
check(plan.blockers.join('\n').includes('RES-NAME-TAKEN'), '錯誤碼要在訊息裡(讓用戶回報,而不是自己去後台動手)');
|
||||
|
||||
Reference in New Issue
Block a user