Files
InsanityLab-web/tests/auth-campus.test.ts
2026-07-25 15:26:35 +02:00

51 lines
2.2 KiB
TypeScript

import { describe, it, expect, beforeEach } from 'vitest';
import type Database from 'better-sqlite3';
import { createDb } from '../src/lib/db';
import { createUser, login, getSessionUser, canAccessAdminPath, landingFor, isRole } from '../src/lib/auth';
let db: Database.Database;
beforeEach(() => { db = createDb(':memory:'); });
describe('ruolo campus', () => {
it('createUser accetta campus e getSessionUser lo ritorna', () => {
createUser(db, 'c', 'segreta123', 'campus');
expect(getSessionUser(db, login(db, 'c', 'segreta123')!)).toMatchObject({ role: 'campus' });
});
it('isRole valida campus', () => {
expect(isRole('campus')).toBe(true);
});
it('landingFor porta campus alla sezione campus', () => {
expect(landingFor('campus')).toBe('/campus');
});
});
describe('canAccessAdminPath con campus', () => {
it('campus: sezione campus e logout sì, resto del pannello no', () => {
expect(canAccessAdminPath('campus', '/campus')).toBe(true);
expect(canAccessAdminPath('campus', '/campus/')).toBe(true);
expect(canAccessAdminPath('campus', '/campus/corso-base/lezione-01')).toBe(true);
expect(canAccessAdminPath('campus', '/campus/assets/slide/x.png')).toBe(true);
expect(canAccessAdminPath('campus', '/admin/logout')).toBe(true);
expect(canAccessAdminPath('campus', '/admin')).toBe(false);
expect(canAccessAdminPath('campus', '/admin/new')).toBe(false);
expect(canAccessAdminPath('campus', '/admin/content')).toBe(false);
expect(canAccessAdminPath('campus', '/admin/users')).toBe(false);
expect(canAccessAdminPath('campus', '/api/admin/posts')).toBe(false);
expect(canAccessAdminPath('campus', '/api/admin/upload')).toBe(false);
});
it('admin accede alla sezione campus', () => {
expect(canAccessAdminPath('admin', '/campus')).toBe(true);
expect(canAccessAdminPath('admin', '/campus/corso-base')).toBe(true);
});
it('superuser e user non accedono alla sezione campus', () => {
expect(canAccessAdminPath('superuser', '/campus')).toBe(false);
expect(canAccessAdminPath('superuser', '/campus/corso-base')).toBe(false);
expect(canAccessAdminPath('user', '/campus')).toBe(false);
expect(canAccessAdminPath('user', '/campus/assets/slide/x.png')).toBe(false);
});
});