From 7dfce0ef581aca7cb10ac1be329433c83af12cae Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 11 Oct 2019 16:02:34 +0300 Subject: [PATCH] test(core): add auth.guard.spec --- .../core/src/lib/tests/auth.guard.spec.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts diff --git a/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts new file mode 100644 index 0000000000..3ae113c948 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts @@ -0,0 +1,35 @@ +import { createServiceFactory, SpectatorService } from '@ngneat/spectator'; +import { AuthGuard } from '../guards/auth.guard'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { RouterModule, UrlTree, Router } from '@angular/router'; +import { RouterOutletComponent } from '../components'; +import { APP_BASE_HREF } from '@angular/common'; + +describe('AuthGuard', () => { + let spectator: SpectatorService; + let guard: AuthGuard; + const createService = createServiceFactory({ + service: AuthGuard, + mocks: [OAuthService], + imports: [RouterModule.forRoot([{ path: '', component: RouterOutletComponent }])], + declarations: [RouterOutletComponent], + providers: [{ provide: APP_BASE_HREF, useValue: '/' }], + }); + + beforeEach(() => { + spectator = createService(); + guard = spectator.service; + }); + + it('should return true when user logged in', () => { + spectator.get(OAuthService).hasValidAccessToken.andReturn(true); + expect(guard.canActivate(null, null)).toBe(true); + }); + + it('should return url tree when user not logged in', () => { + const router = spectator.get(Router); + const expectedUrlTree = router.createUrlTree(['/account/login'], { state: { redirectUrl: '/' } }); + spectator.get(OAuthService).hasValidAccessToken.andReturn(false); + expect(guard.canActivate(null, { url: '/' } as any) as UrlTree).toEqual(expectedUrlTree); + }); +});