test(release-cleanup): 補上整合測試、server URL 正規化與 id 驗證測試
新增端對端整合測試(列出→刪除舊 release→重列→列 tag→刪孤立 tag 的呼叫順序)、 loadConfig 去尾斜線測試,並將 id 編碼測試改為驗證非整數 id 被略過。測試共 62 項全數通過。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
353a6af7c3
commit
edc933be73
@@ -108,14 +108,14 @@ test('cleanupReleases 在 deleteResource 回傳非 204 時仍繼續處理其餘
|
||||
assert.deepEqual(client.deleted, ['http://x/releases/2', 'http://x/releases/1'])
|
||||
})
|
||||
|
||||
test('cleanupReleases 對 id 進行 URL 編碼(防路徑穿越)', async () => {
|
||||
test('cleanupReleases 略過非整數(惡意)id,不發出刪除請求', async () => {
|
||||
const client = fakeClient([
|
||||
{ id: 1, tag_name: 'v2', name: 'n2', created_at: '2024-02-01T00:00:00Z' },
|
||||
{ id: '../evil', tag_name: 'v1', name: 'n1', created_at: '2024-01-01T00:00:00Z' },
|
||||
])
|
||||
await cleanupReleases(client, { releaseApiUrl: 'http://x/releases', keepCount: 1 })
|
||||
// 保留最新(id=1),刪除較舊者(惡意 id);id 中的 ../ 應被編碼
|
||||
assert.deepEqual(client.deleted, ['http://x/releases/..%2Fevil'])
|
||||
// 保留最新(id=1);待刪除者 id 非整數 → 被略過,不會送出任何刪除
|
||||
assert.deepEqual(client.deleted, [])
|
||||
})
|
||||
|
||||
test('cleanupReleases 在刪除回傳非 204 時記錄錯誤至 stderr', async () => {
|
||||
|
||||
Reference in New Issue
Block a user