import { TestBed } from '@angular/core/testing'; import { provideHttpClient } from '@angular/common/http'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { Router, UrlTree } from '@angular/router'; import { provideRouter } from '@angular/router'; import { authGuard } from './auth-guard'; import { Session } from './session'; import { provideApiConfiguration } from '../api/api-configuration'; describe('authGuard', () => { let session: Session; let router: Router; beforeEach(() => { localStorage.clear(); TestBed.configureTestingModule({ providers: [ provideHttpClient(), provideHttpClientTesting(), provideApiConfiguration('http://api.test'), provideRouter([]), ], }); session = TestBed.inject(Session); router = TestBed.inject(Router); }); function runGuard() { return TestBed.runInInjectionContext(() => authGuard({} as any, {} as any)); } it('allows navigation when authenticated', () => { session.token.set('tok-abc'); expect(runGuard()).toBe(true); }); it('redirects to /login when not authenticated', () => { const result = runGuard(); expect(result).not.toBe(true); expect((result as UrlTree).toString()).toBe(router.createUrlTree(['/login']).toString()); }); });