Skip to content

Commit

Permalink
CDPS-1229 Set service name header
Browse files Browse the repository at this point in the history
  • Loading branch information
scottrowley committed Mar 10, 2025
1 parent 8ea2ea0 commit e190496
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
1 change: 1 addition & 0 deletions readme/build_test_run.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ SYSTEM_CLIENT_ID=<Extract from k8s namespace>
SYSTEM_CLIENT_SECRET=<Extract from k8s namespace>
HMPPS_AUTH_URL=https://sign-in-dev.hmpps.service.justice.gov.uk/auth
PRISON_API_BASE_URL=https://prison-api-dev.prison.service.justice.gov.uk
DOCUMENT_API_BASE_URL=https://document-api-dev.hmpps.service.justice.gov.uk
```
</details>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,14 @@ import org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentia
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository
import org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction
import org.springframework.web.context.annotation.RequestScope
import org.springframework.web.reactive.function.client.ClientRequest
import org.springframework.web.reactive.function.client.ClientResponse
import org.springframework.web.reactive.function.client.ExchangeFilterFunction
import org.springframework.web.reactive.function.client.ExchangeFunction
import org.springframework.web.reactive.function.client.WebClient
import org.springframework.web.reactive.function.client.support.WebClientAdapter
import org.springframework.web.service.invoker.HttpServiceProxyFactory
import reactor.core.publisher.Mono
import reactor.netty.http.client.HttpClient
import uk.gov.justice.digital.hmpps.personintegrationapi.common.client.DocumentApiClient
import uk.gov.justice.digital.hmpps.personintegrationapi.common.client.PrisonApiClient
Expand Down Expand Up @@ -55,7 +60,7 @@ class WebClientConfiguration(
fun prisonApiWebClient(
clientRegistrationRepository: ClientRegistrationRepository,
builder: WebClient.Builder,
): WebClient = getOAuthWebClient(
) = getOAuthWebClient(
authorizedClientManagerUserEnhanced(clientRegistrationRepository),
builder,
prisonApiBaseUri,
Expand Down Expand Up @@ -92,7 +97,7 @@ class WebClientConfiguration(
builder: WebClient.Builder,
): WebClient = getOAuthWebClient(
authorizedClientManagerUserEnhanced(clientRegistrationRepository),
builder,
builder.filter(DocumentApiHeaderFilter()),
documentApiBaseUri,
"hmpps-person-integration-api",
documentApiTimeout,
Expand Down Expand Up @@ -148,4 +153,15 @@ class WebClientConfiguration(
.apply(oauth2Client.oauth2Configuration())
.build()
}

private class DocumentApiHeaderFilter : ExchangeFilterFunction {
override fun filter(request: ClientRequest, next: ExchangeFunction): Mono<ClientResponse> {
val modifiedRequest = ClientRequest
.from(request)
.header("Service-Name", "hmpps-person-integration-api")
.build()

return next.exchange(modifiedRequest)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.github.tomakehurst.wiremock.client.WireMock.aResponse
import com.github.tomakehurst.wiremock.client.WireMock.get
import com.github.tomakehurst.wiremock.client.WireMock.post
import com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching
import com.github.tomakehurst.wiremock.matching.EqualToPattern
import com.github.tomakehurst.wiremock.matching.MultipartValuePatternBuilder
import org.junit.jupiter.api.extension.AfterAllCallback
import org.junit.jupiter.api.extension.BeforeAllCallback
Expand Down Expand Up @@ -69,6 +70,7 @@ class DocumentApiMockServer : WireMockServer(8083) {
fun stubVirusScanPassed() {
stubFor(
post(urlPathMatching("/documents/scan"))
.withHeader("Service-Name", EqualToPattern("hmpps-person-integration-api"))
.withMultipartRequestBody(MultipartValuePatternBuilder().withFileName("filename.jpg"))
.willReturn(
aResponse().withHeader("Content-Type", "application/json")
Expand All @@ -81,6 +83,7 @@ class DocumentApiMockServer : WireMockServer(8083) {
fun stubVirusScanFailed() {
stubFor(
post(urlPathMatching("/documents/scan"))
.withHeader("Service-Name", EqualToPattern("hmpps-person-integration-api"))
.withMultipartRequestBody(MultipartValuePatternBuilder().withFileName("virus.jpg"))
.willReturn(
aResponse().withHeader("Content-Type", "application/json")
Expand All @@ -93,6 +96,7 @@ class DocumentApiMockServer : WireMockServer(8083) {
fun stubVirusScanError() {
stubFor(
post(urlPathMatching("/documents/scan"))
.withHeader("Service-Name", EqualToPattern("hmpps-person-integration-api"))
.withMultipartRequestBody(MultipartValuePatternBuilder().withFileName("error.jpg"))
.willReturn(
aResponse().withHeader("Content-Type", "application/json")
Expand All @@ -105,6 +109,7 @@ class DocumentApiMockServer : WireMockServer(8083) {
fun stubVirusScanUnexpectedError() {
stubFor(
post(urlPathMatching("/documents/scan"))
.withHeader("Service-Name", EqualToPattern("hmpps-person-integration-api"))
.withMultipartRequestBody(MultipartValuePatternBuilder().withFileName("unexpected_error.jpg"))
.willReturn(
aResponse().withHeader("Content-Type", "application/json")
Expand Down

0 comments on commit e190496

Please sign in to comment.