Analyse: Zielgruppen-Bestätigung in Historie, Rücknahme bei Fehler nach Dokument-Update, handelnde Person mit Name und E-Mail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3d05472b25
commit
f401dc14d7
7 files changed
+108
-56
No files matched your search
@@ -6,8 +6,8 @@ import { useTestEnv } from './support/testEnv.js'
|
||||
import { schemaKeys } from './support/schema.js'
|
||||
import { mailSink } from './support/mailSink.js'
|
||||
|
||||
const ANALYSE_KEYS = ['accentColor', 'avvVersion', 'avvAcceptedAt', 'avvAcceptedBy', 'activatedAt', 'offSince', 'privacyTicketId', 'activatedMailAt', 'avvConsentDate', 'avvConsentChannel', 'removalTicketId', 'publishTicketId']
|
||||
const CONSENT_KEYS = ['customerId', 'projectId', 'siteKey', 'event', 'avvVersion', 'via', 'acceptedAt', 'acceptedBy', 'textformDate', 'textformChannel']
|
||||
const ANALYSE_KEYS = ['accentColor', 'avvVersion', 'avvAcceptedAt', 'avvAcceptedBy', 'activatedAt', 'offSince', 'privacyTicketId', 'activatedMailAt', 'avvConsentDate', 'avvConsentChannel', 'removalTicketId', 'publishTicketId', 'audienceConfirmed', 'audienceTextVersion']
|
||||
const CONSENT_KEYS = ['customerId', 'projectId', 'siteKey', 'event', 'avvVersion', 'via', 'acceptedAt', 'acceptedBy', 'textformDate', 'textformChannel', 'audienceConfirmed', 'audienceTextVersion']
|
||||
const aw = await startAppwriteMock({
|
||||
schema: { portalFeatures: [...schemaKeys('portalFeatures'), ...ANALYSE_KEYS], subscriptions: schemaKeys('subscriptions'), analyseConsents: CONSENT_KEYS },
|
||||
})
|
||||
@@ -221,6 +221,9 @@ test('Admin: 401, 400, 200', async () => {
|
||||
assert.equal(h.length, 1)
|
||||
assert.equal(h[0].via, 'woms')
|
||||
assert.equal(h[0].acceptedBy, 'kenso@webklar.com')
|
||||
assert.equal(h[0].audienceConfirmed, true)
|
||||
assert.equal(h[0].audienceTextVersion, config.analyse.avvVersion)
|
||||
assert.equal(d.audienceConfirmed, true)
|
||||
assert.equal(h[0].textformDate, todayBerlin())
|
||||
assert.equal(h[0].textformChannel, 'chat')
|
||||
const off = await adminPost('p6', { on: false })
|
||||
@@ -316,8 +319,18 @@ test('Kunden-Aktivierung schreibt Historie mit Sitzungsnamen; fehlende Angaben:
|
||||
await post(`${A}/activate`, { projectId: 'p3', consent: consent() }, { cookie })
|
||||
const h = consentsOf('p3')
|
||||
assert.equal(h.length, before + 1)
|
||||
assert.equal(h.at(-1).acceptedBy, 'Kunde Eins')
|
||||
assert.equal(h.at(-1).acceptedBy, 'Kunde Eins <k@example.invalid>')
|
||||
assert.equal(h.at(-1).audienceConfirmed, true)
|
||||
assert.equal(h.at(-1).via, 'portal')
|
||||
const admin = (await rawGet('/api/admin/analyse/p9', { headers: { Authorization: 'Bearer jwt-admin' } })).body
|
||||
assert.deepEqual(admin.privacy, { ok: false, missing: ['firma', 'email'] })
|
||||
})
|
||||
|
||||
test('Admin-Sitzung (Impersonation): handelnde Person ist der Admin, nicht der Kunde', async () => {
|
||||
aw.seed('websiteProjects', { $id: 'p20', customerId: 'c1', projectName: 'Imp', subdomain: 'imp', isPublic: true })
|
||||
const c = sessionCookie({ customerId: 'c1', appwriteUserId: 'u1', name: 'Kunde Eins', email: 'k@example.invalid', adminName: 'Kenso', adminEmail: 'kenso@webklar.com' })
|
||||
assert.equal((await post(`${A}/activate`, { projectId: 'p20', consent: consent() }, { cookie: c })).status, 200)
|
||||
const h = consentsOf('p20')
|
||||
assert.equal(h[0].acceptedBy, 'Kenso <kenso@webklar.com>')
|
||||
assert.equal((await featureDoc('c1', 'p20')).avvAcceptedBy, 'Kenso <kenso@webklar.com>')
|
||||
})
|
||||
Reference in new issue
Block a user