Files
scouthub/scouthub-magazzino-fe/src/app/moderazione/require-moderatore.guard.spec.ts
T

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());
});
});