]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/auth-guard.service.spec.ts
f23d7dc267009ac99dc4a2b18960c9b415e331a9
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / services / auth-guard.service.spec.ts
1 import { Component, NgZone } from '@angular/core';
2 import { fakeAsync, TestBed, tick } from '@angular/core/testing';
3 import { Router, Routes } from '@angular/router';
4 import { RouterTestingModule } from '@angular/router/testing';
5
6 import { configureTestBed } from '../../../testing/unit-test-helper';
7 import { AuthGuardService } from './auth-guard.service';
8 import { AuthStorageService } from './auth-storage.service';
9
10 describe('AuthGuardService', () => {
11 let service: AuthGuardService;
12 let authStorageService: AuthStorageService;
13 let ngZone: NgZone;
14
15 @Component({ selector: 'cd-login', template: '' })
16 class LoginComponent {}
17
18 const routes: Routes = [{ path: 'login', component: LoginComponent }];
19
20 configureTestBed({
21 imports: [RouterTestingModule.withRoutes(routes)],
22 providers: [AuthGuardService, AuthStorageService],
23 declarations: [LoginComponent]
24 });
25
26 beforeEach(() => {
27 service = TestBed.get(AuthGuardService);
28 authStorageService = TestBed.get(AuthStorageService);
29 ngZone = TestBed.get(NgZone);
30 });
31
32 it('should be created', () => {
33 expect(service).toBeTruthy();
34 });
35
36 it('should allow the user if loggedIn', () => {
37 spyOn(authStorageService, 'isLoggedIn').and.returnValue(true);
38 expect(service.canActivate()).toBe(true);
39 });
40
41 it('should prevent user if not loggedIn and redirect to login page', fakeAsync(() => {
42 const router = TestBed.get(Router);
43 ngZone.run(() => {
44 expect(service.canActivate()).toBe(false);
45 });
46 tick();
47 expect(router.url).toBe('/login');
48 }));
49 });