From b4078a9a9243bb68f64a27e3e5456563589d1cc7 Mon Sep 17 00:00:00 2001 From: Helmut Hutzler <helmut.hutzler@th-nuernberg.de> Date: Tue, 29 Nov 2022 15:28:28 +0100 Subject: [PATCH] Fixing generic Error handler with new style for http error handling --- package.json | 2 +- proxy.conf.dev.json | 14 ++++++++++++++ src/app/account-management/account-management.html | 3 ++- src/app/account.service.spec.ts | 6 +++--- src/app/account.service.ts | 13 ++++++++----- src/app/app.component.spec.ts | 2 +- src/environments/environment.ts | 9 +++++---- 7 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 proxy.conf.dev.json diff --git a/package.json b/package.json index 45db6b2..5c4a694 100644 --- a/package.json +++ b/package.json @@ -48,4 +48,4 @@ "karma-jasmine-html-reporter": "~1.7.0", "typescript": "~4.6.4" } -} \ No newline at end of file +} diff --git a/proxy.conf.dev.json b/proxy.conf.dev.json new file mode 100644 index 0000000..7db5adc --- /dev/null +++ b/proxy.conf.dev.json @@ -0,0 +1,14 @@ +{ + "/auth/*": { + "target": "https://kube-master-h1.informatik.fh-nuernberg.de", + "secure": false, + "logLevel": "debug", + "changeOrigin": true + }, + "/api/*": { + "target": "http://localhost:8080", + "secure": false, + "logLevel": "debug", + "changeOrigin": true + } +} diff --git a/src/app/account-management/account-management.html b/src/app/account-management/account-management.html index 6f66a2b..dd307cd 100644 --- a/src/app/account-management/account-management.html +++ b/src/app/account-management/account-management.html @@ -114,7 +114,8 @@ <hr> <h4>Keycloak Server Status</h4> <pre> - Quarkus Http Code : {{quarkusCode}} Quarkus HTTP Message : {{quarkusMessage}} + Quarkus Http Code : {{quarkusCode}} + Quarkus HTTP Message : {{quarkusMessage}} Keycloak Http Code : {{keycloakCode}} Keycloak HTTP Message : {{keycloakStatus}} Keycloak Http Method : {{keycloakMethod}} Keycloak User : {{keycloakUser}} Keycloak Url : {{keycloakUrl}} diff --git a/src/app/account.service.spec.ts b/src/app/account.service.spec.ts index 998ead9..c4ee6f5 100644 --- a/src/app/account.service.spec.ts +++ b/src/app/account.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { AccountSvcService } from './account.service'; +import { AccountService } from './account.service'; describe('AccountSvcService', () => { - let service: AccountSvcService; + let service: AccountService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(AccountSvcService); + service = TestBed.inject(AccountService); }); it('should be created', () => { diff --git a/src/app/account.service.ts b/src/app/account.service.ts index 4ff7b03..f0a1135 100644 --- a/src/app/account.service.ts +++ b/src/app/account.service.ts @@ -168,23 +168,26 @@ export class AccountService implements OnInit { /* * * Handle Http operation that failed and log some data - * Stop processing by rethrowing the original error + * Stop processing by rethrowing a error object * * @param operation - name of the operation that failed */ handleError(operation = 'operation' ) { + let myError = new Error(); return (error: any ) => { let errorMessage = 'Unknown error!'; if (error.error instanceof ErrorEvent) { // Client-side errors - errorMessage = `Error: ${error.error.message}`; + errorMessage = `Client-side Error: ${error.error.message}`; + Object.assign(myError, { status: -2, message: errorMessage}); } else { // Server-side errors - errorMessage = `Error Code: ${error.status} --- Message: ${error.message}`; + errorMessage = `Server-side Error: ${error.status} --- Message: ${error.message}`; + Object.assign(myError, { status: error.status, message: error.message}); } this.messageService.add(`ERROR: ${operation} failed: ${errorMessage}`); - // rethrow the error caught by catchError - need to return an observable - return throwError(() => error); + + throw myError; } } } diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index a22e5f4..6203051 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -16,7 +16,7 @@ describe('AppComponent', () => { expect(app).toBeTruthy(); }); - it(`should have as title 'sample-code-flow-auto-login-all-routes'`, () => { + it(`should have as title 'angular-oidc.authorization.sample'`, () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app.title).toEqual('sample-code-flow-auto-login-all-routes'); diff --git a/src/environments/environment.ts b/src/environments/environment.ts index b55b37b..d251bc7 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -6,10 +6,11 @@ declare const require: any; export const environment = { production: false, - // keycloakURL: 'http://localhost:8280/auth/', - // keycloakURL: '/auth/', - keycloakURL: 'https://kube-master-h1.informatik.fh-nuernberg.de/auth/', - apiURL: 'http://localhost:8080/api', + // keycloakURL: 'http://localhost:8280/auth/' + keycloakURL: '/auth/', + // keycloakURL: 'https://kube-master-h1.informatik.fh-nuernberg.de/auth/', + // apiURL: 'http://localhost:8080/api', + apiURL: '/api', appVersion: require('../../package.json').version }; -- GitLab