1 import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
2 import { fakeAsync, TestBed, tick } from '@angular/core/testing';
3 import { Routes } from '@angular/router';
4 import { RouterTestingModule } from '@angular/router/testing';
6 import { configureTestBed } from '../../../testing/unit-test-helper';
7 import { AuthStorageService } from '../services/auth-storage.service';
8 import { AuthService } from './auth.service';
10 describe('AuthService', () => {
11 let service: AuthService;
12 let httpTesting: HttpTestingController;
14 const routes: Routes = [{ path: 'logout', children: [] }];
17 providers: [AuthService, AuthStorageService],
18 imports: [HttpClientTestingModule, RouterTestingModule.withRoutes(routes)]
22 service = TestBed.get(AuthService);
23 httpTesting = TestBed.get(HttpTestingController);
30 it('should be created', () => {
31 expect(service).toBeTruthy();
34 it('should login and save the user', fakeAsync(() => {
35 const fakeCredentials = { username: 'foo', password: 'bar' };
36 const fakeResponse = { username: 'foo', token: 'tokenbytes' };
37 service.login(fakeCredentials).subscribe();
38 const req = httpTesting.expectOne('api/auth');
39 expect(req.request.method).toBe('POST');
40 expect(req.request.body).toEqual(fakeCredentials);
41 req.flush(fakeResponse);
43 expect(localStorage.getItem('dashboard_username')).toBe('foo');
44 expect(localStorage.getItem('access_token')).toBe('tokenbytes');
47 it('should logout and remove the user', fakeAsync(() => {
49 const req = httpTesting.expectOne('api/auth/logout');
50 expect(req.request.method).toBe('POST');
51 req.flush({ redirect_url: '#/login' });
53 expect(localStorage.getItem('dashboard_username')).toBe(null);