import { describe, it, expect } from 'vitest' import { isAdmin } from '@/access/isAdmin' import { isAdminOrEditor } from '@/access/isAdminOrEditor' import { isAuthenticatedOrPublished } from '@/access/isAuthenticatedOrPublished' // Minimal Request stub required by Payload's Access type function makeReq(user: { role: string } | null): { req: { user: { role: string } | null } } { return { req: { user } } } describe('isAdmin', () => { it('returns true for admin role', () => { expect(isAdmin(makeReq({ role: 'admin' }) as never)).toBe(true) }) it('returns false for editor role', () => { expect(isAdmin(makeReq({ role: 'editor' }) as never)).toBe(false) }) it('returns false for user role', () => { expect(isAdmin(makeReq({ role: 'user' }) as never)).toBe(false) }) it('returns false when user is null (unauthenticated)', () => { expect(isAdmin(makeReq(null) as never)).toBe(false) }) }) describe('isAdminOrEditor', () => { it('returns true for admin role', () => { expect(isAdminOrEditor(makeReq({ role: 'admin' }) as never)).toBe(true) }) it('returns true for editor role', () => { expect(isAdminOrEditor(makeReq({ role: 'editor' }) as never)).toBe(true) }) it('returns false for user role', () => { expect(isAdminOrEditor(makeReq({ role: 'user' }) as never)).toBe(false) }) it('returns false when user is null (unauthenticated)', () => { expect(isAdminOrEditor(makeReq(null) as never)).toBe(false) }) }) describe('isAuthenticatedOrPublished', () => { it('returns true for any authenticated user', () => { expect(isAuthenticatedOrPublished(makeReq({ role: 'admin' }) as never)).toBe(true) expect(isAuthenticatedOrPublished(makeReq({ role: 'editor' }) as never)).toBe(true) expect(isAuthenticatedOrPublished(makeReq({ role: 'user' }) as never)).toBe(true) }) it('returns a Payload where clause for unauthenticated requests', () => { const result = isAuthenticatedOrPublished(makeReq(null) as never) expect(result).toEqual({ _status: { equals: 'published' } }) }) it('does not return true for unauthenticated requests', () => { expect(isAuthenticatedOrPublished(makeReq(null) as never)).not.toBe(true) }) })