Archiv/Rechte: Review-Punkte
- archiviertes Projekt bleibt unter Funktionen sichtbar, solange dort eine Funktion bestellt/eingerichtet/aktiv ist (z. B. Terminbuchungen) - auf archivierten Projekten nichts neu bestellen oder einschalten - Projekttyp Vorlage nur fuer Admins; repo-readme nur fuer bekannte Projekte Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3156bb790a
commit
4fc4c70b7d
5 files changed
+52
-6
No files matched your search
@@ -9,14 +9,20 @@ import { useTestEnv } from './support/testEnv.js'
|
||||
const aw = await startAppwriteMock()
|
||||
const st = await startFakeStripe()
|
||||
useTestEnv({ appwriteUrl: aw.url, stripeUrl: st.url })
|
||||
const { startTestApp, rawGet, get, sessionCookie } = await import('./support/testApp.js')
|
||||
const { startTestApp, rawGet, get, send, sessionCookie } = await import('./support/testApp.js')
|
||||
const { default: projectsRouter } = await import('../server/routes/projects.js')
|
||||
const { default: servicesRouter } = await import('../server/routes/admin/services.js')
|
||||
const { default: customersRouter } = await import('../server/routes/admin/customers.js')
|
||||
const { default: websiteProjectsRouter } = await import('../server/routes/admin/websiteProjects.js')
|
||||
const { default: giteaRouter } = await import('../server/routes/admin/gitea.js')
|
||||
const { default: funktionenRouter } = await import('../server/routes/funktionen.js')
|
||||
const app = await startTestApp({
|
||||
'/api/projects': projectsRouter,
|
||||
'/api/admin/services': servicesRouter,
|
||||
'/api/admin/customers': customersRouter,
|
||||
'/api/admin/website-projects': websiteProjectsRouter,
|
||||
'/api/admin/gitea': giteaRouter,
|
||||
'/api/funktionen': funktionenRouter,
|
||||
})
|
||||
after(() => Promise.all([aw.close(), st.close(), app.close()]))
|
||||
|
||||
@@ -58,3 +64,24 @@ test('Funktionen: Kunde sieht archivierte Projekte nicht, die Mitarbeiter-Ansich
|
||||
['p_aktiv', 'p_archiv']
|
||||
)
|
||||
})
|
||||
|
||||
test('Funktionen: archiviertes Projekt mit laufender Funktion bleibt fuer den Kunden sichtbar (Buchungen verwalten)', async () => {
|
||||
const { listCustomerFeatures } = await import('../server/services/siteFeatures.js')
|
||||
const docs = [{ customerId: 'c1', projectId: 'p_archiv', featureKey: 'termine', state: 'active' }]
|
||||
assert.deepEqual((await listCustomerFeatures('c1', { docs })).map((p) => p.projectId).sort(), ['p_aktiv', 'p_archiv'])
|
||||
const aus = [{ customerId: 'c1', projectId: 'p_archiv', featureKey: 'termine', state: 'off' }]
|
||||
assert.deepEqual((await listCustomerFeatures('c1', { docs: aus })).map((p) => p.projectId), ['p_aktiv'])
|
||||
})
|
||||
|
||||
test('Neu bestellen auf archiviertem Projekt geht nicht', async () => {
|
||||
const r = await send('POST', '/api/funktionen/news/checkout', { ...kunde, body: { projectId: 'p_archiv', consent: true } })
|
||||
assert.equal(r.status, 409)
|
||||
assert.match(r.body.error, /archiviert/)
|
||||
})
|
||||
|
||||
test('Vorlage bleibt Admin-Sache; README nur fuer bekannte Projekte', async () => {
|
||||
const t = await send('PATCH', '/api/admin/website-projects/p_aktiv', { ...bearer('jwt-staff'), body: { projectType: 'template' } })
|
||||
assert.equal(t.status, 403)
|
||||
const fremd = await rawGet('/api/admin/gitea/repo-readme?repoFullName=JUSN/tickte-system', bearer('jwt-staff'))
|
||||
assert.equal(fremd.status, 404)
|
||||
})
|
||||
Reference in new issue
Block a user