All files / src/services/login login.service.ts

95% Statements 19/20
100% Branches 0/0
100% Functions 4/4
94.44% Lines 17/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53                      1x     3x 3x 3x   3x 3x       1x 1x   1x 1x   1x       1x 1x           1x 1x   1x       1x          
import { Injectable, EventEmitter } from '@angular/core';
 
import { ApiService } from '../api/api.service';
import { EnvironmentService } from '../environment/environment.service';
 
export interface IOnLogin {
  accessToken: string;
  refreshToken: string;
}
 
@Injectable({ providedIn: 'root' })
export class LoginService {
  public basePath: string;
 
  public onLogin = new EventEmitter<IOnLogin>();
  public onLogout = new EventEmitter();
  public onRefresh = new EventEmitter<IOnLogin>();
 
  constructor(private apiService: ApiService, private environmentService: EnvironmentService) {
    this.basePath = this.environmentService.loginApiBaseUrl;
  }
 
  public async createWithCredentials(username: string, password: string) {
    const parameters = { password, username };
    const response = await this.apiService.request('post', this.basePath, parameters);
 
    const { accessToken, refreshToken } = response;
    this.onLogin.emit({ accessToken, refreshToken });
 
    return { accessToken, refreshToken };
  }
 
  public async createWithRefreshToken(token: string) {
    const parameters = { token };
    const response = await this.apiService.request(
      'post',
      this.basePath + '/refresh-token',
      parameters,
    );
 
    const { accessToken, refreshToken } = response;
    this.onRefresh.emit({ accessToken, refreshToken });
 
    return { accessToken, refreshToken };
  }
 
  public async delete() {
    await this.apiService.request('delete', this.basePath);
 
    this.onLogout.emit();
  }
}