45 lines
1.5 KiB
TypeScript
45 lines
1.5 KiB
TypeScript
import { TestBed } from '@angular/core/testing';
|
|
import { ActivatedRouteSnapshot, provideRouter, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
|
|
import Keycloak from 'keycloak-js';
|
|
|
|
import { requireModeratoreGuard } from './require-moderatore.guard';
|
|
|
|
const route = {} as ActivatedRouteSnapshot;
|
|
const state = {} as RouterStateSnapshot;
|
|
|
|
function setup(roles: string[]): void {
|
|
const keycloakMock = { tokenParsed: { realm_access: { roles } } };
|
|
|
|
TestBed.configureTestingModule({
|
|
providers: [provideRouter([]), { provide: Keycloak, useValue: keycloakMock }]
|
|
});
|
|
}
|
|
|
|
describe('requireModeratoreGuard', () => {
|
|
it('lascia proseguire la navigazione se l\'utente ha il ruolo moderatore', () => {
|
|
setup(['moderatore']);
|
|
|
|
const result = TestBed.runInInjectionContext(() => requireModeratoreGuard(route, state));
|
|
|
|
expect(result).toBe(true);
|
|
});
|
|
|
|
it('reindirizza alla home per un utente senza il ruolo moderatore', () => {
|
|
setup(['censito']);
|
|
|
|
const result = TestBed.runInInjectionContext(() => requireModeratoreGuard(route, state));
|
|
|
|
const router = TestBed.inject(Router);
|
|
expect((result as UrlTree).toString()).toBe(router.parseUrl('/').toString());
|
|
});
|
|
|
|
it('reindirizza alla home se il token non ha ruoli', () => {
|
|
setup([]);
|
|
|
|
const result = TestBed.runInInjectionContext(() => requireModeratoreGuard(route, state));
|
|
|
|
const router = TestBed.inject(Router);
|
|
expect((result as UrlTree).toString()).toBe(router.parseUrl('/').toString());
|
|
});
|
|
});
|