Files
Webklar-Kundenbereich/test/giteaTimeout.test.js
T

50 lines
1.7 KiB
JavaScript

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