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:
1 parent
febac3c2a3
commit
d5c70a5bd6
7 files changed
+233
-11
No files matched your search
@@ -44,6 +44,7 @@ before(async () => {
|
||||
{ full_name: 'JUSN/doc-fail-test' },
|
||||
{ full_name: 'JUSN/verboten' },
|
||||
{ full_name: 'JUSN/Case-Test' },
|
||||
{ full_name: 'knso/rausgezogen' },
|
||||
],
|
||||
// C1: Hooks kommen (wie im echten Gitea) OHNE Top-Level-`url` an - `url` hier ist nur die
|
||||
// Seed-Abkuerzung, gespeichert/ausgeliefert wird das Ziel ausschliesslich unter `config.url`.
|
||||
@@ -53,10 +54,14 @@ before(async () => {
|
||||
'WEBklar/von-hand': [{ id: 210, url: PORTAL_HOOK_URL }],
|
||||
'WEBklar/schon-da': [{ id: 310, url: PORTAL_HOOK_URL }],
|
||||
'JUSN/doc-fail-test': [{ id: 410, url: PORTAL_HOOK_URL }],
|
||||
'knso/rausgezogen': [{ id: 510, url: PORTAL_HOOK_URL }],
|
||||
},
|
||||
// knso/von-hand wurde von Hand bereits nach WEBklar/von-hand verschoben (kein Transfer-Aufruf noetig).
|
||||
// WEBklar/rausgezogen wurde von Hand AUS der Organisation heraus nach knso/rausgezogen verschoben
|
||||
// (final-fix Punkt 2: Schritt-1-Aufraeumen darf dieser Weiterleitung nicht folgen).
|
||||
redirects: {
|
||||
'knso/von-hand': 'WEBklar/von-hand',
|
||||
'WEBklar/rausgezogen': 'knso/rausgezogen',
|
||||
},
|
||||
})
|
||||
|
||||
@@ -72,6 +77,7 @@ before(async () => {
|
||||
'JUSN/doc-fail-test',
|
||||
'JUSN/verboten',
|
||||
'jusn/case-test', // Appwrite kennt eine andere Schreibweise als Gitea (dort: JUSN/Case-Test)
|
||||
'WEBklar/rausgezogen', // Appwrite kennt noch den WEBklar-Namen, Gitea hat es herausverschoben
|
||||
]
|
||||
const websiteProjects = repoNames.map((repoFullName) => {
|
||||
const $id = randomUUID()
|
||||
@@ -200,3 +206,33 @@ test('Gitea nicht erreichbar', async () => {
|
||||
assert.equal(r.moved, null)
|
||||
assert.match(r.warnings[0], /^Gitea ist gerade nicht erreichbar \(.+\)\. Bitte später ‚Pushes nachtragen‘ klicken\.$/)
|
||||
})
|
||||
test('Schritt 1 folgt keiner Weiterleitung: von Hand aus WEBklar herausverschobenes Repo wird nicht angefasst', async () => {
|
||||
// final-fix Punkt 2: WEBklar/rausgezogen (isOrgRepo(from) === true) leitet inzwischen auf
|
||||
// knso/rausgezogen um - das Aufraeumen darf dem NICHT folgen (sonst wuerde der Portal-Webhook
|
||||
// eines fremden Repos geloescht). Stattdessen wird der kanonische Name aufgeloest und, weil er
|
||||
// ausserhalb von WEBklar liegt, nur das Projektdokument nachgezogen.
|
||||
const r = await moveRepoToOrg(doc('WEBklar/rausgezogen'))
|
||||
assert.deepEqual(r, { moved: null, warnings: [] })
|
||||
assert.equal(
|
||||
gitea.calls.some((c) => c.method === 'DELETE' && /rausgezogen/i.test(c.path)),
|
||||
false
|
||||
)
|
||||
assert.deepEqual(gitea.hooksOf('knso/rausgezogen'), [
|
||||
{ id: 510, type: 'gitea', active: true, events: ['push'], config: { content_type: 'json', url: PORTAL_HOOK_URL } },
|
||||
])
|
||||
const d = aw.get('websiteProjects', doc('WEBklar/rausgezogen').$id)
|
||||
assert.equal(d.repoFullName, 'knso/rausgezogen')
|
||||
})
|
||||
test('R10-Ein-Zeiler: Transfer meldet Erfolg, aber unveraenderten full_name -> kein Aufraeumen', async () => {
|
||||
// final-fix Punkt 3: der Transfer selbst antwortet 201, aber full_name ist danach nicht in
|
||||
// WEBklar (simuliert einen Gitea-Bug/Teil-Fehlschlag). Erst NACH dieser Pruefung darf
|
||||
// aufgeraeumt werden - hier eben nicht.
|
||||
gitea.setTransferNoop()
|
||||
const r = await moveRepoToOrg(doc('ANDJ/unberuehrt'))
|
||||
assert.equal(r.moved, null)
|
||||
assert.deepEqual(r.warnings, ['Umzug nach WEBklar nicht möglich (Übertragung nicht abgeschlossen).'])
|
||||
assert.equal(
|
||||
gitea.calls.some((c) => c.method === 'DELETE' && /unberuehrt/i.test(c.path)),
|
||||
false
|
||||
)
|
||||
})
|
||||
Reference in new issue
Block a user