generated from ministryofjustice/template-microservice-repository
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #49 from ministryofjustice/origin/LASB-2942
Origin/lasb 2942
- Loading branch information
Showing
14 changed files
with
711 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
50 changes: 50 additions & 0 deletions
50
...ustice/laa/crime/application/tracking/config/MaatCourtDataWebClientConfigurationTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package uk.gov.justice.laa.crime.application.tracking.config; | ||
|
||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; | ||
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository; | ||
import org.springframework.web.reactive.function.client.WebClient; | ||
import reactor.netty.resources.ConnectionProvider; | ||
|
||
import org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction; | ||
import uk.gov.justice.laa.crime.application.tracking.client.MaatCourtDataApiClient; | ||
|
||
import java.time.Duration; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertNotNull; | ||
import static org.mockito.Mockito.when; | ||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
@SpringBootTest | ||
class MaatCourtDataWebClientConfigurationTest { | ||
@Autowired | ||
private ServicesConfiguration servicesConfiguration; | ||
@Autowired | ||
private ClientRegistrationRepository clientRegistrations; | ||
@Autowired | ||
private OAuth2AuthorizedClientRepository authorizedClients; | ||
@Autowired | ||
private WebClient webClient; | ||
|
||
private MaatCourtDataWebClientConfiguration webClientConfig; | ||
|
||
@BeforeEach | ||
void setUp() { | ||
webClientConfig = new MaatCourtDataWebClientConfiguration(); | ||
} | ||
|
||
@Test | ||
void shouldConfigureWebClient(){ | ||
WebClient webClient = webClientConfig.maatCourtDataWebClient(servicesConfiguration, clientRegistrations, authorizedClients); | ||
assertNotNull(webClient); | ||
} | ||
|
||
@Test | ||
void shouldConfigureMaatCourtDataApiClient(){ | ||
MaatCourtDataApiClient maatCourtDataApiClient = webClientConfig.maatCourtDataApiClient(webClient); | ||
assertNotNull(maatCourtDataApiClient); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
.../java/uk/gov/justice/laa/crime/application/tracking/config/ServicesConfigurationTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package uk.gov.justice.laa.crime.application.tracking.config; | ||
|
||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.context.properties.EnableConfigurationProperties; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.test.context.TestPropertySource; | ||
|
||
import java.lang.reflect.Field; | ||
|
||
import static org.junit.jupiter.api.Assertions.*; | ||
|
||
@SpringBootTest | ||
class ServicesConfigurationTest { | ||
@Autowired | ||
ServicesConfiguration myClass; | ||
@Test | ||
void testVariables() { | ||
String expectedUrl = "http://test.com"; | ||
String expectedRegID = "201920"; | ||
// Call a public method that interacts with the private variable | ||
ServicesConfiguration.MaatApi maatApi = new ServicesConfiguration.MaatApi(expectedUrl, expectedRegID); | ||
myClass.setMaatApi(maatApi); | ||
|
||
// Assert the expected behavior | ||
assertEquals(expectedUrl, maatApi.getBaseUrl()); | ||
assertEquals(expectedRegID, maatApi.getRegistrationId()); | ||
} | ||
|
||
} |
24 changes: 24 additions & 0 deletions
24
...ov/justice/laa/crime/application/tracking/exception/ApplicationTrackingExceptionTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package uk.gov.justice.laa.crime.application.tracking.exception; | ||
|
||
import org.junit.jupiter.api.Test; | ||
import org.springframework.http.HttpStatus; | ||
|
||
import static org.junit.jupiter.api.Assertions.*; | ||
|
||
class ApplicationTrackingExceptionTest { | ||
|
||
@Test | ||
void getHttpResponseCode() { | ||
// Arrange | ||
HttpStatus expectedStatus = HttpStatus.BAD_REQUEST; // Example HttpStatus | ||
String expectedMessage = "Test message"; | ||
|
||
// Act | ||
ApplicationTrackingException exception = new ApplicationTrackingException(expectedStatus, expectedMessage); | ||
|
||
// Assert | ||
assertEquals(expectedMessage, exception.getMessage(), "The exception message should match the provided message"); | ||
assertEquals(expectedStatus, exception.getHttpResponseCode(), "The HttpStatus should match the provided HttpStatus"); | ||
|
||
} | ||
} |
257 changes: 257 additions & 0 deletions
257
...laa/crime/application/tracking/integration/ApplicationTrackingServiceIntegrationTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,257 @@ | ||
package uk.gov.justice.laa.crime.application.tracking.integration; | ||
|
||
import okhttp3.mockwebserver.MockWebServer; | ||
import org.junit.jupiter.api.*; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.test.web.servlet.MockMvc; | ||
import org.springframework.test.web.servlet.RequestBuilder; | ||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; | ||
import org.springframework.test.web.servlet.setup.MockMvcBuilders; | ||
import org.springframework.web.context.WebApplicationContext; | ||
import uk.gov.justice.laa.crime.application.tracking.CrimeApplicationTrackingApplication; | ||
import uk.gov.justice.laa.crime.application.tracking.model.ApplicationTrackingOutputResult; | ||
import uk.gov.justice.laa.crime.application.tracking.model.ApplicationTrackingOutputResult.RequestSource; | ||
import uk.gov.justice.laa.crime.application.tracking.testutils.FileUtils; | ||
import uk.gov.justice.laa.crime.application.tracking.testutils.JsonUtils; | ||
|
||
import java.io.IOException; | ||
|
||
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | ||
|
||
@SpringBootTest(classes = CrimeApplicationTrackingApplication.class, webEnvironment = DEFINED_PORT) | ||
@TestInstance(TestInstance.Lifecycle.PER_CLASS) | ||
class ApplicationTrackingServiceIntegrationTest { | ||
private MockMvc mvc; | ||
|
||
private static MockWebServer mockWebServer; | ||
|
||
private ApplicationTrackingOutputResult applicationTrackingOutputResultJson; | ||
|
||
@Autowired private WebApplicationContext webApplicationContext; | ||
|
||
@BeforeAll | ||
public void initialiseMockWebServer() throws IOException { | ||
mockWebServer = new MockWebServer(); | ||
mockWebServer.setDispatcher(MockWebServerStubs.forDownstreamApiCalls()); | ||
mockWebServer.start(9999); | ||
} | ||
|
||
@AfterAll | ||
protected void shutdownMockWebServer() throws IOException { | ||
mockWebServer.shutdown(); | ||
} | ||
|
||
@BeforeEach | ||
public void setup() { | ||
String content = FileUtils.readFileToString("testdata/ApplicationTrackingOutputResult_default.json"); | ||
applicationTrackingOutputResultJson = JsonUtils.jsonToObject(content, ApplicationTrackingOutputResult.class); | ||
|
||
this.mvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build(); | ||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldCreateAudit_andDoRequiredUpdates() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.CREATE_APPLICATION); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().isOk()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldNotCreateAudit_andThrowError() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.CREATE_APPLICATION, 123456); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().is4xxClientError()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldProcessHardship_andDoRequiredUpdates() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.HARDSHIP); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().isOk()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldNotProcessHardship_andThrowError() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.HARDSHIP, 123456); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().is4xxClientError()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldProcessCrownCourt_andDoRequiredUpdates() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.CROWN_COURT); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().isOk()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldNotProcessCrownCourt_andThrowError() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.CROWN_COURT, 123456); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().is4xxClientError()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldUpdateCapitalAndEquity_andDoRequiredUpdates() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.CAPITAL_AND_EQUITY); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().isOk()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldNotUpdateCapitalAndEquity_andThrowError() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.CAPITAL_AND_EQUITY, 12345); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().is4xxClientError()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldProcessPassportIOJ_andDoRequiredUpdates() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.PASSPORT_IOJ); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().isOk()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldNotProcessPassportIOJ_andThrowError() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.PASSPORT_IOJ, 12345); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().is4xxClientError()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequest_shouldProcessMeansAssesment_andDoRequiredUpdates() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.MEANS_ASSESSMENT); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().isOk()) | ||
.andReturn(); | ||
|
||
} | ||
|
||
@Test | ||
void givenCreateApplicationRequestWithUnknownUSN_shouldNotProcessMeansAssessment_andThrowError() throws Exception { | ||
String content = createApplicationTrackingOutputResult(RequestSource.MEANS_ASSESSMENT, 40400404); | ||
RequestBuilder request = | ||
MockMvcRequestBuilders.post( | ||
"/api/internal/v1/application-tracking-output-result") | ||
.content(content) | ||
.accept(MediaType.APPLICATION_JSON) | ||
.contentType(MediaType.APPLICATION_JSON); | ||
|
||
mvc.perform(request) | ||
.andExpect(status().is4xxClientError()) | ||
.andReturn(); | ||
} | ||
|
||
private String createApplicationTrackingOutputResult(RequestSource requestSource, int usn) { | ||
applicationTrackingOutputResultJson.setRequestSource(requestSource); | ||
applicationTrackingOutputResultJson.setUsn(usn); | ||
return JsonUtils.objectToJson(requestSource); | ||
} | ||
|
||
|
||
private String createApplicationTrackingOutputResult(RequestSource requestSource) { | ||
applicationTrackingOutputResultJson.setRequestSource(requestSource); | ||
return JsonUtils.objectToJson(applicationTrackingOutputResultJson); | ||
} | ||
} |
Oops, something went wrong.