Files
InsanityLab-web/tests/longevity/ruoli.test.ts
T

96 lines
3.5 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { canAccessAdminPath, isProtectedPath, landingFor, isRole } from '../../src/lib/auth';
describe('accesso alle rotte longevity', () => {
it('il cliente entra nel proprio spazio', () => {
expect(canAccessAdminPath('cliente', '/longevity/io')).toBe(true);
});
it('il cliente NON entra nel gestionale', () => {
expect(canAccessAdminPath('cliente', '/longevity/gestionale')).toBe(false);
});
it('il trainer entra in entrambi', () => {
expect(canAccessAdminPath('trainer', '/longevity/io')).toBe(true);
expect(canAccessAdminPath('trainer', '/longevity/gestionale')).toBe(true);
});
it('il cliente non entra nelle altre piattaforme ne nel blog', () => {
expect(canAccessAdminPath('cliente', '/campus')).toBe(false);
expect(canAccessAdminPath('cliente', '/admin/content')).toBe(false);
expect(canAccessAdminPath('cliente', '/admin/posts')).toBe(false);
});
it('il trainer non entra nelle altre piattaforme ne nel blog', () => {
expect(canAccessAdminPath('trainer', '/campus')).toBe(false);
expect(canAccessAdminPath('trainer', '/admin/content')).toBe(false);
expect(canAccessAdminPath('trainer', '/admin/posts')).toBe(false);
});
it('il ruolo piattaforme non eredita longevity', () => {
expect(canAccessAdminPath('piattaforme', '/longevity/gestionale')).toBe(false);
});
it('admin passa sempre', () => {
expect(canAccessAdminPath('admin', '/longevity/gestionale')).toBe(true);
});
});
describe('isProtectedPath — quali rotte sono protette dal middleware', () => {
it('longevity è protetto', () => {
expect(isProtectedPath('/longevity/io')).toBe(true);
expect(isProtectedPath('/longevity/gestionale')).toBe(true);
expect(isProtectedPath('/api/longevity/qualcosa')).toBe(true);
});
it('i percorsi già esistenti restano protetti', () => {
expect(isProtectedPath('/admin')).toBe(true);
expect(isProtectedPath('/admin/content')).toBe(true);
expect(isProtectedPath('/api/admin/content')).toBe(true);
expect(isProtectedPath('/campus')).toBe(true);
expect(isProtectedPath('/piattaforme')).toBe(true);
});
it('il login e le pagine pubbliche non sono protetti', () => {
expect(isProtectedPath('/admin/login')).toBe(false);
expect(isProtectedPath('/blog')).toBe(false);
expect(isProtectedPath('/')).toBe(false);
});
});
describe('landingFor — indirizzo di atterraggio per ruolo', () => {
it('cliente atterra su longevity/io', () => {
expect(landingFor('cliente')).toBe('/longevity/io');
});
it('trainer atterra su longevity/gestionale', () => {
expect(landingFor('trainer')).toBe('/longevity/gestionale');
});
it('i ruoli già esistenti restano uguali', () => {
expect(landingFor('superuser')).toBe('/admin/content');
expect(landingFor('piattaforme')).toBe('/piattaforme');
expect(landingFor('admin')).toBe('/admin');
expect(landingFor('user')).toBe('/admin');
});
});
describe('isRole — validazione dei ruoli', () => {
it('cliente e trainer sono ruoli validi', () => {
expect(isRole('cliente')).toBe(true);
expect(isRole('trainer')).toBe(true);
});
it('i ruoli già esistenti restano validi', () => {
expect(isRole('admin')).toBe(true);
expect(isRole('superuser')).toBe(true);
expect(isRole('user')).toBe(true);
expect(isRole('piattaforme')).toBe(true);
});
it('campus e stringhe inventate non sono ruoli', () => {
expect(isRole('campus')).toBe(false);
expect(isRole('qualsiasi-cosa')).toBe(false);
});
});