From 4be6778a7b87743ce1082875163ba93521b28f5d Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Tue, 4 Mar 2025 17:04:44 +0000 Subject: [PATCH 01/18] add ApiMockServer as a generic mock server and use on incentives gateway tests --- .../incentives/GetIEPReviewHistoryTest.kt | 8 ++--- .../mockservers/ApiMockServer.kt | 30 +++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt index 2d68a0fe4..d9fad5212 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt @@ -15,8 +15,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.IncentivesGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.IncentivesApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -31,7 +31,7 @@ class GetIEPReviewHistoryTest( ) : DescribeSpec({ val hmppsId = "A1234AA" val path = "/incentive-reviews/prisoner/$hmppsId" - val incentivesApiMockServer = IncentivesApiMockServer() + val incentivesApiMockServer = ApiMockServer(4008) beforeEach { incentivesApiMockServer.start() @@ -51,7 +51,7 @@ class GetIEPReviewHistoryTest( } it("gets the data from the gateway") { - incentivesApiMockServer.stubIncentivesApiResponse( + incentivesApiMockServer.stubForGet( path = path, body = """ @@ -95,7 +95,7 @@ class GetIEPReviewHistoryTest( } it("should return error when bad request is returned") { - incentivesApiMockServer.stubIncentivesApiResponse(path, "", HttpStatus.BAD_REQUEST) + incentivesApiMockServer.stubForGet(path, "", HttpStatus.BAD_REQUEST) val response = incentivesGateway.getIEPReviewHistory(hmppsId) response.errors.shouldBe(listOf(UpstreamApiError(UpstreamApi.INCENTIVES, UpstreamApiError.Type.BAD_REQUEST))) } diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt new file mode 100644 index 000000000..460aae990 --- /dev/null +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt @@ -0,0 +1,30 @@ +package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers + +import com.github.tomakehurst.wiremock.WireMockServer +import com.github.tomakehurst.wiremock.client.WireMock.aResponse +import com.github.tomakehurst.wiremock.client.WireMock.get +import com.github.tomakehurst.wiremock.client.WireMock.matching +import org.springframework.http.HttpStatus + +class ApiMockServer( + private val port: Int, +) : WireMockServer(port) { + fun stubForGet( + path: String, + body: String, + status: HttpStatus = HttpStatus.OK, + ) { + stubFor( + get(path) + .withHeader( + "Authorization", + matching("Bearer ${HmppsAuthMockServer.TOKEN}"), + ).willReturn( + aResponse() + .withHeader("Content-Type", "application/json") + .withStatus(status.value()) + .withBody(body.trimIndent()), + ), + ) + } +} From 2859ce236e1930d96bd5094c9688c312345e35d5 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Tue, 4 Mar 2025 17:09:11 +0000 Subject: [PATCH 02/18] switch prison visits gateway to use generic ApiMockServer --- .../gateways/prisonVisits/GetVisitsGatewayTest.kt | 8 ++++---- .../prisonVisits/PrisonVisitsGatewayTest.kt | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt index 2dedf66dd..7b86b9066 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt @@ -14,8 +14,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PrisonVisitsGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.PrisonVisitsApiMockServer @ActiveProfiles("test") @ContextConfiguration( @@ -37,7 +37,7 @@ class GetVisitsGatewayTest( val page = 1 val size = 10 val pathWithQueryParams = "$path?prisonId=$prisonId&visitStatus=$visitStatus&page=$page&size=$size&prisonerId=$hmppsId&visitStartDate=$fromDate&visitEndDate=$toDate" - val prisonVisitsApiMockServer = PrisonVisitsApiMockServer() + val prisonVisitsApiMockServer = ApiMockServer(4007) beforeEach { prisonVisitsApiMockServer.start() @@ -128,7 +128,7 @@ class GetVisitsGatewayTest( } """.trimIndent() - prisonVisitsApiMockServer.stubPrisonVisitsApiResponse(pathWithQueryParams, body = exampleData, HttpStatus.OK) + prisonVisitsApiMockServer.stubForGet(pathWithQueryParams, body = exampleData, HttpStatus.OK) val response = prisonVisitsGateway.getVisits(prisonId, hmppsId, fromDate, toDate, visitStatus, page, size) response.data.shouldNotBeNull() response.data!! @@ -248,7 +248,7 @@ class GetVisitsGatewayTest( } """.trimIndent() - prisonVisitsApiMockServer.stubPrisonVisitsApiResponse(pathWithQueryParams, body = exampleData, HttpStatus.OK) + prisonVisitsApiMockServer.stubForGet(pathWithQueryParams, body = exampleData, HttpStatus.OK) val response = prisonVisitsGateway.getVisits(prisonId, hmppsId, fromDate, toDate, visitStatus, page, size) response.data.shouldNotBeNull() diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt index 6821cf925..9cd5df30e 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt @@ -15,8 +15,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PrisonVisitsGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.PrisonVisitsApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -36,7 +36,7 @@ class PrisonVisitsGatewayTest( val prisonerId = "AF34567G" val futuresPath = "/visits/search/future/$prisonerId" - val prisonVisitsApiMockServer = PrisonVisitsApiMockServer() + val prisonVisitsApiMockServer = ApiMockServer(4007) beforeEach { prisonVisitsApiMockServer.start() @@ -56,7 +56,7 @@ class PrisonVisitsGatewayTest( } it("returns a 404 when visit is not found") { - prisonVisitsApiMockServer.stubPrisonVisitsApiResponse(path, body = "", HttpStatus.NOT_FOUND) + prisonVisitsApiMockServer.stubForGet(path, body = "", HttpStatus.NOT_FOUND) val response = prisonVisitsGateway.getVisitByReference(visitReference) response.errors.shouldHaveSize(1) @@ -111,7 +111,7 @@ class PrisonVisitsGatewayTest( } """.trimIndent() - prisonVisitsApiMockServer.stubPrisonVisitsApiResponse(path, body = exampleData, HttpStatus.OK) + prisonVisitsApiMockServer.stubForGet(path, body = exampleData, HttpStatus.OK) val response = prisonVisitsGateway.getVisitByReference(visitReference) response.data.shouldNotBeNull() @@ -170,7 +170,7 @@ class PrisonVisitsGatewayTest( ] """.trimIndent() - prisonVisitsApiMockServer.stubPrisonVisitsApiResponse(futuresPath, body = exampleData, HttpStatus.OK) + prisonVisitsApiMockServer.stubForGet(futuresPath, body = exampleData, HttpStatus.OK) val response = prisonVisitsGateway.getFutureVisits(prisonerId) response.data.shouldNotBeNull() @@ -182,7 +182,7 @@ class PrisonVisitsGatewayTest( } it("returns an empty list when no future visits found") { - prisonVisitsApiMockServer.stubPrisonVisitsApiResponse(futuresPath, body = "[]", HttpStatus.OK) + prisonVisitsApiMockServer.stubForGet(futuresPath, body = "[]", HttpStatus.OK) val response = prisonVisitsGateway.getFutureVisits(prisonerId) response.data.shouldNotBeNull() @@ -190,7 +190,7 @@ class PrisonVisitsGatewayTest( } it("returns a 400 response when prisoner Id is invalid") { - prisonVisitsApiMockServer.stubPrisonVisitsApiResponse(futuresPath, body = "", HttpStatus.BAD_REQUEST) + prisonVisitsApiMockServer.stubForGet(futuresPath, body = "", HttpStatus.BAD_REQUEST) val response = prisonVisitsGateway.getFutureVisits(prisonerId) response.data.shouldBe(null) From e52afabbf268be5be1bd54722b693ff5a649e630 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Tue, 4 Mar 2025 17:09:58 +0000 Subject: [PATCH 03/18] remove unused mock servers --- .../mockservers/IncentivesApiMockServer.kt | 32 ------------------- .../mockservers/PrisonVisitsApiMockServer.kt | 32 ------------------- 2 files changed, 64 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/IncentivesApiMockServer.kt delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonVisitsApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/IncentivesApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/IncentivesApiMockServer.kt deleted file mode 100644 index 2c2c81fa2..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/IncentivesApiMockServer.kt +++ /dev/null @@ -1,32 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class IncentivesApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4008 - } - - fun stubIncentivesApiResponse( - path: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get(path) - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonVisitsApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonVisitsApiMockServer.kt deleted file mode 100644 index b4ce9a56f..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonVisitsApiMockServer.kt +++ /dev/null @@ -1,32 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class PrisonVisitsApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4007 - } - - fun stubPrisonVisitsApiResponse( - path: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get(path) - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From 30301e8bde66f2a3f614012c823fc1b9ade61c3c Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 14:09:23 +0000 Subject: [PATCH 04/18] add create function to ApiMockServer and update Visits gateway and incentives gateway to use it --- .../incentives/GetIEPReviewHistoryTest.kt | 2 +- .../prisonVisits/GetVisitsGatewayTest.kt | 3 ++- .../prisonVisits/PrisonVisitsGatewayTest.kt | 2 +- .../mockservers/ApiMockServer.kt | 23 +++++++++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt index d9fad5212..9d8091d33 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/incentives/GetIEPReviewHistoryTest.kt @@ -31,7 +31,7 @@ class GetIEPReviewHistoryTest( ) : DescribeSpec({ val hmppsId = "A1234AA" val path = "/incentive-reviews/prisoner/$hmppsId" - val incentivesApiMockServer = ApiMockServer(4008) + val incentivesApiMockServer = ApiMockServer.create(UpstreamApi.INCENTIVES) beforeEach { incentivesApiMockServer.start() diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt index 7b86b9066..b0ca77730 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/GetVisitsGatewayTest.kt @@ -16,6 +16,7 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGatewa import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PrisonVisitsGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @ContextConfiguration( @@ -37,7 +38,7 @@ class GetVisitsGatewayTest( val page = 1 val size = 10 val pathWithQueryParams = "$path?prisonId=$prisonId&visitStatus=$visitStatus&page=$page&size=$size&prisonerId=$hmppsId&visitStartDate=$fromDate&visitEndDate=$toDate" - val prisonVisitsApiMockServer = ApiMockServer(4007) + val prisonVisitsApiMockServer = ApiMockServer.create(UpstreamApi.MANAGE_PRISON_VISITS) beforeEach { prisonVisitsApiMockServer.start() diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt index 9cd5df30e..695beb4f7 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisonVisits/PrisonVisitsGatewayTest.kt @@ -36,7 +36,7 @@ class PrisonVisitsGatewayTest( val prisonerId = "AF34567G" val futuresPath = "/visits/search/future/$prisonerId" - val prisonVisitsApiMockServer = ApiMockServer(4007) + val prisonVisitsApiMockServer = ApiMockServer.create(UpstreamApi.MANAGE_PRISON_VISITS) beforeEach { prisonVisitsApiMockServer.start() diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt index 460aae990..76e238c97 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt @@ -5,10 +5,33 @@ import com.github.tomakehurst.wiremock.client.WireMock.aResponse import com.github.tomakehurst.wiremock.client.WireMock.get import com.github.tomakehurst.wiremock.client.WireMock.matching import org.springframework.http.HttpStatus +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi class ApiMockServer( private val port: Int, ) : WireMockServer(port) { + companion object { + fun create(upstreamApi: UpstreamApi): ApiMockServer = + when (upstreamApi) { + UpstreamApi.NOMIS -> ApiMockServer(4000) + UpstreamApi.PRISONER_OFFENDER_SEARCH -> ApiMockServer(4001) + UpstreamApi.PROBATION_OFFENDER_SEARCH -> ApiMockServer(4002) + UpstreamApi.NDELIUS -> ApiMockServer(4003) + UpstreamApi.ASSESS_RISKS_AND_NEEDS -> ApiMockServer(4004) + UpstreamApi.ADJUDICATIONS -> ApiMockServer(4006) + UpstreamApi.CVL -> ApiMockServer(4007) + UpstreamApi.CASE_NOTES -> ApiMockServer(4008) + UpstreamApi.MANAGE_POM_CASE -> ApiMockServer(4009) + UpstreamApi.RISK_MANAGEMENT_PLAN -> ApiMockServer(4004) + UpstreamApi.TEST -> TODO() + UpstreamApi.PLP -> ApiMockServer(4004) + UpstreamApi.NON_ASSOCIATIONS -> ApiMockServer(4005) + UpstreamApi.PERSONAL_RELATIONSHIPS -> ApiMockServer(4006) + UpstreamApi.MANAGE_PRISON_VISITS -> ApiMockServer(4007) + UpstreamApi.INCENTIVES -> ApiMockServer(4008) + } + } + fun stubForGet( path: String, body: String, From 4f07a9106addad5027b2bc2b85a8e2459ab3c618 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 14:23:41 +0000 Subject: [PATCH 05/18] remove adjudications and assessRisksAndNeeds mock servers --- .../adjudications/AdjudicationsGatewayTest.kt | 13 ++-- .../GetNeedsForPersonTest.kt | 16 +++-- .../GetRiskPredictorScoresForPersonTest.kt | 16 +++-- .../GetRisksForPersonTest.kt | 12 ++-- .../mockservers/AdjudicationsApiMockServer.kt | 32 --------- .../AssessRisksAndNeedsApiMockServer.kt | 70 ------------------- 6 files changed, 33 insertions(+), 126 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AdjudicationsApiMockServer.kt delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AssessRisksAndNeedsApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/adjudications/AdjudicationsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/adjudications/AdjudicationsGatewayTest.kt index 0acb25151..7ff84eefd 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/adjudications/AdjudicationsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/adjudications/AdjudicationsGatewayTest.kt @@ -15,8 +15,9 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import org.springframework.web.reactive.function.client.WebClientResponseException import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.AdjudicationsGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.AdjudicationsApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @ContextConfiguration( @@ -28,7 +29,9 @@ class AdjudicationsGatewayTest( val adjudicationsGateway: AdjudicationsGateway, ) : DescribeSpec( { - val adjudicationsApiMockServer = AdjudicationsApiMockServer() + val id = "123" + val path = "/reported-adjudications/prisoner/$id" + val adjudicationsApiMockServer = ApiMockServer.create(UpstreamApi.ADJUDICATIONS) beforeEach { adjudicationsApiMockServer.start() @@ -48,7 +51,7 @@ class AdjudicationsGatewayTest( } it("upstream API returns an error, throw exception") { - adjudicationsApiMockServer.stubGetReportedAdjudicationsForPerson("123", "", HttpStatus.BAD_REQUEST) + adjudicationsApiMockServer.stubForGet(path, "", HttpStatus.BAD_REQUEST) val response = shouldThrow { adjudicationsGateway.getReportedAdjudicationsForPerson(id = "123") @@ -57,8 +60,8 @@ class AdjudicationsGatewayTest( } it("returns adjudicationResponse") { - adjudicationsApiMockServer.stubGetReportedAdjudicationsForPerson( - "123", + adjudicationsApiMockServer.stubForGet( + path, """ [ { diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetNeedsForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetNeedsForPersonTest.kt index aabc13fd4..d89890c78 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetNeedsForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetNeedsForPersonTest.kt @@ -14,10 +14,11 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.AssessRisksAndNeedsGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.AssessRisksAndNeedsApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Need import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Needs +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.time.LocalDateTime @@ -31,14 +32,15 @@ class GetNeedsForPersonTest( val assessRisksAndNeedsGateway: AssessRisksAndNeedsGateway, ) : DescribeSpec( { - val assessRisksAndNeedsApiMockServer = AssessRisksAndNeedsApiMockServer() val deliusCrn = "X777776" + val path = "/needs/crn/$deliusCrn" + val assessRisksAndNeedsApiMockServer = ApiMockServer.create(UpstreamApi.ASSESS_RISKS_AND_NEEDS) beforeEach { assessRisksAndNeedsApiMockServer.start() Mockito.reset(hmppsAuthGateway) - assessRisksAndNeedsApiMockServer.stubGetNeedsForPerson( - deliusCrn, + assessRisksAndNeedsApiMockServer.stubForGet( + path, """ { "assessedOn": "2023-02-13T12:43:38", @@ -110,8 +112,8 @@ class GetNeedsForPersonTest( } it("returns an empty list when a needs section has no data") { - assessRisksAndNeedsApiMockServer.stubGetNeedsForPerson( - deliusCrn, + assessRisksAndNeedsApiMockServer.stubForGet( + path, """ { "assessedOn": "2023-02-13T12:43:38", @@ -146,7 +148,7 @@ class GetNeedsForPersonTest( } it("returns an error when 404 NOT FOUND is returned because no person is found") { - assessRisksAndNeedsApiMockServer.stubGetNeedsForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + assessRisksAndNeedsApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = assessRisksAndNeedsGateway.getNeedsForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRiskPredictorScoresForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRiskPredictorScoresForPersonTest.kt index 0c86a2449..0588fe4d6 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRiskPredictorScoresForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRiskPredictorScoresForPersonTest.kt @@ -14,13 +14,14 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.AssessRisksAndNeedsGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.AssessRisksAndNeedsApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.GeneralPredictor import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.GroupReconviction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.RiskOfSeriousRecidivism import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.RiskPredictorScore import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.SexualPredictor +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.ViolencePredictor import java.time.LocalDateTime @@ -35,14 +36,15 @@ class GetRiskPredictorScoresForPersonTest( val assessRisksAndNeedsGateway: AssessRisksAndNeedsGateway, ) : DescribeSpec( { - val assessRisksAndNeedsApiMockServer = AssessRisksAndNeedsApiMockServer() val deliusCrn = "X777776" + val path = "/risks/crn/$deliusCrn/predictors/all" + val assessRisksAndNeedsApiMockServer = ApiMockServer.create(UpstreamApi.ASSESS_RISKS_AND_NEEDS) beforeEach { assessRisksAndNeedsApiMockServer.start() Mockito.reset(hmppsAuthGateway) - assessRisksAndNeedsApiMockServer.stubGetRiskPredictorScoresForPerson( - deliusCrn, + assessRisksAndNeedsApiMockServer.stubForGet( + path, """ [ { @@ -101,7 +103,7 @@ class GetRiskPredictorScoresForPersonTest( } it("returns an empty list when no risk predictor scores are found") { - assessRisksAndNeedsApiMockServer.stubGetRiskPredictorScoresForPerson(deliusCrn, "[]") + assessRisksAndNeedsApiMockServer.stubForGet(path, "[]") val response = assessRisksAndNeedsGateway.getRiskPredictorScoresForPerson(deliusCrn) @@ -109,7 +111,7 @@ class GetRiskPredictorScoresForPersonTest( } it("returns a 404 NOT FOUND status code when no person is found") { - assessRisksAndNeedsApiMockServer.stubGetRiskPredictorScoresForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + assessRisksAndNeedsApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = assessRisksAndNeedsGateway.getRiskPredictorScoresForPerson(deliusCrn) @@ -117,7 +119,7 @@ class GetRiskPredictorScoresForPersonTest( } it("returns a 403 FORBIDDEN status code when forbidden") { - assessRisksAndNeedsApiMockServer.stubGetRiskPredictorScoresForPerson(deliusCrn, "", HttpStatus.FORBIDDEN) + assessRisksAndNeedsApiMockServer.stubForGet(path, "", HttpStatus.FORBIDDEN) val response = assessRisksAndNeedsGateway.getRiskPredictorScoresForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRisksForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRisksForPersonTest.kt index 0b1613a22..b909f848b 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRisksForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/GetRisksForPersonTest.kt @@ -14,13 +14,14 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.AssessRisksAndNeedsGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.AssessRisksAndNeedsApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.OtherRisks import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Risk import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.RiskSummary import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.RiskToSelf import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Risks +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.io.File import java.time.LocalDateTime @@ -35,14 +36,15 @@ class GetRisksForPersonTest( val assessRisksAndNeedsGateway: AssessRisksAndNeedsGateway, ) : DescribeSpec( { - val assessRisksAndNeedsApiMockServer = AssessRisksAndNeedsApiMockServer() val deliusCrn = "X777776" + val path = "/risks/crn/$deliusCrn" + val assessRisksAndNeedsApiMockServer = ApiMockServer.create(UpstreamApi.ASSESS_RISKS_AND_NEEDS) beforeEach { assessRisksAndNeedsApiMockServer.start() Mockito.reset(hmppsAuthGateway) - assessRisksAndNeedsApiMockServer.stubGetRisksForPerson( - deliusCrn, + assessRisksAndNeedsApiMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/assessrisksandneeds/fixtures/GetRisksResponse.json", ).readText(), @@ -148,7 +150,7 @@ class GetRisksForPersonTest( } it("returns a 404 NOT FOUND status code when no person is found") { - assessRisksAndNeedsApiMockServer.stubGetRisksForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + assessRisksAndNeedsApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = assessRisksAndNeedsGateway.getRiskSeriousHarmForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AdjudicationsApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AdjudicationsApiMockServer.kt deleted file mode 100644 index 767d54ad5..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AdjudicationsApiMockServer.kt +++ /dev/null @@ -1,32 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock -import org.springframework.http.HttpStatus - -class AdjudicationsApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4006 - } - - fun stubGetReportedAdjudicationsForPerson( - id: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - WireMock - .get("/reported-adjudications/prisoner/$id") - .withHeader( - "Authorization", - WireMock.matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - WireMock - .aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AssessRisksAndNeedsApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AssessRisksAndNeedsApiMockServer.kt deleted file mode 100644 index 39d9107d8..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/AssessRisksAndNeedsApiMockServer.kt +++ /dev/null @@ -1,70 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class AssessRisksAndNeedsApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4004 - } - - fun stubGetRiskPredictorScoresForPerson( - crn: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/risks/crn/$crn/predictors/all") - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } - - fun stubGetRisksForPerson( - crn: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/risks/crn/$crn") - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } - - fun stubGetNeedsForPerson( - crn: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/needs/crn/$crn") - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From 6535dc13360283dcc985b73355037e41d52d894a Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 14:30:29 +0000 Subject: [PATCH 06/18] remove caseNotes mock server --- .../caseNotes/CaseNotesGatewayTest.kt | 16 +++++---- .../mockservers/CaseNotesApiMockServer.kt | 33 ------------------- 2 files changed, 9 insertions(+), 40 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CaseNotesApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/caseNotes/CaseNotesGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/caseNotes/CaseNotesGatewayTest.kt index eacfd0733..611375f58 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/caseNotes/CaseNotesGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/caseNotes/CaseNotesGatewayTest.kt @@ -17,7 +17,7 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import org.springframework.web.reactive.function.client.WebClientResponseException import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.CaseNotesGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.CaseNotesApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.filters.CaseNoteFilter import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @@ -34,8 +34,10 @@ class CaseNotesGatewayTest( private val caseNotesGateway: CaseNotesGateway, ) : DescribeSpec( { + val id = "123" + val pathNoParams = "/case-notes/$id" + val caseNotesApiMockServer = ApiMockServer.create(UpstreamApi.CASE_NOTES) - val caseNotesApiMockServer = CaseNotesApiMockServer() beforeEach { caseNotesApiMockServer.start() @@ -57,7 +59,7 @@ class CaseNotesGatewayTest( } it("upstream API returns an error, throw exception") { - caseNotesApiMockServer.stubGetCaseNotes("123", "", "", HttpStatus.BAD_REQUEST) + caseNotesApiMockServer.stubForGet(pathNoParams, "", HttpStatus.BAD_REQUEST) val response = shouldThrow { caseNotesGateway.getCaseNotesForPerson(id = "123", CaseNoteFilter(hmppsId = "")) @@ -66,7 +68,7 @@ class CaseNotesGatewayTest( } it("upstream API returns an forbidden error, throw forbidden exception") { - caseNotesApiMockServer.stubGetCaseNotes("123", "", "", HttpStatus.FORBIDDEN) + caseNotesApiMockServer.stubForGet(pathNoParams, "", HttpStatus.FORBIDDEN) val response = caseNotesGateway.getCaseNotesForPerson(id = "123", CaseNoteFilter(hmppsId = "")) response.errors.shouldHaveSize(1) response.errors @@ -144,7 +146,7 @@ class CaseNotesGatewayTest( "empty": false } """ - caseNotesApiMockServer.stubGetCaseNotes("123", "", responseJson, HttpStatus.OK) + caseNotesApiMockServer.stubForGet(pathNoParams, responseJson, HttpStatus.OK) val response = caseNotesGateway.getCaseNotesForPerson(id = "123", CaseNoteFilter(hmppsId = "")) response.data.count().shouldBe(2) response.data.shouldExist { it -> it.caseNoteId == "131231" } @@ -217,8 +219,8 @@ class CaseNotesGatewayTest( "empty": false } """ - val params = "?locationId=mockLocation&startDate=2024-01-02&endDate=2024-01-03" - caseNotesApiMockServer.stubGetCaseNotes("123", params, responseJson, HttpStatus.OK) + val pathWithParams = "/case-notes/$id?locationId=mockLocation&startDate=2024-01-02&endDate=2024-01-03" + caseNotesApiMockServer.stubForGet(pathWithParams, responseJson, HttpStatus.OK) val response = caseNotesGateway.getCaseNotesForPerson(id = "123", filter) response.data.count().shouldBe(2) response.data.shouldExist { it -> it.caseNoteId == "131231" } diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CaseNotesApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CaseNotesApiMockServer.kt deleted file mode 100644 index 4f196671a..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CaseNotesApiMockServer.kt +++ /dev/null @@ -1,33 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock -import org.springframework.http.HttpStatus - -class CaseNotesApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4008 - } - - fun stubGetCaseNotes( - id: String, - param: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - WireMock - .get("/case-notes/$id$param") - .withHeader( - "Authorization", - WireMock.matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - WireMock - .aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From d8e659ff6dc5d6d666c6aa461ac16ba06ad7602f Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 14:33:57 +0000 Subject: [PATCH 07/18] remove personal relationships mock server --- .../contacts/GetContactsGatewayTest.kt | 8 ++--- .../PersonalRelationshipsGatewayTest.kt | 11 ++++--- .../PersonalRelationshipsApiMockServer.kt | 32 ------------------- 3 files changed, 10 insertions(+), 41 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PersonalRelationshipsApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/contacts/GetContactsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/contacts/GetContactsGatewayTest.kt index 051f0560d..413e3f749 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/contacts/GetContactsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/contacts/GetContactsGatewayTest.kt @@ -15,8 +15,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PersonalRelationshipsGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.PersonalRelationshipsApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -35,7 +35,7 @@ class GetContactsGatewayTest( val page = 1 val size = 10 val pathWithQueryParams = "$getContactsPath?page=$page&size=$size" - val personalRelationshipsApiMockServer = PersonalRelationshipsApiMockServer() + val personalRelationshipsApiMockServer = ApiMockServer.create(UpstreamApi.PERSONAL_RELATIONSHIPS) beforeEach { personalRelationshipsApiMockServer.start() @@ -124,7 +124,7 @@ class GetContactsGatewayTest( } """.trimIndent() - personalRelationshipsApiMockServer.stubPersonalRelationshipsApiResponse(pathWithQueryParams, body = exampleData, HttpStatus.OK) + personalRelationshipsApiMockServer.stubForGet(pathWithQueryParams, body = exampleData, HttpStatus.OK) val response = personalRelationshipsGateway.getContacts(prisonerId, page, size) response.data.shouldNotBeNull() @@ -137,7 +137,7 @@ class GetContactsGatewayTest( } it("returns a 404 when visit is not found") { - personalRelationshipsApiMockServer.stubPersonalRelationshipsApiResponse(pathWithQueryParams, body = "", HttpStatus.NOT_FOUND) + personalRelationshipsApiMockServer.stubForGet(pathWithQueryParams, body = "", HttpStatus.NOT_FOUND) val response = personalRelationshipsGateway.getContacts(prisonerId, page, size) response.errors.shouldHaveSize(1) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/personalRelationships/PersonalRelationshipsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/personalRelationships/PersonalRelationshipsGatewayTest.kt index 8404b0898..bb1a80069 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/personalRelationships/PersonalRelationshipsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/personalRelationships/PersonalRelationshipsGatewayTest.kt @@ -14,8 +14,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PersonalRelationshipsGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.PersonalRelationshipsApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @ContextConfiguration( @@ -29,7 +30,7 @@ class PersonalRelationshipsGatewayTest( val contactId: Long = 123456 val prisonerContactId: Long = 234561 - val personalRelationshipsApiMockServer = PersonalRelationshipsApiMockServer() + val personalRelationshipsApiMockServer = ApiMockServer.create(UpstreamApi.PERSONAL_RELATIONSHIPS) beforeEach { personalRelationshipsApiMockServer.start() @@ -56,7 +57,7 @@ class PersonalRelationshipsGatewayTest( it("gets a list of prisoner contact ids") { val path = "/contact/$contactId/linked-prisoners" - personalRelationshipsApiMockServer.stubPersonalRelationshipsApiResponse( + personalRelationshipsApiMockServer.stubForGet( path, body = """ @@ -94,7 +95,7 @@ class PersonalRelationshipsGatewayTest( it("Get the restrictions that apply for a particular relationship") { val path = "/prisoner-contact/$prisonerContactId/restriction" - personalRelationshipsApiMockServer.stubPersonalRelationshipsApiResponse( + personalRelationshipsApiMockServer.stubForGet( path, body = """ @@ -160,7 +161,7 @@ class PersonalRelationshipsGatewayTest( it("Gets a contact by id successfully") { val path = "/contact/$contactId" - personalRelationshipsApiMockServer.stubPersonalRelationshipsApiResponse( + personalRelationshipsApiMockServer.stubForGet( path, body = """ diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PersonalRelationshipsApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PersonalRelationshipsApiMockServer.kt deleted file mode 100644 index 8ba5952fc..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PersonalRelationshipsApiMockServer.kt +++ /dev/null @@ -1,32 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class PersonalRelationshipsApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4006 - } - - fun stubPersonalRelationshipsApiResponse( - path: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get(path) - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From 1e31a2c9b7a1f5a5671b8ea8e701958ea9e2a751 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 14:38:37 +0000 Subject: [PATCH 08/18] remove CVL mock server --- .../GetLicenceConditionsTests.kt | 14 ++--- .../GetLicenceSummariesTest.kt | 15 +++--- .../CreateAndVaryLicenceApiMockServer.kt | 53 ------------------- 3 files changed, 17 insertions(+), 65 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CreateAndVaryLicenceApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceConditionsTests.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceConditionsTests.kt index f6ca84a2b..2cf13a8df 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceConditionsTests.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceConditionsTests.kt @@ -14,8 +14,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.CreateAndVaryLicenceGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.CreateAndVaryLicenceApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @ActiveProfiles("test") @@ -28,13 +29,14 @@ class GetLicenceConditionsTests( private val createAndVaryLicenceGateway: CreateAndVaryLicenceGateway, ) : DescribeSpec( { - val createAndVaryLicenceApiMockServer = CreateAndVaryLicenceApiMockServer() val conditionId = 12345 + val path = "/public/licences/id/$conditionId" + val createAndVaryLicenceApiMockServer = ApiMockServer.create(UpstreamApi.CVL) beforeEach { createAndVaryLicenceApiMockServer.start() - createAndVaryLicenceApiMockServer.stubGetLicenceConditions( - conditionId, + createAndVaryLicenceApiMockServer.stubForGet( + path, """ { "conditions": @@ -77,8 +79,8 @@ class GetLicenceConditionsTests( } it("returns an error when 404 NOT FOUND is returned") { - createAndVaryLicenceApiMockServer.stubGetLicenceConditions( - conditionId, + createAndVaryLicenceApiMockServer.stubForGet( + path, """ [{ "developerMessage": "cannot find person" diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceSummariesTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceSummariesTest.kt index d8a816135..9456032cb 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceSummariesTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/createAndVaryLicence/GetLicenceSummariesTest.kt @@ -14,8 +14,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.CreateAndVaryLicenceGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.CreateAndVaryLicenceApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @ActiveProfiles("test") @@ -28,13 +29,15 @@ class GetLicenceSummariesTest( private val createAndVaryLicenceGateway: CreateAndVaryLicenceGateway, ) : DescribeSpec( { - val createAndVaryLicenceApiMockServer = CreateAndVaryLicenceApiMockServer() + val deliusCrn = "X777776" + val path = "/public/licence-summaries/crn/$deliusCrn" + val createAndVaryLicenceApiMockServer = ApiMockServer.create(UpstreamApi.CVL) beforeEach { createAndVaryLicenceApiMockServer.start() - createAndVaryLicenceApiMockServer.stubGetLicenceSummaries( - deliusCrn, + createAndVaryLicenceApiMockServer.stubForGet( + path, """ [{ "id":"A1234AA", @@ -67,8 +70,8 @@ class GetLicenceSummariesTest( } it("returns an error when 404 NOT FOUND is returned") { - createAndVaryLicenceApiMockServer.stubGetLicenceSummaries( - deliusCrn, + createAndVaryLicenceApiMockServer.stubForGet( + path, """ [{ "developerMessage": "cannot find person" diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CreateAndVaryLicenceApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CreateAndVaryLicenceApiMockServer.kt deleted file mode 100644 index 5415b5806..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/CreateAndVaryLicenceApiMockServer.kt +++ /dev/null @@ -1,53 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock -import org.springframework.http.HttpStatus - -class CreateAndVaryLicenceApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4007 - } - - fun stubGetLicenceSummaries( - id: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - WireMock - .get("/public/licence-summaries/crn/$id") - .withHeader( - "Authorization", - WireMock.matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - WireMock - .aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } - - fun stubGetLicenceConditions( - id: Int, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - WireMock - .get("/public/licences/id/$id") - .withHeader( - "Authorization", - WireMock.matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - WireMock - .aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From 00088f101d48fd372b583ea4b7d3fa2079159088 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 14:41:57 +0000 Subject: [PATCH 09/18] remove managePOM mock server --- .../managePOMcase/ManagePOMCaseGatewayTest.kt | 19 ++++++----- .../mockservers/ManagePOMCaseApiMockServer.kt | 32 ------------------- 2 files changed, 11 insertions(+), 40 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ManagePOMCaseApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/managePOMcase/ManagePOMCaseGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/managePOMcase/ManagePOMCaseGatewayTest.kt index 226cdeaf0..dbf35cb65 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/managePOMcase/ManagePOMCaseGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/managePOMcase/ManagePOMCaseGatewayTest.kt @@ -15,8 +15,9 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import org.springframework.web.reactive.function.client.WebClientResponseException import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.ManagePOMCaseGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ManagePOMCaseApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @ContextConfiguration( @@ -28,7 +29,9 @@ class ManagePOMCaseGatewayTest( val managePOMCaseGateway: ManagePOMCaseGateway, ) : DescribeSpec( { - val managePOMCaseApiMockServer = ManagePOMCaseApiMockServer() + val id = "X1234YZ" + val path = "/api/allocation/$id/primary_pom" + val managePOMCaseApiMockServer = ApiMockServer.create(UpstreamApi.MANAGE_POM_CASE) beforeEach { managePOMCaseApiMockServer.start() @@ -42,23 +45,23 @@ class ManagePOMCaseGatewayTest( } it("authenticates using HMPPS Auth with credentials") { - managePOMCaseGateway.getPrimaryPOMForNomisNumber(id = "X1234YZ") + managePOMCaseGateway.getPrimaryPOMForNomisNumber(id = id) verify(hmppsAuthGateway, VerificationModeFactory.times(1)).getClientToken("ManagePOMCase") } it("upstream API returns an error, throw exception") { - managePOMCaseApiMockServer.stubGetPrimaryPOMForNomisNumber("X1234YZ", "", HttpStatus.BAD_REQUEST) + managePOMCaseApiMockServer.stubForGet(path, "", HttpStatus.BAD_REQUEST) val response = shouldThrow { - managePOMCaseGateway.getPrimaryPOMForNomisNumber(id = "X1234YZ") + managePOMCaseGateway.getPrimaryPOMForNomisNumber(id = id) } response.statusCode.shouldBe(HttpStatus.BAD_REQUEST) } it("returns primary offender officer") { - managePOMCaseApiMockServer.stubGetPrimaryPOMForNomisNumber( - "X1234YZ", + managePOMCaseApiMockServer.stubForGet( + path, """ { "manager": { @@ -74,7 +77,7 @@ class ManagePOMCaseGatewayTest( HttpStatus.OK, ) - val response = managePOMCaseGateway.getPrimaryPOMForNomisNumber(id = "X1234YZ") + val response = managePOMCaseGateway.getPrimaryPOMForNomisNumber(id = id) response.data.forename.shouldBe("string") response.data.surname.shouldBe("string") } diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ManagePOMCaseApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ManagePOMCaseApiMockServer.kt deleted file mode 100644 index 62f3fd732..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ManagePOMCaseApiMockServer.kt +++ /dev/null @@ -1,32 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock -import org.springframework.http.HttpStatus - -class ManagePOMCaseApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4009 - } - - fun stubGetPrimaryPOMForNomisNumber( - id: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - WireMock - .get("/api/allocation/$id/primary_pom") - .withHeader( - "Authorization", - WireMock.matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - WireMock - .aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From 48a5b7d9ac9aa5ce860016340b7625ca2b3231e1 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 14:54:58 +0000 Subject: [PATCH 10/18] remove ndelius mock server --- ...etCommunityOffenderManagerForPersonTest.kt | 15 +++--- .../ndelius/GetDynamicRisksForPersonTest.kt | 15 +++--- .../ndelius/GetMappaDetailForPersonTest.kt | 15 +++--- .../ndelius/GetOffencesForPersonTest.kt | 15 +++--- .../ndelius/GetSentencesForPersonTest.kt | 15 +++--- .../GetStatusInformationForPersonTest.kt | 15 +++--- .../mockservers/NDeliusApiMockServer.kt | 51 ------------------- .../services/ReferenceDataServiceTest.kt | 9 ++-- 8 files changed, 53 insertions(+), 97 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NDeliusApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetCommunityOffenderManagerForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetCommunityOffenderManagerForPersonTest.kt index 7ec586a76..fdce654f7 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetCommunityOffenderManagerForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetCommunityOffenderManagerForPersonTest.kt @@ -14,8 +14,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NDeliusGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NDeliusApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.CommunityOffenderManager import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PersonResponsibleOfficerName import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PersonResponsibleOfficerTeam @@ -34,13 +34,14 @@ class GetCommunityOffenderManagerForPersonTest( val nDeliusGateway: NDeliusGateway, ) : DescribeSpec( { - val nDeliusApiMockServer = NDeliusApiMockServer() val deliusCrn = "X777776" + val path = "/case/$deliusCrn/supervisions" + val nDeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { nDeliusApiMockServer.start() - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/fixtures/GetSupervisionsResponse.json", ).readText(), @@ -80,8 +81,8 @@ class GetCommunityOffenderManagerForPersonTest( } it("returns an empty object if no community offender manager is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, """ { "communityManager": {}, @@ -99,7 +100,7 @@ class GetCommunityOffenderManagerForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + nDeliusApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = nDeliusGateway.getCommunityOffenderManagerForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetDynamicRisksForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetDynamicRisksForPersonTest.kt index d63efd6f3..81c44049f 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetDynamicRisksForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetDynamicRisksForPersonTest.kt @@ -14,8 +14,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NDeliusGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NDeliusApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DynamicRisk import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -31,13 +31,14 @@ class GetDynamicRisksForPersonTest( val nDeliusGateway: NDeliusGateway, ) : DescribeSpec( { - val nDeliusApiMockServer = NDeliusApiMockServer() val deliusCrn = "X777776" + val path = "/case/$deliusCrn/supervisions" + val nDeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { nDeliusApiMockServer.start() - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/fixtures/GetSupervisionsResponse.json", ).readText(), @@ -74,8 +75,8 @@ class GetDynamicRisksForPersonTest( } it("returns an empty list if no dynamic risks are found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, """ { "communityManager": {}, @@ -93,7 +94,7 @@ class GetDynamicRisksForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + nDeliusApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = nDeliusGateway.getDynamicRisksForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetMappaDetailForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetMappaDetailForPersonTest.kt index c3d2c2c63..62b12609e 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetMappaDetailForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetMappaDetailForPersonTest.kt @@ -14,8 +14,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NDeliusGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NDeliusApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.MappaDetail import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -31,13 +31,14 @@ class GetMappaDetailForPersonTest( val nDeliusGateway: NDeliusGateway, ) : DescribeSpec( { - val nDeliusApiMockServer = NDeliusApiMockServer() val deliusCrn = "X777776" + val path = "/case/$deliusCrn/supervisions" + val nDeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { nDeliusApiMockServer.start() - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/fixtures/GetSupervisionsResponse.json", ).readText(), @@ -74,8 +75,8 @@ class GetMappaDetailForPersonTest( } it("returns an empty list if no mappa detail is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, """ { "communityManager": {}, @@ -93,7 +94,7 @@ class GetMappaDetailForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + nDeliusApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = nDeliusGateway.getMappaDetailForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetOffencesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetOffencesForPersonTest.kt index 8dee08c5e..27bde965d 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetOffencesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetOffencesForPersonTest.kt @@ -16,8 +16,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NDeliusGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.helpers.generateTestOffence +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NDeliusApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.io.File @@ -33,13 +33,14 @@ class GetOffencesForPersonTest( val nDeliusGateway: NDeliusGateway, ) : DescribeSpec( { - val nDeliusApiMockServer = NDeliusApiMockServer() val deliusCrn = "X777776" + val path = "/case/$deliusCrn/supervisions" + val nDeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { nDeliusApiMockServer.start() - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/fixtures/GetSupervisionsResponse.json", ).readText(), @@ -139,8 +140,8 @@ class GetOffencesForPersonTest( } it("returns an empty list if no offences are found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, """ { "communityManager": {}, @@ -158,7 +159,7 @@ class GetOffencesForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + nDeliusApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = nDeliusGateway.getOffencesForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetSentencesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetSentencesForPersonTest.kt index e4f99e86e..76421fe85 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetSentencesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetSentencesForPersonTest.kt @@ -16,8 +16,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NDeliusGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.helpers.generateTestSentence +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NDeliusApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.SentenceLength import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.SystemSource import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @@ -35,13 +35,14 @@ class GetSentencesForPersonTest( val nDeliusGateway: NDeliusGateway, ) : DescribeSpec( { - val nDeliusApiMockServer = NDeliusApiMockServer() val deliusCrn = "X777776" + val path = "/case/$deliusCrn/supervisions" + val nDeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { nDeliusApiMockServer.start() - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/fixtures/GetSupervisionsResponse.json", ).readText(), @@ -99,8 +100,8 @@ class GetSentencesForPersonTest( } it("returns an empty list if no sentences are found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, """ { "communityManager": {}, @@ -118,7 +119,7 @@ class GetSentencesForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + nDeliusApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = nDeliusGateway.getSentencesForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetStatusInformationForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetStatusInformationForPersonTest.kt index bee4d2a2a..b6f88863f 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetStatusInformationForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetStatusInformationForPersonTest.kt @@ -14,8 +14,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NDeliusGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NDeliusApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.StatusInformation import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -31,13 +31,14 @@ class GetStatusInformationForPersonTest( val nDeliusGateway: NDeliusGateway, ) : DescribeSpec( { - val nDeliusApiMockServer = NDeliusApiMockServer() val deliusCrn = "X777776" + val path = "/case/$deliusCrn/supervisions" + val nDeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { nDeliusApiMockServer.start() - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/fixtures/GetSupervisionsResponse.json", ).readText(), @@ -74,8 +75,8 @@ class GetStatusInformationForPersonTest( } it("returns an empty list if no status information is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson( - deliusCrn, + nDeliusApiMockServer.stubForGet( + path, """ { "communityManager": {}, @@ -93,7 +94,7 @@ class GetStatusInformationForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nDeliusApiMockServer.stubGetSupervisionsForPerson(deliusCrn, "", HttpStatus.NOT_FOUND) + nDeliusApiMockServer.stubForGet(path, "", HttpStatus.NOT_FOUND) val response = nDeliusGateway.getStatusInformationForPerson(deliusCrn) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NDeliusApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NDeliusApiMockServer.kt deleted file mode 100644 index 9be6bee43..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NDeliusApiMockServer.kt +++ /dev/null @@ -1,51 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class NDeliusApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4003 - } - - fun stubDeliusApiResponse( - path: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get(path) - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } - - fun stubGetSupervisionsForPerson( - crn: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/case/$crn/supervisions") - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt index 39f1897b6..35619da79 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt @@ -13,9 +13,10 @@ import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NDeliusApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @ContextConfiguration( @@ -29,12 +30,12 @@ class ReferenceDataServiceTest( ) : DescribeSpec( { val nomisApiMockServer = NomisApiMockServer() - val ndeliusApiMockServer = NDeliusApiMockServer() + val ndeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { // Delius endpoint ndeliusApiMockServer.start() - ndeliusApiMockServer.stubDeliusApiResponse( + ndeliusApiMockServer.stubForGet( "/reference-data", """ { @@ -112,7 +113,7 @@ class ReferenceDataServiceTest( } it("returns from function with errors on NDelius 404") { - ndeliusApiMockServer.stubDeliusApiResponse( + ndeliusApiMockServer.stubForGet( "/reference-data", """ {"message":"There is an error"} From a906d9ab4df06d458668f6283e80b51222a320dc Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 15:07:02 +0000 Subject: [PATCH 11/18] remove nomis mock server --- .../nomis/GetAccountsForPersonTest.kt | 10 +-- .../nomis/GetAddressesForPersonTest.kt | 11 +-- .../gateways/nomis/GetAlertsForPersonTest.kt | 10 +-- .../gateways/nomis/GetImageDataTest.kt | 8 +- .../nomis/GetImageMetadataForPersonTest.kt | 10 +-- ...tLatestSentenceAdjustmentsForPersonTest.kt | 9 ++- .../GetLatestSentenceKeyDatesForPersonTest.kt | 9 ++- .../nomis/GetOffencesForPersonTest.kt | 10 +-- .../nomis/GetOffenderVisitRestrictionsTest.kt | 12 +-- .../nomis/GetReasonableAdjustmentTest.kt | 13 ++-- .../gateways/nomis/GetReferenceDomainsTest.kt | 11 +-- .../nomis/GetRiskCategoriesForPersonTest.kt | 8 +- .../nomis/GetSentencesForPersonTest.kt | 12 +-- .../nomis/GetTransactionForPersonTest.kt | 8 +- .../nomis/GetTransactionsForPersonTest.kt | 8 +- .../nomis/GetVisitBalancesForPersonTest.kt | 10 +-- .../nomis/PostTransactionForPersonTest.kt | 14 ++-- .../PostTransactionTransferForPersonTest.kt | 14 ++-- .../mockservers/ApiMockServer.kt | 41 +++++++++++ .../mockservers/NomisApiMockServer.kt | 73 ------------------- .../services/ReferenceDataServiceTest.kt | 13 ++-- 21 files changed, 143 insertions(+), 171 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NomisApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAccountsForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAccountsForPersonTest.kt index e9cfb0a90..7bc327f80 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAccountsForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAccountsForPersonTest.kt @@ -16,8 +16,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -31,14 +31,14 @@ class GetAccountsForPersonTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val nomisNumber = "AA1234Z" val prisonId = "XYZ" val accountsPath = "/api/v1/prison/$prisonId/offenders/$nomisNumber/accounts" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( accountsPath, """ { @@ -73,7 +73,7 @@ class GetAccountsForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(accountsPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(accountsPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getAccountsForPerson(prisonId, nomisNumber) @@ -89,7 +89,7 @@ class GetAccountsForPersonTest( } it("returns an error when 400 Bad Request is returned because of invalid ID") { - nomisApiMockServer.stubNomisApiResponse(accountsPath, "", HttpStatus.BAD_REQUEST) + nomisApiMockServer.stubForGet(accountsPath, "", HttpStatus.BAD_REQUEST) val response = nomisGateway.getAccountsForPerson(prisonId, nomisNumber) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAddressesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAddressesForPersonTest.kt index c334b30fd..87b807991 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAddressesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAddressesForPersonTest.kt @@ -15,8 +15,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @ActiveProfiles("test") @@ -29,12 +30,12 @@ class GetAddressesForPersonTest( private val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "abc123" val addressPath = "/api/offenders/$offenderNo/addresses" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( addressPath, """ [ @@ -95,7 +96,7 @@ class GetAddressesForPersonTest( } it("returns an empty list when no addresses are found") { - nomisApiMockServer.stubNomisApiResponse(addressPath, "[]") + nomisApiMockServer.stubForGet(addressPath, "[]") val response = nomisGateway.getAddressesForPerson(offenderNo) @@ -103,7 +104,7 @@ class GetAddressesForPersonTest( } it("returns an error when 404 NOT FOUND is returned") { - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( addressPath, """ { diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAlertsForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAlertsForPersonTest.kt index 75ff98ec0..5372823c9 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAlertsForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetAlertsForPersonTest.kt @@ -17,8 +17,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -32,12 +32,12 @@ class GetAlertsForPersonTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "zyx987" val alertsPath = "/api/offenders/$offenderNo/alerts/v2" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( alertsPath, """ [ @@ -81,7 +81,7 @@ class GetAlertsForPersonTest( } it("returns a person with an empty list of alerts when no alerts are found") { - nomisApiMockServer.stubNomisApiResponse(alertsPath, "[]") + nomisApiMockServer.stubForGet(alertsPath, "[]") val response = nomisGateway.getAlertsForPerson(offenderNo) @@ -89,7 +89,7 @@ class GetAlertsForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(alertsPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(alertsPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getAlertsForPerson(offenderNo) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageDataTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageDataTest.kt index 50e443a40..6c918e61e 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageDataTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageDataTest.kt @@ -14,8 +14,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.io.File @@ -29,12 +29,12 @@ class GetImageDataTest( @MockitoBean val hmppsAuthGateway: HmppsAuthGateway, private val nomisGateway: NomisGateway, ) : DescribeSpec({ - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val imageId = 5678 beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubGetImageData(imageId) + nomisApiMockServer.stubForImageData(imageId) Mockito.reset(hmppsAuthGateway) whenever(hmppsAuthGateway.getClientToken("NOMIS")).thenReturn(HmppsAuthMockServer.TOKEN) @@ -59,7 +59,7 @@ class GetImageDataTest( } it("returns an error when 404 Not Found is returned") { - nomisApiMockServer.stubGetImageData(imageId, HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForImageData(imageId, HttpStatus.NOT_FOUND) val response = nomisGateway.getImageData(imageId) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageMetadataForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageMetadataForPersonTest.kt index ecbd11dff..e88eb3587 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageMetadataForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetImageMetadataForPersonTest.kt @@ -15,8 +15,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.time.LocalDateTime @@ -30,12 +30,12 @@ class GetImageMetadataForPersonTest( @MockitoBean val hmppsAuthGateway: HmppsAuthGateway, private val nomisGateway: NomisGateway, ) : DescribeSpec({ - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "abc123" val imagePath = "/api/images/offenders/$offenderNo" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( imagePath, """ [ @@ -99,7 +99,7 @@ class GetImageMetadataForPersonTest( } it("returns a person without image metadata when no images are found") { - nomisApiMockServer.stubNomisApiResponse(imagePath, "[]") + nomisApiMockServer.stubForGet(imagePath, "[]") val response = nomisGateway.getImageMetadataForPerson(offenderNo) @@ -107,7 +107,7 @@ class GetImageMetadataForPersonTest( } it("returns an error when 404 Not Found is returned") { - nomisApiMockServer.stubNomisApiResponse(imagePath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(imagePath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getImageMetadataForPerson(offenderNo) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceAdjustmentsForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceAdjustmentsForPersonTest.kt index 0f459616c..4cd54af43 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceAdjustmentsForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceAdjustmentsForPersonTest.kt @@ -14,8 +14,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @ActiveProfiles("test") @@ -28,12 +29,12 @@ class GetLatestSentenceAdjustmentsForPersonTest( private val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "abc123" val sentenceSummaryPath = "/api/offenders/$offenderNo/booking/latest/sentence-summary" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( sentenceSummaryPath, """ { @@ -86,7 +87,7 @@ class GetLatestSentenceAdjustmentsForPersonTest( } it("returns an error when 404 NOT FOUND is returned") { - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( sentenceSummaryPath, """ { diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceKeyDatesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceKeyDatesForPersonTest.kt index 0aa08a5e7..57f0f758e 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceKeyDatesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceKeyDatesForPersonTest.kt @@ -14,8 +14,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.time.LocalDate @@ -29,12 +30,12 @@ class GetLatestSentenceKeyDatesForPersonTest( private val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "A1234AB" val sentencePath = "/api/offenders/$offenderNo/sentences" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( sentencePath, """ { @@ -304,7 +305,7 @@ class GetLatestSentenceKeyDatesForPersonTest( } it("returns an error when 404 NOT FOUND is returned") { - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( sentencePath, """ { diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffencesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffencesForPersonTest.kt index 7ecb5cc96..647e599f5 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffencesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffencesForPersonTest.kt @@ -17,8 +17,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -32,12 +32,12 @@ class GetOffencesForPersonTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "zyx987" val offenceHistoryPath = "/api/bookings/offenderNo/$offenderNo/offenceHistory" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( offenceHistoryPath, """ [ @@ -83,7 +83,7 @@ class GetOffencesForPersonTest( } it("returns a person with an empty list of offences when no offences are found") { - nomisApiMockServer.stubNomisApiResponse(offenceHistoryPath, "[]") + nomisApiMockServer.stubForGet(offenceHistoryPath, "[]") val response = nomisGateway.getOffencesForPerson(offenderNo) @@ -91,7 +91,7 @@ class GetOffencesForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(offenceHistoryPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(offenceHistoryPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getOffencesForPerson(offenderNo) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffenderVisitRestrictionsTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffenderVisitRestrictionsTest.kt index 24c9629cb..99fa672e9 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffenderVisitRestrictionsTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetOffenderVisitRestrictionsTest.kt @@ -18,8 +18,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -33,13 +33,13 @@ class GetOffenderVisitRestrictionsTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "zyx987" val offenderRestrictionsPath = "/api/offenders/$offenderNo/offender-restrictions" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( offenderRestrictionsPath, """ { @@ -81,7 +81,7 @@ class GetOffenderVisitRestrictionsTest( } it("returns a person with an empty list of restrictions when no restrictions are found") { - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( offenderRestrictionsPath, """ { @@ -97,7 +97,7 @@ class GetOffenderVisitRestrictionsTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(offenderRestrictionsPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(offenderRestrictionsPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getOffenderVisitRestrictions(offenderNo) @@ -113,7 +113,7 @@ class GetOffenderVisitRestrictionsTest( } it("returns an error when 400 Bad Request is returned because of an invalid request") { - nomisApiMockServer.stubNomisApiResponse(offenderRestrictionsPath, "", HttpStatus.BAD_REQUEST) + nomisApiMockServer.stubForGet(offenderRestrictionsPath, "", HttpStatus.BAD_REQUEST) val response = nomisGateway.getOffenderVisitRestrictions(offenderNo) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReasonableAdjustmentTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReasonableAdjustmentTest.kt index 2691a3efd..2bada18f7 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReasonableAdjustmentTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReasonableAdjustmentTest.kt @@ -15,8 +15,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.time.LocalDate @@ -30,13 +31,13 @@ class GetReasonableAdjustmentTest( private val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val bookingId = "mockBooking" val domainPath = "/api/reference-domains/domains/HEALTH_TREAT/codes" var reasonableAdjustmentPath = "/api/bookings/$bookingId/reasonable-adjustments?type=a&type=b&type=c" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( domainPath, """ [ @@ -47,7 +48,7 @@ class GetReasonableAdjustmentTest( """, ) - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( reasonableAdjustmentPath, """ { "reasonableAdjustments":[ @@ -104,7 +105,7 @@ class GetReasonableAdjustmentTest( } it("returns an empty list when no reasonable adjustment are found") { - nomisApiMockServer.stubNomisApiResponse(domainPath, "[]") + nomisApiMockServer.stubForGet(domainPath, "[]") val response = nomisGateway.getReasonableAdjustments(bookingId) @@ -112,7 +113,7 @@ class GetReasonableAdjustmentTest( } it("returns an error when 404 NOT FOUND is returned") { - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( domainPath, """ { diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReferenceDomainsTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReferenceDomainsTest.kt index b6838fbdd..81503cdf1 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReferenceDomainsTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetReferenceDomainsTest.kt @@ -15,8 +15,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @ActiveProfiles("test") @@ -29,12 +30,12 @@ class GetReferenceDomainsTest( private val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val testDomain = "abc" val domainPath = "/api/reference-domains/domains/$testDomain/codes" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( domainPath, """ [ @@ -69,7 +70,7 @@ class GetReferenceDomainsTest( } it("returns an empty list when no domains are found") { - nomisApiMockServer.stubNomisApiResponse(domainPath, "[]") + nomisApiMockServer.stubForGet(domainPath, "[]") val response = nomisGateway.getReferenceDomains(testDomain) @@ -77,7 +78,7 @@ class GetReferenceDomainsTest( } it("returns an error when 404 NOT FOUND is returned") { - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( domainPath, """ { diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetRiskCategoriesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetRiskCategoriesForPersonTest.kt index aa2216739..d8918ef49 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetRiskCategoriesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetRiskCategoriesForPersonTest.kt @@ -15,8 +15,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -30,12 +30,12 @@ class GetRiskCategoriesForPersonTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "A7796DY" val offenderPath = "/api/offenders/$offenderNo" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( offenderPath, """ { @@ -64,7 +64,7 @@ class GetRiskCategoriesForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(offenderPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(offenderPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getRiskCategoriesForPerson(offenderNo) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetSentencesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetSentencesForPersonTest.kt index f46d8b60a..a5a7422b6 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetSentencesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetSentencesForPersonTest.kt @@ -17,8 +17,8 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitesp import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.helpers.generateTestSentence +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.SentenceLength import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.SentenceTerm import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @@ -35,14 +35,14 @@ class GetSentencesForPersonTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNo = "zyx987" val someBookingId = 1 val sentecesAndOffencesPath = "/api/offender-sentences/booking/$someBookingId/sentences-and-offences" var sentencesPath = "/api/offender-sentences?offenderNo=$offenderNo" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( sentencesPath, """ [ @@ -56,7 +56,7 @@ class GetSentencesForPersonTest( """.removeWhitespaceAndNewlines(), ) - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( sentecesAndOffencesPath, """ { @@ -119,7 +119,7 @@ class GetSentencesForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(sentencesPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(sentencesPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getBookingIdsForPerson(offenderNo) @@ -135,7 +135,7 @@ class GetSentencesForPersonTest( } it("returns an error when no sentence is found") { - nomisApiMockServer.stubNomisApiResponse(sentecesAndOffencesPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(sentecesAndOffencesPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getSentencesForBooking(someBookingId) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionForPersonTest.kt index 431d16604..86be28b9d 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionForPersonTest.kt @@ -16,8 +16,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -31,7 +31,7 @@ class GetTransactionForPersonTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val nomisNumber = "AA1234Z" val prisonId = "XYZ" val clientUniqueRef = "client_unique_ref" @@ -39,7 +39,7 @@ class GetTransactionForPersonTest( beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( transactionPath, """ { @@ -105,7 +105,7 @@ class GetTransactionForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(transactionPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(transactionPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getAccountsForPerson(prisonId, nomisNumber) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionsForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionsForPersonTest.kt index 09e31bfa8..14c2ea765 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionsForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetTransactionsForPersonTest.kt @@ -16,8 +16,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -31,7 +31,7 @@ class GetTransactionsForPersonTest( val nomisGateway: NomisGateway, ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val nomisNumber = "AA1234Z" val prisonId = "XYZ" val accountCode = "spends" @@ -41,7 +41,7 @@ class GetTransactionsForPersonTest( beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( transactionsPath, """ { @@ -128,7 +128,7 @@ class GetTransactionsForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(transactionsPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(transactionsPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getAccountsForPerson(prisonId, nomisNumber) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetVisitBalancesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetVisitBalancesForPersonTest.kt index 24f25d8b6..d9f372e73 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetVisitBalancesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetVisitBalancesForPersonTest.kt @@ -16,8 +16,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -30,13 +30,13 @@ class GetVisitBalancesForPersonTest( @MockitoBean val hmppsAuthGateway: HmppsAuthGateway, val nomisGateway: NomisGateway, ) : DescribeSpec({ - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val offenderNumber = "A7777ZZ" val visitBalancesPath = "/api/bookings/offenderNo/$offenderNumber/visit/balances" beforeEach { nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( visitBalancesPath, """ { @@ -70,7 +70,7 @@ class GetVisitBalancesForPersonTest( } it("returns an error when 400 Bad Request is returned because of an invalid request") { - nomisApiMockServer.stubNomisApiResponse(visitBalancesPath, "", HttpStatus.BAD_REQUEST) + nomisApiMockServer.stubForGet(visitBalancesPath, "", HttpStatus.BAD_REQUEST) val response = nomisGateway.getVisitBalances(offenderNumber) @@ -86,7 +86,7 @@ class GetVisitBalancesForPersonTest( } it("returns an error when 404 Not Found is returned because no person is found") { - nomisApiMockServer.stubNomisApiResponse(visitBalancesPath, "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForGet(visitBalancesPath, "", HttpStatus.NOT_FOUND) val response = nomisGateway.getVisitBalances(offenderNumber) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionForPersonTest.kt index 163889e42..6cc068fa2 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionForPersonTest.kt @@ -17,8 +17,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.TransactionRequest import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -32,7 +32,7 @@ class PostTransactionForPersonTest( @MockitoBean val hmppsAuthGateway: HmppsAuthGateway, val nomisGateway: NomisGateway, ) : DescribeSpec({ - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val prisonId = "XYZ" val nomisNumber = "AA1234Z" val path = "/api/v1/prison/$prisonId/offenders/$nomisNumber/transactions" @@ -54,7 +54,7 @@ class PostTransactionForPersonTest( } it("authenticates using HMPPS Auth with credentials") { - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(exampleTransaction.toApiConformingMap()), """ @@ -74,7 +74,7 @@ class PostTransactionForPersonTest( } it("returns expected response with transaction id and description when a valid request body is provided") { - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(exampleTransaction.toApiConformingMap()), """ @@ -100,7 +100,7 @@ class PostTransactionForPersonTest( it("return a 400 error response") { val invalidTransactionRequest = TransactionRequest("invalid", "", 0, "", "") - nomisApiMockServer.stubNomisApiResponseForPost(path, asJsonString(invalidTransactionRequest.toApiConformingMap()), "", HttpStatus.BAD_REQUEST) + nomisApiMockServer.stubForPost(path, asJsonString(invalidTransactionRequest.toApiConformingMap()), "", HttpStatus.BAD_REQUEST) val response = nomisGateway.postTransactionForPerson(prisonId, nomisNumber, invalidTransactionRequest) @@ -109,7 +109,7 @@ class PostTransactionForPersonTest( it("return a 404 error response") { val invalidTransactionRequest = TransactionRequest("invalid", "", 0, "", "") - nomisApiMockServer.stubNomisApiResponseForPost(path, asJsonString(invalidTransactionRequest.toApiConformingMap()), "", HttpStatus.NOT_FOUND) + nomisApiMockServer.stubForPost(path, asJsonString(invalidTransactionRequest.toApiConformingMap()), "", HttpStatus.NOT_FOUND) val response = nomisGateway.postTransactionForPerson(prisonId, nomisNumber, invalidTransactionRequest) @@ -117,7 +117,7 @@ class PostTransactionForPersonTest( } it("return a 409 error response") { - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(exampleTransaction.toApiConformingMap()), """ diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionTransferForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionTransferForPersonTest.kt index 944c6ed84..fe43c871d 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionTransferForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/PostTransactionTransferForPersonTest.kt @@ -17,8 +17,8 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NomisGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.TransactionTransferRequest import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -32,7 +32,7 @@ class PostTransactionTransferForPersonTest( @MockitoBean val hmppsAuthGateway: HmppsAuthGateway, val nomisGateway: NomisGateway, ) : DescribeSpec({ - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val prisonId = "XYZ" val nomisNumber = "AA1234Z" val path = "/api/finance/prison/$prisonId/offenders/$nomisNumber/transfer-to-savings" @@ -55,7 +55,7 @@ class PostTransactionTransferForPersonTest( } it("authenticates using HMPPS Auth with credentials") { - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(exampleTransfer.toApiConformingMap()), """ @@ -81,7 +81,7 @@ class PostTransactionTransferForPersonTest( } it("returns expected response with transaction id and debit and credit transactions when a valid request body is provided") { - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(exampleTransfer.toApiConformingMap()), """ @@ -119,7 +119,7 @@ class PostTransactionTransferForPersonTest( it("return a 400 error response") { val invalidTransferRequest = TransactionTransferRequest("", 0, "", "", "", "") - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(invalidTransferRequest.toApiConformingMap()), "", @@ -140,7 +140,7 @@ class PostTransactionTransferForPersonTest( it("return a 404 error response") { val invalidTransferRequest = TransactionTransferRequest("", 0, "", "", "", "") - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(invalidTransferRequest.toApiConformingMap()), "", @@ -160,7 +160,7 @@ class PostTransactionTransferForPersonTest( } it("return a 409 error response") { - nomisApiMockServer.stubNomisApiResponseForPost( + nomisApiMockServer.stubForPost( path, asJsonString(exampleTransfer.toApiConformingMap()), """ diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt index 76e238c97..ce7a9a210 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt @@ -2,8 +2,10 @@ package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers import com.github.tomakehurst.wiremock.WireMockServer import com.github.tomakehurst.wiremock.client.WireMock.aResponse +import com.github.tomakehurst.wiremock.client.WireMock.equalToJson import com.github.tomakehurst.wiremock.client.WireMock.get import com.github.tomakehurst.wiremock.client.WireMock.matching +import com.github.tomakehurst.wiremock.client.WireMock.post import org.springframework.http.HttpStatus import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @@ -50,4 +52,43 @@ class ApiMockServer( ), ) } + + fun stubForPost( + path: String, + reqBody: String, + resBody: String, + status: HttpStatus = HttpStatus.OK, + ) { + stubFor( + post(path) + .withHeader( + "Authorization", + matching("Bearer ${HmppsAuthMockServer.TOKEN}"), + ).withRequestBody(equalToJson(reqBody)) + .willReturn( + aResponse() + .withHeader("Content-Type", "application/json") + .withStatus(status.value()) + .withBody(resBody.trimIndent()), + ), + ) + } + + fun stubForImageData( + imageId: Int, + status: HttpStatus = HttpStatus.OK, + ) { + stubFor( + get("/api/images/$imageId/data") + .withHeader( + "Authorization", + matching("Bearer ${HmppsAuthMockServer.TOKEN}"), + ).willReturn( + aResponse() + .withHeader("Content-Type", "image/jpeg") + .withStatus(status.value()) + .withBodyFile("example.jpg"), + ), + ) + } } diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NomisApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NomisApiMockServer.kt deleted file mode 100644 index 2fb7c6334..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NomisApiMockServer.kt +++ /dev/null @@ -1,73 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.equalToJson -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import com.github.tomakehurst.wiremock.client.WireMock.post -import org.springframework.http.HttpStatus - -class NomisApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4000 - } - - fun stubNomisApiResponse( - path: String, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get(path) - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } - - fun stubNomisApiResponseForPost( - path: String, - reqBody: String, - resBody: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - post(path) - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).withRequestBody(equalToJson(reqBody)) - .willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(resBody.trimIndent()), - ), - ) - } - - fun stubGetImageData( - imageId: Int, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/api/images/$imageId/data") - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "image/jpeg") - .withStatus(status.value()) - .withBodyFile("example.jpg"), - ), - ) - } -} diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt index 35619da79..d2772cd4b 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/ReferenceDataServiceTest.kt @@ -15,7 +15,6 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NomisApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @@ -29,7 +28,7 @@ class ReferenceDataServiceTest( private val objectMapper: ObjectMapper = ObjectMapper().registerKotlinModule(), ) : DescribeSpec( { - val nomisApiMockServer = NomisApiMockServer() + val nomisApiMockServer = ApiMockServer.create(UpstreamApi.NOMIS) val ndeliusApiMockServer = ApiMockServer.create(UpstreamApi.NDELIUS) beforeEach { @@ -58,7 +57,7 @@ class ReferenceDataServiceTest( // Nomis endpoints // PHONE_USAGE("PHONE_TYPE"), ALERT("ALERT_TYPE"), ETHNICITY("ETHNICITY"), SEX("GENDER") nomisApiMockServer.start() - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( "/api/reference-domains/domains/PHONE_USAGE", """ [ @@ -69,7 +68,7 @@ class ReferenceDataServiceTest( """, ) - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( "/api/reference-domains/domains/ALERT", """ [ @@ -80,7 +79,7 @@ class ReferenceDataServiceTest( """, ) - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( "/api/reference-domains/domains/ETHNICITY", """ [ @@ -91,7 +90,7 @@ class ReferenceDataServiceTest( """, ) - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( "/api/reference-domains/domains/SEX", """ [ @@ -132,7 +131,7 @@ class ReferenceDataServiceTest( } it("returns from function with errors on NOMIS 404") { - nomisApiMockServer.stubNomisApiResponse( + nomisApiMockServer.stubForGet( "/api/reference-domains/domains/SEX", """ {"message":"There is an error"} From 610b35a3822e1b1715edf141010111beef739c28 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 15:12:07 +0000 Subject: [PATCH 12/18] remove non associations mock server --- .../NonAssociationsGatewayTest.kt | 10 +++--- .../NonAssociationsApiMockServer.kt | 35 ------------------- 2 files changed, 6 insertions(+), 39 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NonAssociationsApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nonAssociations/NonAssociationsGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nonAssociations/NonAssociationsGatewayTest.kt index 202e2675d..0c1deac38 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nonAssociations/NonAssociationsGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nonAssociations/NonAssociationsGatewayTest.kt @@ -13,8 +13,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.NonAssociationsGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.NonAssociationsApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @ContextConfiguration( @@ -26,7 +27,8 @@ class NonAssociationsGatewayTest( private val nonAssociationsGateway: NonAssociationsGateway, ) : DescribeSpec({ val prisonerNumber = "ASDP211" - val nonAssociationsApiMockServer = NonAssociationsApiMockServer() + val path = "/prisoner/$prisonerNumber/non-associations?includeOpen=true&includeClosed=false" + val nonAssociationsApiMockServer = ApiMockServer.create(UpstreamApi.NON_ASSOCIATIONS) beforeEach { nonAssociationsApiMockServer.start() @@ -46,8 +48,8 @@ class NonAssociationsGatewayTest( } it("get non associates when quering with a valid hmppsId") { - nonAssociationsApiMockServer.stubNonAssociationsGet( - prisonerNumber = prisonerNumber, + nonAssociationsApiMockServer.stubForGet( + path, body = """ { diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NonAssociationsApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NonAssociationsApiMockServer.kt deleted file mode 100644 index a41b295c7..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/NonAssociationsApiMockServer.kt +++ /dev/null @@ -1,35 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class NonAssociationsApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - // check this port is valid in the case of other tests using it - private const val WIREMOCK_PORT = 4005 - } - - fun stubNonAssociationsGet( - prisonerNumber: String, - includeOpen: String? = "true", - includeClosed: String? = "false", - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/prisoner/$prisonerNumber/non-associations?includeOpen=$includeOpen&includeClosed=$includeClosed") - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From 993137fe2d8f0fca40d051cdb561cdf60f21702b Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 15:20:34 +0000 Subject: [PATCH 13/18] remove prisonerOffenderSearch mock server --- .../PrisonerOffenderSearchGatewayTest.kt | 461 +++++++++--------- .../PrisonerOffenderSearchApiMockServer.kt | 50 -- 2 files changed, 236 insertions(+), 275 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonerOffenderSearchApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisoneroffendersearch/PrisonerOffenderSearchGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisoneroffendersearch/PrisonerOffenderSearchGatewayTest.kt index e5dc0198b..2d221461d 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisoneroffendersearch/PrisonerOffenderSearchGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisoneroffendersearch/PrisonerOffenderSearchGatewayTest.kt @@ -17,8 +17,9 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PrisonerOffenderSearchGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.PrisonerOffenderSearchApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.io.File import java.time.LocalDate @@ -31,28 +32,33 @@ import java.time.LocalDate class PrisonerOffenderSearchGatewayTest( @MockitoBean val hmppsAuthGateway: HmppsAuthGateway, private val prisonerOffenderSearchGateway: PrisonerOffenderSearchGateway, -) : DescribeSpec({ - val prisonerOffenderSearchApiMockServer = PrisonerOffenderSearchApiMockServer() +) : DescribeSpec( + { + val nomsNumber = "mockNomsNumber" + val postPath = "/global-search?size=9999" + val getPath = "/prisoner/$nomsNumber" + val prisonerOffenderSearchApiMockServer = ApiMockServer.create(UpstreamApi.PRISONER_OFFENDER_SEARCH) - beforeEach { - prisonerOffenderSearchApiMockServer.start() - Mockito.reset(hmppsAuthGateway) + beforeEach { + prisonerOffenderSearchApiMockServer.start() + Mockito.reset(hmppsAuthGateway) - whenever(hmppsAuthGateway.getClientToken("Prisoner Offender Search")).thenReturn(HmppsAuthMockServer.TOKEN) - } + whenever(hmppsAuthGateway.getClientToken("Prisoner Offender Search")).thenReturn(HmppsAuthMockServer.TOKEN) + } - afterTest { - prisonerOffenderSearchApiMockServer.stop() - } + afterTest { + prisonerOffenderSearchApiMockServer.stop() + } - describe("#getPersons") { - val firstName = "JAMES" - val lastName = "HOWLETT" - val dateOfBirth = "1975-02-28" + describe("#getPersons") { + val firstName = "JAMES" + val lastName = "HOWLETT" + val dateOfBirth = "1975-02-28" - beforeEach { - prisonerOffenderSearchApiMockServer.stubPostPrisonerSearch( - """ + beforeEach { + prisonerOffenderSearchApiMockServer.stubForPost( + postPath, + """ { "firstName": "$firstName", "lastName": "$lastName", @@ -60,267 +66,272 @@ class PrisonerOffenderSearchGatewayTest( "includeAliases": false } """.removeWhitespaceAndNewlines(), - File( - "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisoneroffendersearch/fixtures/GetPrisonersResponse.json", - ).readText(), - ) - } + File( + "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/prisoneroffendersearch/fixtures/GetPrisonersResponse.json", + ).readText(), + ) + } - it("authenticates using HMPPS Auth with credentials") { - prisonerOffenderSearchGateway.getPersons(firstName, lastName, dateOfBirth) + it("authenticates using HMPPS Auth with credentials") { + prisonerOffenderSearchGateway.getPersons(firstName, lastName, dateOfBirth) - verify(hmppsAuthGateway, VerificationModeFactory.times(1)).getClientToken("Prisoner Offender Search") - } + verify(hmppsAuthGateway, VerificationModeFactory.times(1)).getClientToken("Prisoner Offender Search") + } - it("returns person(s) when searching on first name, last name and date of birth, in a descending order according to date of birth") { - val response = prisonerOffenderSearchGateway.getPersons(firstName, lastName, dateOfBirth) + it("returns person(s) when searching on first name, last name and date of birth, in a descending order according to date of birth") { + val response = prisonerOffenderSearchGateway.getPersons(firstName, lastName, dateOfBirth) - response.data.count().shouldBe(4) - response.data.forEach { - it.firstName.shouldBe(firstName) - it.lastName.shouldBe(lastName) + response.data.count().shouldBe(4) + response.data.forEach { + it.firstName.shouldBe(firstName) + it.lastName.shouldBe(lastName) + } + response.data[0] + .prisonerNumber + .shouldBe("A5043DY") + response.data[1] + .prisonerNumber + .shouldBe("A5083DY") + response.data[2] + .prisonerNumber + .shouldBe("G9347GV") + response.data[3] + .prisonerNumber + .shouldBe("A7796DY") + + response.data[0].pncNumber.shouldBeNull() + response.data[1].pncNumber.shouldBe("03/11985X") + response.data[2].pncNumber.shouldBe("95/289622B") + response.data[3].pncNumber.shouldBeNull() } - response.data[0] - .prisonerNumber - .shouldBe("A5043DY") - response.data[1] - .prisonerNumber - .shouldBe("A5083DY") - response.data[2] - .prisonerNumber - .shouldBe("G9347GV") - response.data[3] - .prisonerNumber - .shouldBe("A7796DY") - - response.data[0].pncNumber.shouldBeNull() - response.data[1].pncNumber.shouldBe("03/11985X") - response.data[2].pncNumber.shouldBe("95/289622B") - response.data[3].pncNumber.shouldBeNull() - } - it("returns person(s) when searching on first name only") { - prisonerOffenderSearchApiMockServer.stubPostPrisonerSearch( - """ + it("returns person(s) when searching on first name only") { + prisonerOffenderSearchApiMockServer.stubForPost( + postPath, + """ { "firstName": "Obi-Wan", "includeAliases": false } """.removeWhitespaceAndNewlines(), - """ - { - "content": [ - { - "firstName": "Obi-Wan", - "lastName": "Kenobi" - } - ] - } - """.trimIndent(), - ) - - val response = prisonerOffenderSearchGateway.getPersons("Obi-Wan", null, null) - - response.data.count().shouldBe(1) - response.data - .first() - .firstName - .shouldBe("Obi-Wan") - response.data - .first() - .lastName - .shouldBe("Kenobi") - } + """ + { + "content": [ + { + "firstName": "Obi-Wan", + "lastName": "Kenobi" + } + ] + } + """.trimIndent(), + ) + + val response = prisonerOffenderSearchGateway.getPersons("Obi-Wan", null, null) + + response.data.count().shouldBe(1) + response.data + .first() + .firstName + .shouldBe("Obi-Wan") + response.data + .first() + .lastName + .shouldBe("Kenobi") + } - it("returns person(s) when searching on last name only") { - prisonerOffenderSearchApiMockServer.stubPostPrisonerSearch( - """ + it("returns person(s) when searching on last name only") { + prisonerOffenderSearchApiMockServer.stubForPost( + postPath, + """ { "lastName": "Binks", "includeAliases": false } """.removeWhitespaceAndNewlines(), - """ - { - "content": [ - { - "firstName": "Jar Jar", - "lastName": "Binks" - } - ] - } - """.trimIndent(), - ) - - val response = prisonerOffenderSearchGateway.getPersons(null, "Binks", null) - - response.data.count().shouldBe(1) - response.data - .first() - .firstName - .shouldBe("Jar Jar") - response.data - .first() - .lastName - .shouldBe("Binks") - } + """ + { + "content": [ + { + "firstName": "Jar Jar", + "lastName": "Binks" + } + ] + } + """.trimIndent(), + ) + + val response = prisonerOffenderSearchGateway.getPersons(null, "Binks", null) + + response.data.count().shouldBe(1) + response.data + .first() + .firstName + .shouldBe("Jar Jar") + response.data + .first() + .lastName + .shouldBe("Binks") + } - it("returns person(s) when searching on date of birth only") { - prisonerOffenderSearchApiMockServer.stubPostPrisonerSearch( - """ + it("returns person(s) when searching on date of birth only") { + prisonerOffenderSearchApiMockServer.stubForPost( + postPath, + """ { "includeAliases": false, "dateOfBirth": "1975-02-28" } """.removeWhitespaceAndNewlines(), - """ - { - "content": [ - { - "firstName": "Jar Jar", - "lastName": "Binks", - "dateOfBirth": "1975-02-28" - } - ] - } - """.trimIndent(), - ) - - val response = prisonerOffenderSearchGateway.getPersons(null, null, dateOfBirth) - - response.data.count().shouldBe(1) - response.data - .first() - .firstName - .shouldBe("Jar Jar") - response.data - .first() - .lastName - .shouldBe("Binks") - response.data - .first() - .dateOfBirth - .shouldBe(LocalDate.parse(dateOfBirth)) - } + """ + { + "content": [ + { + "firstName": "Jar Jar", + "lastName": "Binks", + "dateOfBirth": "1975-02-28" + } + ] + } + """.trimIndent(), + ) + + val response = prisonerOffenderSearchGateway.getPersons(null, null, dateOfBirth) + + response.data.count().shouldBe(1) + response.data + .first() + .firstName + .shouldBe("Jar Jar") + response.data + .first() + .lastName + .shouldBe("Binks") + response.data + .first() + .dateOfBirth + .shouldBe(LocalDate.parse(dateOfBirth)) + } - it("returns person(s) when searching within aliases") { - prisonerOffenderSearchApiMockServer.stubPostPrisonerSearch( - """ + it("returns person(s) when searching within aliases") { + prisonerOffenderSearchApiMockServer.stubForPost( + postPath, + """ { "firstName": "Geralt", "includeAliases": true } """.removeWhitespaceAndNewlines(), - """ - { - "content": [ - { - "firstName": "Rich", - "lastName": "Roger", - "aliases": [ - { - "firstName": "Geralt", - "lastName": "Eric du Haute-Bellegarde" - } - ] - } - ] - } - """.trimIndent(), - ) - - val response = prisonerOffenderSearchGateway.getPersons("Geralt", null, null, true) - - response.data.count().shouldBe(1) - response.data - .first() - .aliases - .first() - .firstName - .shouldBe("Geralt") - response.data - .first() - .aliases - .first() - .lastName - .shouldBe("Eric du Haute-Bellegarde") - } + """ + { + "content": [ + { + "firstName": "Rich", + "lastName": "Roger", + "aliases": [ + { + "firstName": "Geralt", + "lastName": "Eric du Haute-Bellegarde" + } + ] + } + ] + } + """.trimIndent(), + ) + + val response = prisonerOffenderSearchGateway.getPersons("Geralt", null, null, true) + + response.data.count().shouldBe(1) + response.data + .first() + .aliases + .first() + .firstName + .shouldBe("Geralt") + response.data + .first() + .aliases + .first() + .lastName + .shouldBe("Eric du Haute-Bellegarde") + } - it("returns an empty list of Person if no matching person") { - val firstNameThatDoesNotExist = "ZYX321" - val lastNameThatDoesNotExist = "GHJ345" + it("returns an empty list of Person if no matching person") { + val firstNameThatDoesNotExist = "ZYX321" + val lastNameThatDoesNotExist = "GHJ345" - prisonerOffenderSearchApiMockServer.stubPostPrisonerSearch( - """ + prisonerOffenderSearchApiMockServer.stubForPost( + postPath, + """ { "firstName": "$firstNameThatDoesNotExist", "lastName": "$lastNameThatDoesNotExist", "includeAliases": false } """.removeWhitespaceAndNewlines(), - """ + """ { "content": [] } """, - ) + ) - val response = prisonerOffenderSearchGateway.getPersons(firstNameThatDoesNotExist, lastNameThatDoesNotExist, null) + val response = prisonerOffenderSearchGateway.getPersons(firstNameThatDoesNotExist, lastNameThatDoesNotExist, null) - response.data.shouldBeEmpty() + response.data.shouldBeEmpty() + } } - } - - describe("#getPrisonOffender") { - val nomsNumber = "mockNomsNumber" - beforeEach { - prisonerOffenderSearchApiMockServer.stubGetPrisoner( - nomsNumber, - """ - { - "prisonerNumber": "A7796DY", - "bookingId": "599877", - "firstName": "JAMES", - "middleNames": "MARTIN", - "lastName": "HOWLETT", - "maritalStatus": "Widowed" - } - """.trimIndent(), - ) - } + describe("#getPrisonOffender") { + + beforeEach { + prisonerOffenderSearchApiMockServer.stubForGet( + getPath, + """ + { + "prisonerNumber": "A7796DY", + "bookingId": "599877", + "firstName": "JAMES", + "middleNames": "MARTIN", + "lastName": "HOWLETT", + "maritalStatus": "Widowed" + } + """.trimIndent(), + ) + } - it("authenticates using HMPPS Auth with credentials") { - prisonerOffenderSearchGateway.getPrisonOffender(nomsNumber) + it("authenticates using HMPPS Auth with credentials") { + prisonerOffenderSearchGateway.getPrisonOffender(nomsNumber) - verify(hmppsAuthGateway, VerificationModeFactory.times(1)).getClientToken("Prisoner Offender Search") - } + verify(hmppsAuthGateway, VerificationModeFactory.times(1)).getClientToken("Prisoner Offender Search") + } - it("returns reasonable adjustment for a person with the matching ID") { - val response = prisonerOffenderSearchGateway.getPrisonOffender(nomsNumber) + it("returns reasonable adjustment for a person with the matching ID") { + val response = prisonerOffenderSearchGateway.getPrisonOffender(nomsNumber) - response.data?.prisonerNumber.shouldBe("A7796DY") - response.data?.bookingId.shouldBe("599877") - response.data?.firstName.shouldBe("JAMES") - response.data?.middleNames.shouldBe("MARTIN") - response.data?.lastName.shouldBe("HOWLETT") - response.data?.maritalStatus.shouldBe("Widowed") - } + response.data?.prisonerNumber.shouldBe("A7796DY") + response.data?.bookingId.shouldBe("599877") + response.data?.firstName.shouldBe("JAMES") + response.data?.middleNames.shouldBe("MARTIN") + response.data?.lastName.shouldBe("HOWLETT") + response.data?.maritalStatus.shouldBe("Widowed") + } - it("returns an error when 404 NOT FOUND is returned") { - prisonerOffenderSearchApiMockServer.stubGetPrisoner( - nomsNumber, - """ + it("returns an error when 404 NOT FOUND is returned") { + prisonerOffenderSearchApiMockServer.stubForGet( + getPath, + """ { "developerMessage": "cannot find person" } """, - HttpStatus.NOT_FOUND, - ) + HttpStatus.NOT_FOUND, + ) - val response = prisonerOffenderSearchGateway.getPrisonOffender(nomsNumber) + val response = prisonerOffenderSearchGateway.getPrisonOffender(nomsNumber) - response.hasError(UpstreamApiError.Type.ENTITY_NOT_FOUND).shouldBeTrue() + response.hasError(UpstreamApiError.Type.ENTITY_NOT_FOUND).shouldBeTrue() + } } - } - }) + }, + ) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonerOffenderSearchApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonerOffenderSearchApiMockServer.kt deleted file mode 100644 index c39ade947..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/PrisonerOffenderSearchApiMockServer.kt +++ /dev/null @@ -1,50 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import com.github.tomakehurst.wiremock.client.WireMock.post -import org.springframework.http.HttpStatus - -class PrisonerOffenderSearchApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4001 - } - - fun stubGetPrisoner( - nomisNumber: String, - responseBody: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/prisoner/$nomisNumber") - .withHeader("Authorization", matching("Bearer ${HmppsAuthMockServer.TOKEN}")) - .willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(responseBody.trimIndent()), - ), - ) - } - - fun stubPostPrisonerSearch( - requestBody: String, - responseBody: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - post("/global-search?size=9999") - .withHeader("Authorization", matching("Bearer ${HmppsAuthMockServer.TOKEN}")) - .withRequestBody(WireMock.equalToJson(requestBody)) - .willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(responseBody.trimIndent()), - ), - ) - } -} From 1b58ee1b4ba39be68044131e2cb35d38bef0a956 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 15:28:55 +0000 Subject: [PATCH 14/18] remove probationOffenderSearch mock server --- .../GetAddressesForPersonTest.kt | 27 ++++++---- .../ProbationOffenderSearchGatewayTest.kt | 51 ++++++++++++------- .../ProbationOffenderSearchApiMockServer.kt | 32 ------------ 3 files changed, 52 insertions(+), 58 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ProbationOffenderSearchApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/GetAddressesForPersonTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/GetAddressesForPersonTest.kt index fc715f00c..829f8a099 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/GetAddressesForPersonTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/GetAddressesForPersonTest.kt @@ -14,9 +14,10 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.ProbationOffenderSearchGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.helpers.generateTestAddress +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ProbationOffenderSearchApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Address +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi @ActiveProfiles("test") @ContextConfiguration( @@ -28,12 +29,14 @@ class GetAddressesForPersonTest( private val probationOffenderSearchGateway: ProbationOffenderSearchGateway, ) : DescribeSpec( { - val probationOffenderSearchApiMockServer = ProbationOffenderSearchApiMockServer() + val probationOffenderSearchApiMockServer = ApiMockServer.create(UpstreamApi.PROBATION_OFFENDER_SEARCH) + val path = "/search" val hmppsId = "X777776" beforeEach { probationOffenderSearchApiMockServer.start() - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ @@ -99,7 +102,8 @@ class GetAddressesForPersonTest( } it("returns an empty list when no addresses are found") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ @@ -120,7 +124,8 @@ class GetAddressesForPersonTest( } it("returns an error when no results are returned") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", "[]", ) @@ -131,7 +136,8 @@ class GetAddressesForPersonTest( } it("returns an empty list when there is no contactDetails field") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ @@ -149,7 +155,8 @@ class GetAddressesForPersonTest( } it("returns an empty list when contactDetails field is null") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ @@ -168,7 +175,8 @@ class GetAddressesForPersonTest( } it("returns an empty list when contactDetails.addresses field is null") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ @@ -189,7 +197,8 @@ class GetAddressesForPersonTest( } it("returns an empty list when the type is an empty object") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/ProbationOffenderSearchGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/ProbationOffenderSearchGatewayTest.kt index ffcf6bd02..efd980621 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/ProbationOffenderSearchGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationoffendersearch/ProbationOffenderSearchGatewayTest.kt @@ -18,8 +18,9 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.ProbationOffenderSearchGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ProbationOffenderSearchApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import java.io.File import java.time.LocalDate import java.time.format.DateTimeFormatter @@ -33,7 +34,8 @@ class ProbationOffenderSearchGatewayTest( @MockitoBean val hmppsAuthGateway: HmppsAuthGateway, private val probationOffenderSearchGateway: ProbationOffenderSearchGateway, ) : DescribeSpec({ - val probationOffenderSearchApiMockServer = ProbationOffenderSearchApiMockServer() + val probationOffenderSearchApiMockServer = ApiMockServer.create(UpstreamApi.PROBATION_OFFENDER_SEARCH) + val path = "/search" beforeEach { probationOffenderSearchApiMockServer.start() @@ -54,7 +56,8 @@ class ProbationOffenderSearchGatewayTest( val dateOfBirthString = dateOfBirth.format(DateTimeFormatter.ISO_DATE) beforeEach { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "firstName": "$firstName", @@ -98,7 +101,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns person(s) when searching on first name and last name") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "firstName": "Ahsoka", @@ -132,7 +136,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns person(s) when searching on first name and last name") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "firstName": "Ahsoka", @@ -166,7 +171,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns person(s) when searching on first name only") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "firstName": "Ahsoka", @@ -197,7 +203,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns person(s) when searching on last name only") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "surname": "Tano", @@ -228,7 +235,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns person(s) when searching on pnc number only") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "pncNumber": "2018/0123456X", @@ -259,7 +267,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns person(s) when searching on date of birth only") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "dateOfBirth": "1966-10-25", @@ -290,7 +299,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns person(s) when searching within aliases") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, """ { "firstName": "Fulcrum", @@ -335,7 +345,8 @@ class ProbationOffenderSearchGatewayTest( describe("when PNC id is used to make requests") { val hmppsId = "2002/1121M" beforeEach { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"pncNumber\": \"$hmppsId\"}", """ [ @@ -399,7 +410,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns a person without aliases when no aliases are found") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"pncNumber\": \"$hmppsId\"}", """ [ @@ -419,7 +431,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns null when 400 Bad Request is returned") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"pncNumber\": \"$hmppsId\"}", """ { @@ -436,7 +449,8 @@ class ProbationOffenderSearchGatewayTest( } it("returns null when no offenders are returned") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"pncNumber\": \"$hmppsId\"}", "[]", ) @@ -451,7 +465,8 @@ class ProbationOffenderSearchGatewayTest( val hmppsId = "X777776" beforeEach { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ @@ -470,7 +485,8 @@ class ProbationOffenderSearchGatewayTest( } it("calls the Probation API service with a Delius CRN") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"crn\": \"$hmppsId\"}", """ [ @@ -492,7 +508,8 @@ class ProbationOffenderSearchGatewayTest( val hmppsId = "A7777ZZ" it("calls the Probation API service with a Nomis number") { - probationOffenderSearchApiMockServer.stubPostOffenderSearch( + probationOffenderSearchApiMockServer.stubForPost( + path, "{\"nomsNumber\": \"$hmppsId\"}", """ [ diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ProbationOffenderSearchApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ProbationOffenderSearchApiMockServer.kt deleted file mode 100644 index 84932530a..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ProbationOffenderSearchApiMockServer.kt +++ /dev/null @@ -1,32 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.equalToJson -import com.github.tomakehurst.wiremock.client.WireMock.matching -import com.github.tomakehurst.wiremock.client.WireMock.post -import org.springframework.http.HttpStatus - -class ProbationOffenderSearchApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4002 - } - - fun stubPostOffenderSearch( - requestBody: String, - responseBody: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - post("/search") - .withHeader("Authorization", matching("Bearer ${HmppsAuthMockServer.TOKEN}")) - .withRequestBody(equalToJson(requestBody)) - .willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(responseBody.trimIndent()), - ), - ) - } -} From 1c66f57b16c4432d7c9a0b564fb3f9aed7951b7f Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 15:31:46 +0000 Subject: [PATCH 15/18] remove riskManagement mock server --- .../RiskManagementGatewayTest.kt | 14 +++++---- .../RiskManagementApiMockServer.kt | 30 ------------------- 2 files changed, 8 insertions(+), 36 deletions(-) delete mode 100755 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/RiskManagementApiMockServer.kt diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/riskManagement/RiskManagementGatewayTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/riskManagement/RiskManagementGatewayTest.kt index 6e0bdd3bd..ef1c8bebd 100755 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/riskManagement/RiskManagementGatewayTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/riskManagement/RiskManagementGatewayTest.kt @@ -13,8 +13,9 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.RiskManagementGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.RiskManagementApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.io.File @@ -28,7 +29,7 @@ class RiskManagementGatewayTest( private val riskManagementGateway: RiskManagementGateway, ) : DescribeSpec({ - val riskManagementMockServer = RiskManagementApiMockServer() + val riskManagementMockServer = ApiMockServer.create(UpstreamApi.RISK_MANAGEMENT_PLAN) beforeEach { riskManagementMockServer.start() @@ -43,10 +44,11 @@ class RiskManagementGatewayTest( describe("Get risks for given CRN") { val crn = "D1974X" + val path = "/risks/crn/$crn/risk-management-plan" beforeEach { - riskManagementMockServer.stubGetRiskManagementPlan( - crn, + riskManagementMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/riskManagement/fixtures/GetRiskManagementPlanResponse.json", ).readText(), @@ -75,8 +77,8 @@ class RiskManagementGatewayTest( } it("returns an error response when upstream service returns 403") { - riskManagementMockServer.stubGetRiskManagementPlan( - crn, + riskManagementMockServer.stubForGet( + path, "{}", HttpStatus.FORBIDDEN, ) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/RiskManagementApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/RiskManagementApiMockServer.kt deleted file mode 100755 index d61a07d14..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/RiskManagementApiMockServer.kt +++ /dev/null @@ -1,30 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class RiskManagementApiMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4004 - } - - fun stubGetRiskManagementPlan( - crn: String, - responseBody: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/risks/crn/$crn/risk-management-plan") - .withHeader("Authorization", matching("Bearer ${HmppsAuthMockServer.TOKEN}")) - .willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(responseBody.trimIndent()), - ), - ) - } -} From d71e7e13b12e834c4d97aa933f3335c014badea1 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 15:39:38 +0000 Subject: [PATCH 16/18] remove EPF mock server; add EFFECTIVE_PROPOSAL_FRAMEWORK to Upstream API model --- .../ProbationIntegrationEPFGateway.kt | 2 +- .../models/hmpps/UpstreamApi.kt | 1 + .../GetEPFPersonDetailsTest.kt | 11 ++++--- .../mockservers/ApiMockServer.kt | 1 + ...iveProposalFrameworkAndDeliusMockServer.kt | 33 ------------------- 5 files changed, 9 insertions(+), 39 deletions(-) delete mode 100644 src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/EffectiveProposalFrameworkAndDeliusMockServer.kt diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ProbationIntegrationEPFGateway.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ProbationIntegrationEPFGateway.kt index 08ca7038b..8f9c85991 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ProbationIntegrationEPFGateway.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ProbationIntegrationEPFGateway.kt @@ -29,7 +29,7 @@ class ProbationIntegrationEPFGateway( HttpMethod.GET, "/case-details/$id/$eventNumber", authenticationHeader(), - UpstreamApi.NDELIUS, + UpstreamApi.EFFECTIVE_PROPOSAL_FRAMEWORK, ) return when (result) { diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/UpstreamApi.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/UpstreamApi.kt index 4ec6b7541..e9dce8ba6 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/UpstreamApi.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/UpstreamApi.kt @@ -6,6 +6,7 @@ enum class UpstreamApi { PROBATION_OFFENDER_SEARCH, NDELIUS, ASSESS_RISKS_AND_NEEDS, + EFFECTIVE_PROPOSAL_FRAMEWORK, ADJUDICATIONS, CVL, CASE_NOTES, diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationintegrationEPF/GetEPFPersonDetailsTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationintegrationEPF/GetEPFPersonDetailsTest.kt index e4589d43a..0a610551d 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationintegrationEPF/GetEPFPersonDetailsTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationintegrationEPF/GetEPFPersonDetailsTest.kt @@ -13,8 +13,9 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.HmppsAuthGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.ProbationIntegrationEPFGateway import uk.gov.justice.digital.hmpps.hmppsintegrationapi.helpers.generateCaseDetail -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.EffectiveProposalFrameworkAndDeliusMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.ApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.HmppsAuthMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import java.io.File @ActiveProfiles("test") @@ -27,15 +28,15 @@ class GetEPFPersonDetailsTest( val probationIntegrationEPFGateway: ProbationIntegrationEPFGateway, ) : DescribeSpec( { - val effectiveProposalFrameworkAndDeliusMockServer = EffectiveProposalFrameworkAndDeliusMockServer() + val effectiveProposalFrameworkAndDeliusMockServer = ApiMockServer.create(UpstreamApi.EFFECTIVE_PROPOSAL_FRAMEWORK) val hmppsId = "X777776" val eventNumber = 1234 + val path = "/case-details/$hmppsId/$eventNumber" beforeEach { effectiveProposalFrameworkAndDeliusMockServer.start() - effectiveProposalFrameworkAndDeliusMockServer.stubGetCaseDetailForPerson( - hmppsId, - 1234, + effectiveProposalFrameworkAndDeliusMockServer.stubForGet( + path, File( "src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/probationintegrationEPF/fixtures/GetEPFPersonDetailsResponse.json", ).readText(), diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt index ce7a9a210..6699a1f09 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt @@ -20,6 +20,7 @@ class ApiMockServer( UpstreamApi.PROBATION_OFFENDER_SEARCH -> ApiMockServer(4002) UpstreamApi.NDELIUS -> ApiMockServer(4003) UpstreamApi.ASSESS_RISKS_AND_NEEDS -> ApiMockServer(4004) + UpstreamApi.EFFECTIVE_PROPOSAL_FRAMEWORK -> ApiMockServer(4005) UpstreamApi.ADJUDICATIONS -> ApiMockServer(4006) UpstreamApi.CVL -> ApiMockServer(4007) UpstreamApi.CASE_NOTES -> ApiMockServer(4008) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/EffectiveProposalFrameworkAndDeliusMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/EffectiveProposalFrameworkAndDeliusMockServer.kt deleted file mode 100644 index 60b0e3f1a..000000000 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/EffectiveProposalFrameworkAndDeliusMockServer.kt +++ /dev/null @@ -1,33 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers - -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.WireMock.aResponse -import com.github.tomakehurst.wiremock.client.WireMock.get -import com.github.tomakehurst.wiremock.client.WireMock.matching -import org.springframework.http.HttpStatus - -class EffectiveProposalFrameworkAndDeliusMockServer : WireMockServer(WIREMOCK_PORT) { - companion object { - private const val WIREMOCK_PORT = 4005 - } - - fun stubGetCaseDetailForPerson( - id: String, - eventNumber: Int, - body: String, - status: HttpStatus = HttpStatus.OK, - ) { - stubFor( - get("/case-details/$id/$eventNumber") - .withHeader( - "Authorization", - matching("Bearer ${HmppsAuthMockServer.TOKEN}"), - ).willReturn( - aResponse() - .withHeader("Content-Type", "application/json") - .withStatus(status.value()) - .withBody(body.trimIndent()), - ), - ) - } -} From 46aca95ca191a730a59c5e6c4feae7ea6ed1fb7e Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 15:41:59 +0000 Subject: [PATCH 17/18] rename genericMockServer as it is only used for webclientwrapper tests --- .../extensions/WebClientWrapperTest.kt | 8 ++++---- .../{GenericApiMockServer.kt => TestApiMockServer.kt} | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) rename src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/{GenericApiMockServer.kt => TestApiMockServer.kt} (95%) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/extensions/WebClientWrapperTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/extensions/WebClientWrapperTest.kt index 5015e4556..c2fbf06ae 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/extensions/WebClientWrapperTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/extensions/WebClientWrapperTest.kt @@ -8,7 +8,7 @@ import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus import org.springframework.web.reactive.function.client.WebClientResponseException import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.WebClientWrapper.WebClientWrapperResponse -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.GenericApiMockServer +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.mockservers.TestApiMockServer import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError import java.io.File @@ -35,7 +35,7 @@ data class TestDomainModel( class WebClientWrapperTest : DescribeSpec({ - val mockServer = GenericApiMockServer() + val mockServer = TestApiMockServer() val id = "ABC1234" val headers = mapOf("foo" to "bar") @@ -125,7 +125,7 @@ class WebClientWrapperTest : { "sourceName": "Paul" }, - { + { "sourceName": "Paul" } ] @@ -154,7 +154,7 @@ class WebClientWrapperTest : { "sourceName": "Paul" }, - { + { "sourceName": "Paul" } ] diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/GenericApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/TestApiMockServer.kt similarity index 95% rename from src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/GenericApiMockServer.kt rename to src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/TestApiMockServer.kt index 9d6fa39c3..eafa9b3c8 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/GenericApiMockServer.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/TestApiMockServer.kt @@ -4,7 +4,7 @@ import com.github.tomakehurst.wiremock.WireMockServer import com.github.tomakehurst.wiremock.client.WireMock import org.springframework.http.HttpStatus -class GenericApiMockServer : WireMockServer(WIREMOCK_PORT) { +class TestApiMockServer : WireMockServer(WIREMOCK_PORT) { companion object { private const val WIREMOCK_PORT = 4000 } From f4dc98ff690b736e03ca50a1bab6f65277683586 Mon Sep 17 00:00:00 2001 From: emmalanigan Date: Wed, 5 Mar 2025 17:29:04 +0000 Subject: [PATCH 18/18] add comment to explain where ports come from on mock server --- .../hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt index 6699a1f09..b2f5a0245 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/mockservers/ApiMockServer.kt @@ -13,6 +13,7 @@ class ApiMockServer( private val port: Int, ) : WireMockServer(port) { companion object { + // These ports must match the config in the yaml files fun create(upstreamApi: UpstreamApi): ApiMockServer = when (upstreamApi) { UpstreamApi.NOMIS -> ApiMockServer(4000)