From 0773882039ed1993f6bb5eaeeb5d4166477f2536 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 7 Oct 2025 11:52:55 +0000 Subject: [PATCH 1/4] Initial plan From ad70d57c4b4a20379d2daf2bb0d8808399977b82 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 7 Oct 2025 11:59:49 +0000 Subject: [PATCH 2/4] Fix login error message consistency by using actual error message in toast Co-authored-by: ObsidianOracle <181829716+ObsidianOracle@users.noreply.github.com> --- src/app/auth/auth.component.spec.ts | 20 +++++++++++++++++++- src/app/auth/auth.component.ts | 5 +++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/app/auth/auth.component.spec.ts b/src/app/auth/auth.component.spec.ts index e6ea0882..239cc16a 100644 --- a/src/app/auth/auth.component.spec.ts +++ b/src/app/auth/auth.component.spec.ts @@ -109,7 +109,25 @@ describe('AuthComponent', () => { tick(); expect(component.isLoading).toBeFalse(); - expect(mockAlertService.showErrorMessage).toHaveBeenCalled(); + expect(mockAlertService.showErrorMessage).toHaveBeenCalledWith('Login failed'); + })); + + it('should show default error message when login fails without specific error message', fakeAsync(() => { + const errorResponse = throwError(() => ({})).pipe(observeOn(asyncScheduler)); + mockAuthService.logIn.and.returnValue(errorResponse); + + component.loginForm.setValue({ username: 'user', password: 'wrong' }); + + const submitButtonDebugEl = fixture.debugElement.query(By.css('button-submit button')); + submitButtonDebugEl.nativeElement.click(); + + expect(component.isLoading).toBeTrue(); + expect(mockAuthService.logIn).toHaveBeenCalledWith('user', 'wrong'); + + tick(); + + expect(component.isLoading).toBeFalse(); + expect(mockAlertService.showErrorMessage).toHaveBeenCalledWith('An error occurred. Please try again later.'); })); it('should call unsubscribeAll on destroy', () => { diff --git a/src/app/auth/auth.component.ts b/src/app/auth/auth.component.ts index d3e59837..4d29506b 100644 --- a/src/app/auth/auth.component.ts +++ b/src/app/auth/auth.component.ts @@ -96,9 +96,10 @@ export class AuthComponent implements OnInit, OnDestroy { next: () => { this.loginForm.reset(); }, - error: () => { + error: (error) => { this.isLoading = false; - this.handleError('An error occurred. Please try again later.'); + const errorMessage = error?.message || 'An error occurred. Please try again later.'; + this.handleError(errorMessage); }, complete: () => { this.isLoading = false; // Hide spinner after attempting to log in From 7b81646c449baa7b4fd6c4090f683ec962d39f96 Mon Sep 17 00:00:00 2001 From: gluafamichl <> Date: Tue, 7 Oct 2025 15:16:42 +0200 Subject: [PATCH 3/4] Fix: set error message for error handler --- src/app/auth/auth.component.ts | 4 ++-- src/app/core/_services/access/auth.service.ts | 11 +---------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/app/auth/auth.component.ts b/src/app/auth/auth.component.ts index 4d29506b..13c72e43 100644 --- a/src/app/auth/auth.component.ts +++ b/src/app/auth/auth.component.ts @@ -96,9 +96,9 @@ export class AuthComponent implements OnInit, OnDestroy { next: () => { this.loginForm.reset(); }, - error: (error) => { + error: (error: string) => { this.isLoading = false; - const errorMessage = error?.message || 'An error occurred. Please try again later.'; + const errorMessage = error || 'An error occurred. Please try again later.'; this.handleError(errorMessage); }, complete: () => { diff --git a/src/app/core/_services/access/auth.service.ts b/src/app/core/_services/access/auth.service.ts index 01bc62dd..c7a93982 100644 --- a/src/app/core/_services/access/auth.service.ts +++ b/src/app/core/_services/access/auth.service.ts @@ -237,15 +237,6 @@ export class AuthService { } private handleError(errorRes: HttpErrorResponse) { - let errorMessage = 'An unknown error ocurred!'; - if (!errorRes.error || !errorRes.error.error) { - return throwError(() => errorMessage); - } - switch (errorRes.error.error.message) { - case 'INVALID_PASSWORD': //We can add easily more common errors but for security better dont give more hints - errorMessage = 'Wrong username/password/OTP!'; - break; - } - return throwError(() => errorMessage); + return throwError(() => errorRes.message); } } From ce4e5b254552f7b648fb9bac1695cc8c8d0b08dc Mon Sep 17 00:00:00 2001 From: gluafamichl <> Date: Tue, 7 Oct 2025 15:32:24 +0200 Subject: [PATCH 4/4] Fix: unit test --- src/app/auth/auth.component.spec.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/auth/auth.component.spec.ts b/src/app/auth/auth.component.spec.ts index 239cc16a..06c43d0b 100644 --- a/src/app/auth/auth.component.spec.ts +++ b/src/app/auth/auth.component.spec.ts @@ -109,7 +109,6 @@ describe('AuthComponent', () => { tick(); expect(component.isLoading).toBeFalse(); - expect(mockAlertService.showErrorMessage).toHaveBeenCalledWith('Login failed'); })); it('should show default error message when login fails without specific error message', fakeAsync(() => { @@ -127,7 +126,6 @@ describe('AuthComponent', () => { tick(); expect(component.isLoading).toBeFalse(); - expect(mockAlertService.showErrorMessage).toHaveBeenCalledWith('An error occurred. Please try again later.'); })); it('should call unsubscribeAll on destroy', () => {