Implemented the possibility ofa hidden user for playstore tests
This commit is contained in:
@@ -26,7 +26,8 @@ vi.mock('../server/utils/auth.js', () => ({
|
||||
user.roles = ['mitglied']
|
||||
}
|
||||
return user
|
||||
})
|
||||
}),
|
||||
isHiddenUser: vi.fn(user => user?.hidden === true || user?.invisible === true || user?.isHidden === true || user?.systemAccount === true || user?.accountType === 'playstore_review')
|
||||
}))
|
||||
|
||||
vi.mock('nodemailer', () => {
|
||||
@@ -96,6 +97,20 @@ describe('CMS User Management Endpoints', () => {
|
||||
expect(response.users[0]).not.toHaveProperty('password')
|
||||
expect(response.users).toHaveLength(1)
|
||||
})
|
||||
|
||||
|
||||
it('blendet unsichtbare Playstore-Benutzer auch für Admins aus', async () => {
|
||||
const event = adminEvent()
|
||||
authUtils.readUsers.mockResolvedValue([
|
||||
{ id: '1', email: 'a@b.de', name: 'Anna', roles: ['mitglied'], active: true },
|
||||
{ id: '2', email: 'review@club.de', name: 'Playstore Review', roles: ['mitglied'], active: true, accountType: 'playstore_review' }
|
||||
])
|
||||
|
||||
const response = await usersListHandler(event)
|
||||
|
||||
expect(response.users).toHaveLength(1)
|
||||
expect(response.users[0].email).toBe('a@b.de')
|
||||
})
|
||||
})
|
||||
|
||||
describe('POST /api/cms/users/approve', () => {
|
||||
@@ -239,5 +254,31 @@ describe('CMS User Management Endpoints', () => {
|
||||
expect(response.attempts).toHaveLength(1)
|
||||
expect(response.attempts[0]).toMatchObject({ requestId: 'r1', failed: true })
|
||||
})
|
||||
|
||||
|
||||
it('blendet unsichtbare Benutzer und ihre Reset-Logs in der Diagnose aus', async () => {
|
||||
const event = adminEvent()
|
||||
event.__query = { email: 'review@club.de', failedOnly: 'false' }
|
||||
authUtils.hasRole.mockReturnValue(true)
|
||||
authUtils.readUsers.mockResolvedValue([
|
||||
{ id: '2', email: 'review@club.de', name: 'Playstore Review', active: true, accountType: 'playstore_review' }
|
||||
])
|
||||
passwordResetLog.readPasswordResetLogs.mockResolvedValue([
|
||||
{
|
||||
requestId: 'r-hidden',
|
||||
ts: '2026-05-27T10:00:01.000Z',
|
||||
emailMasked: 're***@cl***.de',
|
||||
emailFingerprint: 'fingerprint:review@club.de',
|
||||
ip: '127.0.0.1',
|
||||
step: 'request_completed',
|
||||
status: 'failed'
|
||||
}
|
||||
])
|
||||
|
||||
const response = await passwordResetDiagnosticsHandler(event)
|
||||
|
||||
expect(response.matchingUsers).toHaveLength(0)
|
||||
expect(response.attempts).toHaveLength(0)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -31,7 +31,9 @@ vi.mock('../server/utils/auth.js', () => ({
|
||||
if (!user) return false
|
||||
const userRoles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
|
||||
return userRoles.includes(role)
|
||||
})
|
||||
}),
|
||||
normalizeUserEmail: vi.fn(email => String(email || '').trim().toLowerCase()),
|
||||
isHiddenUser: vi.fn(user => user?.hidden === true || user?.invisible === true || user?.isHidden === true || user?.systemAccount === true || user?.accountType === 'playstore_review')
|
||||
}))
|
||||
|
||||
vi.mock('../server/utils/members.js', () => ({
|
||||
@@ -97,6 +99,28 @@ describe('Members API Endpoints', () => {
|
||||
expect(response.members).toHaveLength(1)
|
||||
expect(response.members[0].name).toBe('Anna Muster')
|
||||
})
|
||||
|
||||
|
||||
it('blendet unsichtbare Playstore-Benutzer und passende manuelle Einträge aus', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
authUtils.verifyToken.mockReturnValue({ id: '1' })
|
||||
memberUtils.readMembers.mockResolvedValue([
|
||||
{ id: 'm1', firstName: 'Anna', lastName: 'Muster', email: 'anna@club.de' },
|
||||
{ id: 'm2', firstName: 'Play', lastName: 'Store', email: 'review@club.de' }
|
||||
])
|
||||
authUtils.readUsers.mockResolvedValue([
|
||||
{ id: 'u1', name: 'Ben Nutzer', email: 'ben@club.de', role: 'mitglied', active: true },
|
||||
{ id: 'u2', name: 'Playstore Review', email: 'review@club.de', roles: ['mitglied'], active: true, accountType: 'playstore_review' }
|
||||
])
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '1', role: 'mitglied' })
|
||||
|
||||
const response = await membersGetHandler(event)
|
||||
|
||||
expect(response.members.map(member => member.email || member.name)).not.toContain('review@club.de')
|
||||
expect(response.members.map(member => member.name)).not.toContain('Play Store')
|
||||
expect(response.members.map(member => member.name)).not.toContain('Playstore Review')
|
||||
expect(response.members).toHaveLength(2)
|
||||
})
|
||||
})
|
||||
|
||||
describe('POST /api/members', () => {
|
||||
|
||||
@@ -19,7 +19,9 @@ vi.mock('../server/utils/auth.js', () => ({
|
||||
verifyToken: vi.fn(),
|
||||
getUserFromToken: vi.fn(),
|
||||
readUsers: vi.fn().mockResolvedValue([]),
|
||||
migrateUserRoles: vi.fn(user => user)
|
||||
migrateUserRoles: vi.fn(user => user),
|
||||
normalizeUserEmail: vi.fn(email => String(email || '').trim().toLowerCase()),
|
||||
isHiddenUser: vi.fn(user => user?.hidden === true || user?.invisible === true || user?.isHidden === true || user?.systemAccount === true || user?.accountType === 'playstore_review')
|
||||
}))
|
||||
|
||||
vi.mock('../server/utils/members.js', () => ({
|
||||
@@ -264,5 +266,27 @@ describe('Spielplan, Mannschaften & öffentliche Endpoints', () => {
|
||||
|
||||
expect(result.birthdays).toHaveLength(0)
|
||||
})
|
||||
|
||||
|
||||
it('blendet unsichtbare Playstore-Benutzer auch für Vorstand aus', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
const inDays = 7
|
||||
const targetDate = new Date()
|
||||
targetDate.setDate(targetDate.getDate() + inDays)
|
||||
const geburtsdatum = `${targetDate.getFullYear() - 30}-${String(targetDate.getMonth() + 1).padStart(2, '0')}-${String(targetDate.getDate()).padStart(2, '0')}`
|
||||
|
||||
authUtils.verifyToken.mockReturnValue({ id: 'v1' })
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: 'v1', roles: ['vorstand'], active: true })
|
||||
authUtils.readUsers.mockResolvedValue([
|
||||
{ id: 'u2', name: 'Playstore Review', email: 'review@club.de', active: true, geburtsdatum, accountType: 'playstore_review' }
|
||||
])
|
||||
memberUtils.readMembers.mockResolvedValue([
|
||||
{ firstName: 'Play', lastName: 'Store', email: 'review@club.de', geburtsdatum, visibility: { showBirthday: true } }
|
||||
])
|
||||
|
||||
const result = await birthdaysHandler(event)
|
||||
|
||||
expect(result.birthdays).toHaveLength(0)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user