Browse Source

test: fix auth guard testing errors

pull/6343/head
mehmet-erim 6 years ago
parent
commit
2fa782ac51
  1. 2
      npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts
  2. 24
      npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts

2
npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts

@ -13,7 +13,7 @@ export class AuthGuard implements CanActivate {
canActivate(): Observable<boolean> | boolean | UrlTree { canActivate(): Observable<boolean> | boolean | UrlTree {
const hasValidAccessToken = this.oauthService.hasValidAccessToken(); const hasValidAccessToken = this.oauthService.hasValidAccessToken();
if (hasValidAccessToken) { if (hasValidAccessToken) {
return hasValidAccessToken; return true;
} }
this.authService.initLogin(); this.authService.initLogin();

24
npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts

@ -1,19 +1,14 @@
import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest'; import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest';
import { AuthGuard } from '../guards/auth.guard';
import { OAuthService } from 'angular-oauth2-oidc'; import { OAuthService } from 'angular-oauth2-oidc';
import { RouterModule, UrlTree, Router } from '@angular/router'; import { AuthGuard } from '../guards/auth.guard';
import { RouterOutletComponent } from '../components'; import { AuthService } from '../services/auth.service';
import { APP_BASE_HREF } from '@angular/common';
describe('AuthGuard', () => { describe('AuthGuard', () => {
let spectator: SpectatorService<AuthGuard>; let spectator: SpectatorService<AuthGuard>;
let guard: AuthGuard; let guard: AuthGuard;
const createService = createServiceFactory({ const createService = createServiceFactory({
service: AuthGuard, service: AuthGuard,
mocks: [OAuthService, Router], mocks: [OAuthService, AuthService],
imports: [RouterModule.forRoot([{ path: '', component: RouterOutletComponent }], { relativeLinkResolution: 'legacy' })],
declarations: [RouterOutletComponent],
providers: [{ provide: APP_BASE_HREF, useValue: '/' }],
}); });
beforeEach(() => { beforeEach(() => {
@ -23,16 +18,15 @@ describe('AuthGuard', () => {
it('should return true when user logged in', () => { it('should return true when user logged in', () => {
spectator.inject(OAuthService).hasValidAccessToken.andReturn(true); spectator.inject(OAuthService).hasValidAccessToken.andReturn(true);
expect(guard.canActivate(null, null)).toBe(true); expect(guard.canActivate()).toBe(true);
}); });
it('should return navigate to login page with redirectUrl state', () => { it('should execute the initLogin method of the authService', () => {
const router = spectator.inject(Router); const authService = spectator.inject(AuthService);
spectator.inject(OAuthService).hasValidAccessToken.andReturn(false); spectator.inject(OAuthService).hasValidAccessToken.andReturn(false);
const initLoginSpy = jest.spyOn(authService, 'initLogin');
expect(guard.canActivate(null, { url: '/' } as any)).toBe(true); expect(guard.canActivate()).toBe(true);
expect(router.navigate).toHaveBeenCalledWith(['/account/login'], { expect(initLoginSpy).toHaveBeenCalled();
state: { redirectUrl: '/' },
});
}); });
}); });

Loading…
Cancel
Save