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 \(/) })