Gesamtprüfung: Zeitlimit für Gitea, Aufräumen ohne Weiterleitung

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-09-30 10:21:34 +00:00
1 parent febac3c2a3
commit d5c70a5bd6
7 files changed
+233 -11

No files matched your search

+49
View File
@@ -0,0 +1,49 @@
import { test, before, after } from 'node:test'
import assert from 'node:assert/strict'
import { startFakeGitea } from './helpers/fakeGitea.js'
let gitea
let giteaFetch
let moveRepoToOrg
// Eigene Datei, weil GITEA_TIMEOUT_MS hier absichtlich sehr klein gesetzt wird (config.js liest
// die Umgebung beim Import - andere Testdateien duerfen davon nicht betroffen sein, jede
// Testdatei laeuft in einem eigenen Prozess).
before(async () => {
gitea = await startFakeGitea({ repos: [{ full_name: 'knso/langsam' }] })
Object.assign(process.env, {
GITEA_BASE_URL: gitea.baseUrl,
GITEA_API_TOKEN: 'test-token',
GITEA_TIMEOUT_MS: '200',
})
;({ giteaFetch } = await import('../server/services/giteaClient.js'))
;({ moveRepoToOrg } = await import('../server/services/repoMove.js'))
})
after(async () => {
await gitea.close()
})
test('giteaFetch bricht bei Zeitueberschreitung ohne .status ab', async () => {
gitea.setResponseDelay(2000)
const start = Date.now()
await assert.rejects(
giteaFetch('/repos/knso/langsam'),
(err) => {
assert.equal(err.status, undefined)
assert.match(err.message, /Zeitlimit/)
return true
}
)
assert.ok(Date.now() - start < 2000, 'giteaFetch haette nach ~200ms abbrechen muessen')
})
test('moveRepoToOrg meldet "Gitea ist gerade nicht erreichbar" statt zu haengen', async () => {
gitea.setResponseDelay(2000)
const start = Date.now()
const r = await moveRepoToOrg({ $id: 'x', repoFullName: 'knso/langsam' })
assert.ok(Date.now() - start < 2000, 'moveRepoToOrg haette nicht haengen bleiben duerfen')
assert.equal(r.moved, null)
assert.match(r.warnings[0], /^Gitea ist gerade nicht erreichbar \(/)
})