Skip to content

Commit f9cc9da

Browse files
committed
mock service in test for unauthorised requested path
1 parent 23f2f1c commit f9cc9da

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/extensions/AuthorisationFilter.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class AuthorisationFilter
2222
@Autowired
2323
constructor(
2424
var authorisationConfig: AuthorisationConfig,
25+
var authoriseConsumerService: AuthoriseConsumerService,
2526
) : Filter {
2627
@Throws(IOException::class, ServletException::class)
2728
override fun doFilter(
@@ -31,7 +32,6 @@ class AuthorisationFilter
3132
) {
3233
val req = request as HttpServletRequest
3334
val res = response as HttpServletResponse
34-
val authoriseConsumerService = AuthoriseConsumerService()
3535
val subjectDistinguishedName = req.getAttribute("clientName") as String?
3636
val requestedPath = req.requestURI
3737

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/extensions/AuthorisationFilterTest.kt

+16-8
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@ import org.mockito.kotlin.whenever
1111
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.AuthorisationConfig
1212
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerConfig
1313
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters
14+
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.internal.AuthoriseConsumerService
1415

1516
class AuthorisationFilterTest {
1617
private var authorisationConfig: AuthorisationConfig = AuthorisationConfig()
17-
private var authorisationFilter: AuthorisationFilter = AuthorisationFilter(authorisationConfig)
18+
private var authorisationFilter: AuthorisationFilter = AuthorisationFilter(authorisationConfig, AuthoriseConsumerService())
19+
private var examplePath: String = "/v1/persons"
20+
private var exampleConsumer: String = "consumer-name"
1821

1922
@Test
2023
fun `calls the onward chain`() {
2124
// Arrange
2225
val mockRequest = mock(HttpServletRequest::class.java)
23-
whenever(mockRequest.requestURI).thenReturn("/v1/persons")
24-
whenever(mockRequest.getAttribute("clientName")).thenReturn("consumer-name")
26+
whenever(mockRequest.requestURI).thenReturn(examplePath)
27+
whenever(mockRequest.getAttribute("clientName")).thenReturn(exampleConsumer)
2528
val mockResponse = mock(HttpServletResponse::class.java)
2629
val mockChain = mock(FilterChain::class.java)
2730

28-
authorisationConfig.consumers = mapOf("consumer-name" to ConsumerConfig(include = listOf("/v1/persons"), filters = ConsumerFilters(emptyMap())))
31+
authorisationConfig.consumers = mapOf(exampleConsumer to ConsumerConfig(include = listOf(examplePath), filters = ConsumerFilters(emptyMap())))
2932

3033
// Act
3134
authorisationFilter.doFilter(mockRequest, mockResponse, mockChain)
@@ -37,12 +40,17 @@ class AuthorisationFilterTest {
3740
@Test
3841
fun `generates error when consumer is unauthorised for requested path`() {
3942
val mockRequest = mock(HttpServletRequest::class.java)
40-
whenever(mockRequest.requestURI).thenReturn("/v1/persons")
41-
whenever(mockRequest.getAttribute("clientName")).thenReturn("consumer-name")
43+
whenever(mockRequest.requestURI).thenReturn(examplePath)
44+
whenever(mockRequest.getAttribute("clientName")).thenReturn(exampleConsumer)
4245

4346
val mockResponse = mock(HttpServletResponse::class.java)
4447
val mockChain = mock(FilterChain::class.java)
45-
authorisationConfig.consumers = mapOf("consumer-name" to ConsumerConfig(include = null, filters = ConsumerFilters(emptyMap())))
48+
49+
val mockService = mock(AuthoriseConsumerService::class.java)
50+
whenever(mockService.execute(exampleConsumer, authorisationConfig.consumers, examplePath))
51+
.thenReturn(false)
52+
53+
val authorisationFilter = AuthorisationFilter(authorisationConfig, mockService)
4654

4755
// Act
4856
authorisationFilter.doFilter(mockRequest, mockResponse, mockChain)
@@ -54,7 +62,7 @@ class AuthorisationFilterTest {
5462
@Test
5563
fun `generates error when subject distinguished name is null in the request`() {
5664
val mockRequest = mock(HttpServletRequest::class.java)
57-
whenever(mockRequest.requestURI).thenReturn("/v1/persons")
65+
whenever(mockRequest.requestURI).thenReturn(examplePath)
5866
whenever(mockRequest.getAttribute("clientName")).thenReturn(null)
5967
val mockResponse = mock(HttpServletResponse::class.java)
6068
val mockChain = mock(FilterChain::class.java)

0 commit comments

Comments
 (0)