import { TestBed } from '@angular/core/testing'; import { provideRouter, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; import { provideLocationMocks } from '@angular/common/testing'; import { authGuard } from './auth.guard'; import { AuthService } from './auth.service'; describe('authGuard', () => { let authService: jasmine.SpyObj; beforeEach(() => { authService = jasmine.createSpyObj('AuthService', ['isAuthenticated']); TestBed.configureTestingModule({ providers: [ provideRouter([]), provideLocationMocks(), { provide: AuthService, useValue: authService }, ], }); }); it('redirects to login when not authenticated', () => { authService.isAuthenticated.and.returnValue(false); const route = {} as ActivatedRouteSnapshot; const state = { url: '/upload' } as RouterStateSnapshot; const result = TestBed.runInInjectionContext(() => authGuard(route, state)); expect(result).toBeTruthy(); const urlTree = result as ReturnType; expect(urlTree.toString()).toContain('/login'); }); });