From e85f9f2b255ccbd6169b6394d93efe692917dd95 Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Mon, 12 Jun 2023 14:40:21 +0200 Subject: [PATCH 1/2] [CST-5729] fix issue with signposting endpoint url replace --- src/app/core/data/signposting-data.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/core/data/signposting-data.service.ts b/src/app/core/data/signposting-data.service.ts index d051ecf8db..34d3ffdab9 100644 --- a/src/app/core/data/signposting-data.service.ts +++ b/src/app/core/data/signposting-data.service.ts @@ -25,7 +25,8 @@ export class SignpostingDataService { * @param uuid */ getLinks(uuid: string): Observable { - const baseUrl = this.halService.getRootHref().replace('/api', ''); + const regex = /\/api$/gm; + const baseUrl = this.halService.getRootHref().replace(regex, ''); return this.restService.get(`${baseUrl}/signposting/links/${uuid}`).pipe( catchError((err) => { From 5d6edade22ff116c980465bc322ef4bf56772475 Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Mon, 12 Jun 2023 15:22:33 +0200 Subject: [PATCH 2/2] [CST-5729] turn to use app config baseurl --- .../data/signposting-data.service.spec.ts | 26 +++++++++---------- src/app/core/data/signposting-data.service.ts | 9 +++---- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/app/core/data/signposting-data.service.spec.ts b/src/app/core/data/signposting-data.service.spec.ts index c76899221e..f34ce6538f 100644 --- a/src/app/core/data/signposting-data.service.spec.ts +++ b/src/app/core/data/signposting-data.service.spec.ts @@ -1,14 +1,16 @@ import { fakeAsync, TestBed, tick } from '@angular/core/testing'; + +import { of } from 'rxjs'; + import { SignpostingDataService } from './signposting-data.service'; import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { of } from 'rxjs'; import { SignpostingLink } from './signposting-links.model'; +import { APP_CONFIG } from '../../../config/app-config.interface'; describe('SignpostingDataService', () => { let service: SignpostingDataService; let restServiceSpy: jasmine.SpyObj; - let halServiceSpy: jasmine.SpyObj; + const mocklink = { href: 'http://test.org', rel: 'test', @@ -30,21 +32,25 @@ describe('SignpostingDataService', () => { statusCode: 500 }; + const environmentRest = { + rest: { + baseUrl: 'http://localhost:8080' + } + }; + beforeEach(() => { const restSpy = jasmine.createSpyObj('DspaceRestService', ['get', 'getWithHeaders']); - const halSpy = jasmine.createSpyObj('HALEndpointService', ['getRootHref']); TestBed.configureTestingModule({ providers: [ SignpostingDataService, - { provide: DspaceRestService, useValue: restSpy }, - { provide: HALEndpointService, useValue: halSpy } + { provide: APP_CONFIG, useValue: environmentRest }, + { provide: DspaceRestService, useValue: restSpy } ] }); service = TestBed.inject(SignpostingDataService); restServiceSpy = TestBed.inject(DspaceRestService) as jasmine.SpyObj; - halServiceSpy = TestBed.inject(HALEndpointService) as jasmine.SpyObj; }); it('should be created', () => { @@ -55,8 +61,6 @@ describe('SignpostingDataService', () => { const uuid = '123'; const baseUrl = 'http://localhost:8080'; - halServiceSpy.getRootHref.and.returnValue(`${baseUrl}/api`); - restServiceSpy.get.and.returnValue(of(mockResponse)); let result: SignpostingLink[]; @@ -70,7 +74,6 @@ describe('SignpostingDataService', () => { tick(); expect(result).toEqual(expectedResult); - expect(halServiceSpy.getRootHref).toHaveBeenCalled(); expect(restServiceSpy.get).toHaveBeenCalledWith(`${baseUrl}/signposting/links/${uuid}`); })); @@ -78,8 +81,6 @@ describe('SignpostingDataService', () => { const uuid = '123'; const baseUrl = 'http://localhost:8080'; - halServiceSpy.getRootHref.and.returnValue(`${baseUrl}/api`); - restServiceSpy.get.and.returnValue(of(mockErrResponse)); let result: any; @@ -91,7 +92,6 @@ describe('SignpostingDataService', () => { tick(); expect(result).toEqual([]); - expect(halServiceSpy.getRootHref).toHaveBeenCalled(); expect(restServiceSpy.get).toHaveBeenCalledWith(`${baseUrl}/signposting/links/${uuid}`); })); }); diff --git a/src/app/core/data/signposting-data.service.ts b/src/app/core/data/signposting-data.service.ts index 34d3ffdab9..638b04dfdd 100644 --- a/src/app/core/data/signposting-data.service.ts +++ b/src/app/core/data/signposting-data.service.ts @@ -1,12 +1,12 @@ -import { Injectable } from '@angular/core'; +import { Inject, Injectable } from '@angular/core'; import { catchError, map } from 'rxjs/operators'; import { Observable, of as observableOf } from 'rxjs'; import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; import { SignpostingLink } from './signposting-links.model'; +import { APP_CONFIG, AppConfig } from '../../../config/app-config.interface'; /** * Service responsible for handling requests related to the Signposting endpoint @@ -16,7 +16,7 @@ import { SignpostingLink } from './signposting-links.model'; }) export class SignpostingDataService { - constructor(private restService: DspaceRestService, protected halService: HALEndpointService) { + constructor(@Inject(APP_CONFIG) protected appConfig: AppConfig, private restService: DspaceRestService) { } /** @@ -25,8 +25,7 @@ export class SignpostingDataService { * @param uuid */ getLinks(uuid: string): Observable { - const regex = /\/api$/gm; - const baseUrl = this.halService.getRootHref().replace(regex, ''); + const baseUrl = `${this.appConfig.rest.baseUrl}`; return this.restService.get(`${baseUrl}/signposting/links/${uuid}`).pipe( catchError((err) => {