Analyse: alle Beendigungswege schalten den Messdienst ab (Kunde/Projekt weg, Domain, Löschfrist, Widerruf Wechsel)
Messdienst: POST /a/admin/sites/:key/off setzt active=0 und offSince einmalig; Portal-Client stopSite. analyse.js: endAnalyse als gemeinsamer Kern, endAnalyseForCustomer, analyseOnProjectChanged, analyseDisabled (Sperre/Löschfrist) und täglicher Abgleich runAnalyseReconcile (Projekt/Kunde weg, Domains nachziehen, K18-Wiederholung, Messdienst für off/disabled, fehlende Entfernen-Tickets nachholen). Entfernen-Ticket je Abschaltung gekennzeichnet (kein Doppelticket, auch wenn das Speichern der ID scheiterte). Hooks: Kunde löschen, updateWebsiteProject, withdrawOrder (Wechsel), siteFeatures.disable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
fbc40252a3
commit
78170567b4
17 files changed
+616
-70
No files matched your search
@@ -92,3 +92,15 @@ test('heatToken: von der Analytics-Verifikation akzeptiert, 30 Min gueltig', ()
|
||||
test('heatToken ohne heatSecret => 503', () => {
|
||||
assert.throws(() => mk({ heatSecret: '' }).heatToken({ siteKey: 'abcdefghij123456', path: '/', vp: 'd' }), (e) => e.status === 503)
|
||||
})
|
||||
|
||||
test('stopSite: POST /off mit Bearer, 404 zaehlt als erledigt, andere Fehler werfen', async () => {
|
||||
reset()
|
||||
await mk().stopSite('abcdefghij123456')
|
||||
assert.equal(calls[0].method, 'POST')
|
||||
assert.equal(calls[0].url, '/a/admin/sites/abcdefghij123456/off')
|
||||
assert.equal(calls[0].auth, 'Bearer tok-secret')
|
||||
reset(() => ({ status: 404, body: { error: 'x' } }))
|
||||
assert.deepEqual(await mk().stopSite('abcdefghij123456'), { ok: true, missing: true })
|
||||
reset(() => ({ status: 500, body: {} }))
|
||||
await assert.rejects(mk().stopSite('abcdefghij123456'), (e) => e.status === 500)
|
||||
})
|
||||
Reference in new issue
Block a user