a7d918d241
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
51 lines
2.2 KiB
TypeScript
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);
|
|
});
|
|
});
|