48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { vi } from 'vitest';
|
|
import { TestBed } from '@angular/core/testing';
|
|
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
|
|
import { authGuard } from './auth.guard';
|
|
import { KeycloakService } from './keycloak.service';
|
|
|
|
describe('authGuard', () => {
|
|
let mockKeycloak: { isLoggedIn: ReturnType<typeof vi.fn>; login: ReturnType<typeof vi.fn> };
|
|
|
|
beforeEach(() => {
|
|
mockKeycloak = {
|
|
isLoggedIn: vi.fn().mockReturnValue(true),
|
|
login: vi.fn().mockResolvedValue(undefined),
|
|
};
|
|
|
|
TestBed.configureTestingModule({
|
|
providers: [{ provide: KeycloakService, useValue: mockKeycloak }],
|
|
});
|
|
});
|
|
|
|
const runGuard = () =>
|
|
TestBed.runInInjectionContext(() =>
|
|
authGuard({} as ActivatedRouteSnapshot, {} as RouterStateSnapshot),
|
|
);
|
|
|
|
it('returns true when the user is logged in', () => {
|
|
mockKeycloak.isLoggedIn.mockReturnValue(true);
|
|
expect(runGuard()).toBe(true);
|
|
});
|
|
|
|
it('returns false when the user is not logged in', () => {
|
|
mockKeycloak.isLoggedIn.mockReturnValue(false);
|
|
expect(runGuard()).toBe(false);
|
|
});
|
|
|
|
it('calls login() when the user is not logged in', () => {
|
|
mockKeycloak.isLoggedIn.mockReturnValue(false);
|
|
runGuard();
|
|
expect(mockKeycloak.login).toHaveBeenCalled();
|
|
});
|
|
|
|
it('does not call login() when the user is already logged in', () => {
|
|
mockKeycloak.isLoggedIn.mockReturnValue(true);
|
|
runGuard();
|
|
expect(mockKeycloak.login).not.toHaveBeenCalled();
|
|
});
|
|
});
|