Update package dependencies to vitest v4.0.16 and enhance role management in auth utilities with new role-checking functions in tests
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 57s

This commit is contained in:
Torsten Schulz (local)
2025-12-20 10:25:16 +01:00
parent 42b9a10437
commit 4f453f77bc
9 changed files with 238 additions and 730 deletions

892
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -41,7 +41,7 @@
"postcss": "^8.4.0",
"supertest": "^7.1.0",
"tailwindcss": "^3.4.0",
"vitest": "^2.1.4",
"vitest": "^4.0.16",
"vue-eslint-parser": "^10.2.0"
}
}

View File

@@ -13,7 +13,33 @@ vi.mock('../server/utils/auth.js', () => {
deleteSession: vi.fn(),
getUserFromToken: vi.fn(),
readSessions: vi.fn(),
writeSessions: vi.fn()
writeSessions: vi.fn(),
migrateUserRoles: vi.fn((user) => {
if (!user) return user
if (Array.isArray(user.roles)) return user
if (user.role) {
user.roles = [user.role]
delete user.role
} else {
user.roles = ['mitglied']
}
return user
}),
hasRole: vi.fn((user, role) => {
if (!user) return false
const roles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
return roles.includes(role)
}),
hasAnyRole: vi.fn((user, ...roles) => {
if (!user) return false
const userRoles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
return roles.some(r => userRoles.includes(r))
}),
hasAllRoles: vi.fn((user, ...roles) => {
if (!user) return false
const userRoles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
return roles.every(r => userRoles.includes(r))
})
}
})

View File

@@ -3,7 +3,12 @@ import { createEvent, mockSuccessReadBody } from './setup'
import fs from 'fs/promises'
vi.mock('../server/utils/auth.js', () => ({
getUserFromToken: vi.fn()
getUserFromToken: vi.fn(),
hasAnyRole: vi.fn((user, ...roles) => {
if (!user) return false
const userRoles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
return roles.some(r => userRoles.includes(r))
})
}))
vi.mock('multer', () => {

View File

@@ -4,7 +4,12 @@ import { createEvent, mockSuccessReadBody } from './setup'
vi.mock('../server/utils/auth.js', () => ({
getUserFromToken: vi.fn(),
readUsers: vi.fn(),
writeUsers: vi.fn()
writeUsers: vi.fn(),
hasAnyRole: vi.fn((user, ...roles) => {
if (!user) return false
const userRoles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
return roles.some(r => userRoles.includes(r))
})
}))
vi.mock('nodemailer', () => {

View File

@@ -7,7 +7,12 @@ vi.mock('../server/utils/auth.js', () => ({
getUserFromToken: vi.fn(),
verifyToken: vi.fn(),
readUsers: vi.fn(),
writeUsers: vi.fn()
writeUsers: vi.fn(),
hasAnyRole: vi.fn((user, ...roles) => {
if (!user) return false
const userRoles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
return roles.some(r => userRoles.includes(r))
})
}))
vi.mock('sharp', () => ({

View File

@@ -8,7 +8,23 @@ vi.mock('../server/utils/auth.js', () => ({
readMembers: vi.fn(),
writeUsers: vi.fn(),
readSessions: vi.fn(),
writeSessions: vi.fn()
writeSessions: vi.fn(),
migrateUserRoles: vi.fn((user) => {
if (!user) return user
if (Array.isArray(user.roles)) return user
if (user.role) {
user.roles = [user.role]
delete user.role
} else {
user.roles = ['mitglied']
}
return user
}),
hasAnyRole: vi.fn((user, ...roles) => {
if (!user) return false
const userRoles = Array.isArray(user.roles) ? user.roles : (user.role ? [user.role] : [])
return roles.some(r => userRoles.includes(r))
})
}))
vi.mock('../server/utils/members.js', () => ({

View File

@@ -27,6 +27,9 @@ import spielplaeneHandler from '../server/api/spielplaene.get.js'
describe('Öffentliche API-Endpunkte', () => {
beforeEach(() => {
// Setze SMTP-Credentials für Tests
process.env.SMTP_USER = 'test@example.com'
process.env.SMTP_PASS = 'test-password'
vi.restoreAllMocks()
vi.clearAllMocks()
})

View File

@@ -64,6 +64,10 @@ global.createError = ({ statusCode = 500, statusMessage, message }: any) => {
global.useRuntimeConfig = () => ({
encryptionKey: 'test-encryption-key',
smtpHost: 'localhost',
smtpPort: 1025,
smtpUser: 'test',
smtpPass: 'pass',
smtp: {
host: 'localhost',
port: 1025,