diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/AbstractControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/AbstractControllerIntegrationTest.java new file mode 100644 index 0000000..ecea734 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/AbstractControllerIntegrationTest.java @@ -0,0 +1,197 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static uk.gov.laa.ccms.caab.api.audit.AuditorAwareImpl.currentUserHolder; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.List; +import java.util.Objects; +import java.util.Random; +import org.junit.jupiter.api.BeforeEach; +import org.springframework.core.io.ClassPathResource; +import uk.gov.laa.ccms.caab.api.entity.AuditTrail; +import uk.gov.laa.ccms.caab.model.AuditDetail; + +public class AbstractControllerIntegrationTest { + + protected final String caabUserLoginId = "audit@user.com"; + + /** + * Recursively navigate the object using the fields array and set the field to null. + */ + private static void nullifyFieldRecursive(Object object, String[] fields, int index) + throws NoSuchFieldException, IllegalAccessException { + if (object == null || index >= fields.length) { + return; + } + + if (object instanceof List list) { + // Handle List objects + for (Object item : list) { + AbstractControllerIntegrationTest.nullifyFieldRecursive(item, fields, index); + } + } else { + Field field = object.getClass().getDeclaredField(fields[index]); + field.setAccessible(true); + + if (index == fields.length - 1) { + // Last field in the path, set to null + field.set(object, null); + } else { + // Not the last field, navigate to the next object or list in the path + Object nextObject = field.get(object); + AbstractControllerIntegrationTest.nullifyFieldRecursive(nextObject, fields, index + 1); + } + } + } + + @BeforeEach + public void setup() { + currentUserHolder.set(caabUserLoginId); + } + + public static boolean areAllFieldsEqual(Object obj1, Object obj2, Class clazz, List fieldsToIgnore) + throws IllegalArgumentException, IllegalAccessException { + + for (Field field : clazz.getDeclaredFields()) { + field.setAccessible(true); + + // Continue to the next field if it should be ignored + if (fieldsToIgnore.contains(field.getName())) { + continue; + } + + Object value1 = field.get(obj1); + Object value2 = field.get(obj2); + + if (!Objects.equals(value1, value2)) { + System.out.println("Field " + field.getName() + " is not equal: " + value1 + " != " + value2); + return false; + } + } + return true; + } + + /** + * Loads the JSON file from the classpath and parses it into a specified object. + * + * @param jsonFilePath The path to the JSON file to load + */ + protected T loadObjectFromJson(String jsonFilePath, Class objectType) throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + ClassPathResource resource = new ClassPathResource(jsonFilePath); + return objectMapper.readValue(resource.getInputStream(), objectType); + } + + /** + * Generates a random 12-digit number string to be used as a case reference number. + */ + protected String generateTestCaseRef() { + Random random = new Random(); + StringBuilder stringBuilder = new StringBuilder(12); + + for (int i = 0; i < 12; i++) { + int digit = random.nextInt(10); // Generate a random digit (0-9) + stringBuilder.append(digit); + } + + return stringBuilder.toString(); + } + + // Utility method to resolve the method chain and get the value + protected Object getObjectToCheckFromMethod(Object initialObject, String[] methodCalls) + throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + + Object currentObject = initialObject; + for (String methodName : methodCalls) { + Method method = currentObject.getClass().getMethod(methodName); + currentObject = method.invoke(currentObject); + } + return currentObject; + } + + /** + * Used to assert that the audit detail is set correctly. + * + * @param auditDetail The audit trail to check + * @param expectedAuditUser The expected audit user + */ + protected void assertAuditTrail(AuditDetail auditDetail, String expectedAuditUser) { + assertNotNull(auditDetail); + assertEquals(expectedAuditUser, auditDetail.getCreatedBy()); + assertEquals(expectedAuditUser, auditDetail.getLastSavedBy()); + assertNotNull(auditDetail.getCreated()); + assertNotNull(auditDetail.getLastSaved()); + } + + /** + * Assert that the audit trail is set correctly in the object. Uses reflection to navigate the + * auditTrailMethod path and assert that the audit trail is set correctly. + */ + protected void assertAuditTrail(Object object, String auditMethod, String expectedAuditUser) + throws InvocationTargetException, IllegalAccessException, NoSuchMethodException { + String[] methodCalls = auditMethod.split("\\."); + assertAuditTrailRecursive(object, methodCalls, 0, expectedAuditUser); + } + + /** + * Recursively navigate the object using the methodCalls array and assert that the audit trail is + * set correctly. + */ + private void assertAuditTrailRecursive(Object object, String[] methodCalls, int index, String expectedAuditUser) + throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + if (index >= methodCalls.length || object == null) { + return; + } + + Method method = object.getClass().getMethod(methodCalls[index]); + object = method.invoke(object); + + if (object instanceof List list) { + for (Object item : list) { + assertAuditTrailRecursive(item, methodCalls, index + 1, expectedAuditUser); + } + } else { + if (index == methodCalls.length - 1) { + assertAuditDetailsInObject(object, expectedAuditUser); + } else { + assertAuditTrailRecursive(object, methodCalls, index + 1, expectedAuditUser); + } + } + } + + /** + * Used to assert that the audit trail is set correctly in the object. + * + * @param object The object to check + * @param expectedAuditUser The expected audit user + */ + private void assertAuditDetailsInObject(Object object, String expectedAuditUser) { + if (object instanceof AuditTrail auditTrail) { + assertNotNull(auditTrail); + assertEquals(expectedAuditUser, auditTrail.getCreatedBy()); + assertEquals(expectedAuditUser, auditTrail.getLastSavedBy()); + assertNotNull(auditTrail.getCreated()); + assertNotNull(auditTrail.getLastSaved()); + } + } + + /** + * Sets the audit trail properties to null in the object. Uses reflection to navigate the + * list of auditTrailsToNull and set the audit trail to null. + */ + protected void setAuditPropertiesToNull(Object object, List auditTrailsToNull) throws NoSuchFieldException, IllegalAccessException { + if (object == null || auditTrailsToNull == null) { + return; + } + for (String trail : auditTrailsToNull) { + String[] fields = trail.split("\\."); + AbstractControllerIntegrationTest.nullifyFieldRecursive(object, fields, 0); + } + } +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseApplicationControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseApplicationControllerIntegrationTest.java index 2eeb0e1..e3c035a 100644 --- a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseApplicationControllerIntegrationTest.java +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseApplicationControllerIntegrationTest.java @@ -4,36 +4,22 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import static uk.gov.laa.ccms.caab.api.audit.AuditorAwareImpl.currentUserHolder; -import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; -import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.net.URI; import java.util.List; -import java.util.Objects; -import java.util.Random; import java.util.stream.Stream; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.context.jdbc.Sql; import uk.gov.laa.ccms.caab.api.controller.ApplicationController; -import uk.gov.laa.ccms.caab.api.controller.LinkedCaseController; -import uk.gov.laa.ccms.caab.api.controller.OpponentController; -import uk.gov.laa.ccms.caab.api.controller.PriorAuthorityController; -import uk.gov.laa.ccms.caab.api.controller.ProceedingController; -import uk.gov.laa.ccms.caab.api.controller.ScopeLimitationController; -import uk.gov.laa.ccms.caab.api.entity.AuditTrail; import uk.gov.laa.ccms.caab.api.service.ApplicationService; import uk.gov.laa.ccms.caab.model.ApplicationDetail; import uk.gov.laa.ccms.caab.model.ApplicationDetails; @@ -45,62 +31,15 @@ import uk.gov.laa.ccms.caab.model.Proceeding; import uk.gov.laa.ccms.caab.model.ScopeLimitation; -public abstract class BaseApplicationControllerIntegrationTest { +public abstract class BaseApplicationControllerIntegrationTest + extends AbstractControllerIntegrationTest { @Autowired private ApplicationController applicationController; - @Autowired - private LinkedCaseController linkedCaseController; - - @Autowired - private OpponentController opponentController; - - @Autowired - private PriorAuthorityController priorAuthorityController; - - @Autowired - private ProceedingController proceedingController; - - @Autowired - private ScopeLimitationController scopeLimitationController; - @Autowired private ApplicationService applicationService; - private final String caabUserLoginId = "audit@user.com"; - - @BeforeEach - public void setup() { - currentUserHolder.set(caabUserLoginId); - } - - /** - * Loads the JSON file from the classpath and parses it into a specified object. - * - * @param jsonFilePath The path to the JSON file to load - */ - private T loadObjectFromJson(String jsonFilePath, Class objectType) throws IOException { - ObjectMapper objectMapper = new ObjectMapper(); - ClassPathResource resource = new ClassPathResource(jsonFilePath); - return objectMapper.readValue(resource.getInputStream(), objectType); - } - - - /** - * Generates a random 12-digit number string to be used as a case reference number. - */ - private String generateTestCaseRef(){ - Random random = new Random(); - StringBuilder stringBuilder = new StringBuilder(12); - - for (int i = 0; i < 12; i++) { - int digit = random.nextInt(10); // Generate a random digit (0-9) - stringBuilder.append(digit); - } - - return stringBuilder.toString(); - } private static Stream createApplicationUpdateArguments() { return Stream.of( @@ -151,40 +90,6 @@ public void testUpdateApplication(String fileInput, String methodCall, String fi ApplicationDetail.class, List.of(fieldToIgnore, "auditTrail"))); } - // Utility method to resolve the method chain and get the value - private Object getObjectToCheckFromMethod(Object initialObject, String[] methodCalls) - throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { - - Object currentObject = initialObject; - for (String methodName : methodCalls) { - Method method = currentObject.getClass().getMethod(methodName); - currentObject = method.invoke(currentObject); - } - return currentObject; - } - - - public static boolean areAllFieldsEqual(Object obj1, Object obj2, Class clazz, List fieldsToIgnore) - throws IllegalArgumentException, IllegalAccessException { - - for (Field field : clazz.getDeclaredFields()) { - field.setAccessible(true); - - // Continue to the next field if it should be ignored - if (fieldsToIgnore.contains(field.getName())) { - continue; - } - - Object value1 = field.get(obj1); - Object value2 = field.get(obj2); - - if (!Objects.equals(value1, value2)) { - System.out.println("Field " + field.getName() + " is not equal: " + value1 + " != " + value2); - return false; - } - } - return true; - } /** * Arguments for the testCreateApplication test method. @@ -486,18 +391,6 @@ public void addApplicationProceedings() throws IOException { assertEquals(1, proceedings.size()); } - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql"}) - public void updateProceeding() throws IOException { - Long proceedingId = 2L; - - Proceeding updatedProceeding = loadObjectFromJson("/json/proceeding_new.json", Proceeding.class); - - ResponseEntity response = proceedingController.updateProceeding(proceedingId, caabUserLoginId, updatedProceeding); - - assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); - } - @Test @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql"}) public void getApplicationProceedings() { @@ -512,22 +405,6 @@ public void getApplicationProceedings() { assertEquals(1, proceedings.size()); } - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql"}) - public void deleteApplicationProceedings() { - Long caseRef = 41L; - Long proceedingRef = 2L; - - proceedingController.removeProceeding(proceedingRef, caabUserLoginId); - ResponseEntity> responseEntity = applicationController.getApplicationProceedings(caseRef); - - assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); - assertNotNull(responseEntity.getBody()); - - List proceedings = responseEntity.getBody(); - assertEquals(0, proceedings.size()); - } - @Test @Sql(scripts = {"/sql/application_insert.sql"}) public void addLinkedCase() throws IOException { @@ -565,22 +442,6 @@ public void getLinkedCase() { assertEquals(1, linkedCases.size()); } - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/linked_cases_insert.sql"}) - public void deleteLinkedCase() { - Long caseRef = 41L; - Long linkedCaseRef = 2L; - - linkedCaseController.removeLinkedCase(linkedCaseRef, caabUserLoginId); - ResponseEntity> responseEntity = applicationController.getApplicationLinkedCases(caseRef); - - assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); - assertNotNull(responseEntity.getBody()); - - List linkedCases = responseEntity.getBody(); - assertEquals(0, linkedCases.size()); - } - @Test @Sql(scripts = {"/sql/application_insert.sql"}) public void addPriorAuthority() throws IOException { @@ -594,18 +455,6 @@ public void addPriorAuthority() throws IOException { assertEquals(HttpStatus.CREATED, response.getStatusCode()); } - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/prior_authority_insert.sql"}) - public void updatePriorAuthority() throws IOException { - Long priorAuthorityId = 2L; - - PriorAuthority updatedPriorAuthority = loadObjectFromJson("/json/prior_authority_new.json", PriorAuthority.class); - - ResponseEntity response = priorAuthorityController.updatePriorAuthority(priorAuthorityId, caabUserLoginId, updatedPriorAuthority); - - assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); - } - @Test @Sql(scripts = {"/sql/application_insert.sql", "/sql/prior_authority_insert.sql"}) public void getPriorAuthority() { @@ -620,84 +469,6 @@ public void getPriorAuthority() { assertEquals(1, priorAuthorities.size()); } - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/prior_authority_insert.sql"}) - public void deletePriorAuthority() { - Long caseRef = 41L; - Long priorAuthorityRef = 2L; - - priorAuthorityController.removePriorAuthority(priorAuthorityRef, caabUserLoginId); - ResponseEntity> responseEntity = applicationController.getApplicationPriorAuthorities(caseRef); - - assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); - assertNotNull(responseEntity.getBody()); - - List priorAuthorities = responseEntity.getBody(); - assertEquals(0, priorAuthorities.size()); - } - - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql"}) - public void addScopeLimitationToProceeding() throws IOException { - Long proceedingId = 2L; - - ScopeLimitation scopeLimitation = loadObjectFromJson("/json/scope_limitation_new.json", ScopeLimitation.class); - - ResponseEntity response = proceedingController.addProceedingScopeLimitation(proceedingId, caabUserLoginId, scopeLimitation); - - assertEquals(HttpStatus.CREATED, response.getStatusCode()); - } - - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql", "/sql/scope_limitation_insert.sql"}) - public void updateScopeLimitationInProceeding() throws IOException { - Long scopeLimitationId = 3L; - - ScopeLimitation updatedScopeLimitation = loadObjectFromJson("/json/scope_limitation_new.json", ScopeLimitation.class); - - ResponseEntity response = scopeLimitationController.updateScopeLimitation(scopeLimitationId, caabUserLoginId, updatedScopeLimitation); - - assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); - } - - - @Test - @Sql(scripts = { - "/sql/application_insert.sql", - "/sql/proceeding_insert.sql", - "/sql/scope_limitation_insert.sql"}) - public void getScopeLimitationsForProceeding() { - Long proceedingId = 2L; - - ResponseEntity> responseEntity = proceedingController.getProceedingsScopeLimitations(proceedingId); - - assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); - assertNotNull(responseEntity.getBody()); - - List scopeLimitations = responseEntity.getBody(); - assertFalse(scopeLimitations.isEmpty()); - } - - @Test - @Sql(scripts = { - "/sql/application_insert.sql", - "/sql/proceeding_insert.sql", - "/sql/scope_limitation_insert.sql"}) - public void removeScopeLimitationFromProceeding() { - Long scopeLimitationId = 3L; - - ResponseEntity response = scopeLimitationController.removeScopeLimitation(scopeLimitationId, caabUserLoginId); - assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); - - ResponseEntity> responseEntity = proceedingController.getProceedingsScopeLimitations(2L); - - assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); - assertNotNull(responseEntity.getBody()); - - List scopeLimitations = responseEntity.getBody(); - assertTrue(scopeLimitations.isEmpty()); - } - @Test @Sql(scripts = {"/sql/application_insert.sql"}) public void updateClient() throws IOException { @@ -735,19 +506,6 @@ public void addOpponentToApplication() throws IOException { assertEquals(HttpStatus.CREATED, response.getStatusCode()); } - @Test - @Sql(scripts = {"/sql/application_insert.sql", "/sql/opponent_insert.sql"}) - public void updateOpponentInApplication() throws IOException { - Long opponentId = 3L; - - Opponent updatedOpponent = loadObjectFromJson("/json/opponent_new.json", Opponent.class); - - ResponseEntity response = opponentController.updateOpponent(opponentId, caabUserLoginId, updatedOpponent); - - assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); - } - - @Test @Sql(scripts = { "/sql/application_insert.sql", @@ -764,121 +522,4 @@ public void getOpponentsForApplication() { assertFalse(opponents.isEmpty()); } - @Test - @Sql(scripts = { - "/sql/application_insert.sql", - "/sql/opponent_insert.sql"}) - public void removeOpponentFromApplication() { - Long caseRef = 41L; - Long opponentRef = 3L; - - ResponseEntity response = opponentController.removeOpponent( - opponentRef, caabUserLoginId); - assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); - - ResponseEntity> responseEntity = applicationController.getApplicationOpponents( - caseRef); - - assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); - assertNotNull(responseEntity.getBody()); - - List opponents = responseEntity.getBody(); - assertTrue(opponents.isEmpty()); - } - - /** - * Assert that the audit trail is set correctly in the object. Uses reflection to navigate the - * auditTrailMethod path and assert that the audit trail is set correctly. - */ - private void assertAuditTrail(Object object, String auditMethod, String expectedAuditUser) - throws InvocationTargetException, IllegalAccessException, NoSuchMethodException { - String[] methodCalls = auditMethod.split("\\."); - assertAuditTrailRecursive(object, methodCalls, 0, expectedAuditUser); - } - - /** - * Recursively navigate the object using the methodCalls array and assert that the audit trail is - * set correctly. - */ - private void assertAuditTrailRecursive(Object object, String[] methodCalls, int index, String expectedAuditUser) - throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { - if (index >= methodCalls.length || object == null) { - return; - } - - Method method = object.getClass().getMethod(methodCalls[index]); - object = method.invoke(object); - - if (object instanceof List list) { - for (Object item : list) { - assertAuditTrailRecursive(item, methodCalls, index + 1, expectedAuditUser); - } - } else { - if (index == methodCalls.length - 1) { - assertAuditDetailsInObject(object, expectedAuditUser); - } else { - assertAuditTrailRecursive(object, methodCalls, index + 1, expectedAuditUser); - } - } - } - - /** - * Used to assert that the audit trail is set correctly in the object. - * - * @param object The object to check - * @param expectedAuditUser The expected audit user - */ - private void assertAuditDetailsInObject(Object object, String expectedAuditUser) { - if (object instanceof AuditTrail auditTrail) { - assertNotNull(auditTrail); - assertEquals(expectedAuditUser, auditTrail.getCreatedBy()); - assertEquals(expectedAuditUser, auditTrail.getLastSavedBy()); - assertNotNull(auditTrail.getCreated()); - assertNotNull(auditTrail.getLastSaved()); - } - } - - /** - * Sets the audit trail properties to null in the object. Uses reflection to navigate the - * list of auditTrailsToNull and set the audit trail to null. - */ - private void setAuditPropertiesToNull(Object object, List auditTrailsToNull) throws NoSuchFieldException, IllegalAccessException { - if (object == null || auditTrailsToNull == null) { - return; - } - for (String trail : auditTrailsToNull) { - String[] fields = trail.split("\\."); - nullifyFieldRecursive(object, fields, 0); - } - } - - /** - * Recursively navigate the object using the fields array and set the field to null. - */ - private static void nullifyFieldRecursive(Object object, String[] fields, int index) - throws NoSuchFieldException, IllegalAccessException { - if (object == null || index >= fields.length) { - return; - } - - if (object instanceof List list) { - // Handle List objects - for (Object item : list) { - nullifyFieldRecursive(item, fields, index); - } - } else { - Field field = object.getClass().getDeclaredField(fields[index]); - field.setAccessible(true); - - if (index == fields.length - 1) { - // Last field in the path, set to null - field.set(object, null); - } else { - // Not the last field, navigate to the next object or list in the path - Object nextObject = field.get(object); - nullifyFieldRecursive(nextObject, fields, index + 1); - } - } - } - } diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseEvidenceControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseEvidenceControllerIntegrationTest.java index 74abbd9..a384ed0 100644 --- a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseEvidenceControllerIntegrationTest.java +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseEvidenceControllerIntegrationTest.java @@ -2,26 +2,21 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static uk.gov.laa.ccms.caab.api.audit.AuditorAwareImpl.currentUserHolder; -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; import java.net.URI; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.context.jdbc.Sql; import uk.gov.laa.ccms.caab.api.controller.EvidenceController; import uk.gov.laa.ccms.caab.api.service.EvidenceService; -import uk.gov.laa.ccms.caab.model.AuditDetail; import uk.gov.laa.ccms.caab.model.EvidenceDocumentDetail; import uk.gov.laa.ccms.caab.model.EvidenceDocumentDetails; -public abstract class BaseEvidenceControllerIntegrationTest { +public abstract class BaseEvidenceControllerIntegrationTest + extends AbstractControllerIntegrationTest { @Autowired private EvidenceController evidenceController; @@ -29,24 +24,6 @@ public abstract class BaseEvidenceControllerIntegrationTest { @Autowired private EvidenceService evidenceService; - private final String caabUserLoginId = "audit@user.com"; - - @BeforeEach - public void setup() { - currentUserHolder.set(caabUserLoginId); - } - - /** - * Loads the JSON file from the classpath and parses it into a specified object. - * - * @param jsonFilePath The path to the JSON file to load - */ - private T loadObjectFromJson(String jsonFilePath, Class objectType) throws IOException { - ObjectMapper objectMapper = new ObjectMapper(); - ClassPathResource resource = new ClassPathResource(jsonFilePath); - return objectMapper.readValue(resource.getInputStream(), objectType); - } - @Test public void testCreateEvidenceDocument() throws Exception { @@ -175,17 +152,4 @@ public void testRemoveEvidenceDocument() { } - /** - * Used to assert that the audit detail is set correctly. - * - * @param auditDetail The audit trail to check - * @param expectedAuditUser The expected audit user - */ - private void assertAuditTrail(AuditDetail auditDetail, String expectedAuditUser) { - assertNotNull(auditDetail); - assertEquals(expectedAuditUser, auditDetail.getCreatedBy()); - assertEquals(expectedAuditUser, auditDetail.getLastSavedBy()); - assertNotNull(auditDetail.getCreated()); - assertNotNull(auditDetail.getLastSaved()); - } } diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseLinkedCaseControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseLinkedCaseControllerIntegrationTest.java new file mode 100644 index 0000000..5a7d7c9 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseLinkedCaseControllerIntegrationTest.java @@ -0,0 +1,54 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.jdbc.Sql; +import uk.gov.laa.ccms.caab.api.controller.LinkedCaseController; +import uk.gov.laa.ccms.caab.api.service.ApplicationService; +import uk.gov.laa.ccms.caab.model.LinkedCase; + +public abstract class BaseLinkedCaseControllerIntegrationTest + extends AbstractControllerIntegrationTest { + + @Autowired + private LinkedCaseController linkedCaseController; + + @Autowired + private ApplicationService applicationService; + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/linked_cases_insert.sql"}) + public void updateLinkedCase() throws Exception { + Long caseRef = 41L; + Long linkedCaseRef = 2L; + + LinkedCase linkedCase = loadObjectFromJson("/json/linked_cases_new.json", LinkedCase.class); + linkedCase.setId(linkedCaseRef.intValue()); + + linkedCaseController.updateLinkedCase(linkedCaseRef, caabUserLoginId, linkedCase); + + List linkedCases = applicationService.getLinkedCasesForApplication(caseRef); + + assertEquals(1, linkedCases.size()); + + // Remove the audittrail for comparison purposes. + LinkedCase retrievedLinkedCase = linkedCases.get(0); + retrievedLinkedCase.setAuditTrail(null); + + assertEquals(linkedCase, retrievedLinkedCase); + } + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/linked_cases_insert.sql"}) + public void deleteLinkedCase() { + Long caseRef = 41L; + Long linkedCaseRef = 2L; + + linkedCaseController.removeLinkedCase(linkedCaseRef, caabUserLoginId); + List linkedCases = applicationService.getLinkedCasesForApplication(caseRef); + assertEquals(0, linkedCases.size()); + } +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseOpponentControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseOpponentControllerIntegrationTest.java new file mode 100644 index 0000000..2c29a0b --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseOpponentControllerIntegrationTest.java @@ -0,0 +1,48 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.jdbc.Sql; +import uk.gov.laa.ccms.caab.api.controller.OpponentController; +import uk.gov.laa.ccms.caab.api.service.ApplicationService; +import uk.gov.laa.ccms.caab.model.Opponent; + +public abstract class BaseOpponentControllerIntegrationTest + extends AbstractControllerIntegrationTest { + + @Autowired + private OpponentController opponentController; + + @Autowired + private ApplicationService applicationService; + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/opponent_insert.sql"}) + public void updateOpponent() throws IOException { + Long opponentId = 3L; + + Opponent updatedOpponent = loadObjectFromJson("/json/opponent_new.json", Opponent.class); + + ResponseEntity response = opponentController.updateOpponent(opponentId, caabUserLoginId, updatedOpponent); + + assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); + } + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/opponent_insert.sql"}) + public void removeOpponent() { + Long caseRef = 41L; + Long opponentId = 3L; + + opponentController.removeOpponent(opponentId, caabUserLoginId); + List opponents = applicationService.getOpponentsForApplication(caseRef); + assertEquals(0, opponents.size()); + } + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BasePriorAuthorityControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BasePriorAuthorityControllerIntegrationTest.java new file mode 100644 index 0000000..6ceeb04 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BasePriorAuthorityControllerIntegrationTest.java @@ -0,0 +1,48 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.jdbc.Sql; +import uk.gov.laa.ccms.caab.api.controller.PriorAuthorityController; +import uk.gov.laa.ccms.caab.api.service.ApplicationService; +import uk.gov.laa.ccms.caab.model.PriorAuthority; + +public abstract class BasePriorAuthorityControllerIntegrationTest + extends AbstractControllerIntegrationTest { + + @Autowired + private PriorAuthorityController priorAuthorityController; + + @Autowired + private ApplicationService applicationService; + + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/prior_authority_insert.sql"}) + public void updatePriorAuthority() throws IOException { + Long priorAuthorityId = 2L; + + PriorAuthority updatedPriorAuthority = loadObjectFromJson("/json/prior_authority_new.json", PriorAuthority.class); + + ResponseEntity response = priorAuthorityController.updatePriorAuthority(priorAuthorityId, caabUserLoginId, updatedPriorAuthority); + + assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); + } + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/prior_authority_insert.sql"}) + public void deletePriorAuthority() { + Long caseRef = 41L; + Long priorAuthorityRef = 2L; + + priorAuthorityController.removePriorAuthority(priorAuthorityRef, caabUserLoginId); + List priorAuthorities = applicationService.getPriorAuthoritiesForApplication(caseRef); + assertEquals(0, priorAuthorities.size()); + } +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseProceedingControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseProceedingControllerIntegrationTest.java new file mode 100644 index 0000000..0bf10f3 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseProceedingControllerIntegrationTest.java @@ -0,0 +1,81 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.jdbc.Sql; +import uk.gov.laa.ccms.caab.api.controller.ProceedingController; +import uk.gov.laa.ccms.caab.api.service.ApplicationService; +import uk.gov.laa.ccms.caab.model.Proceeding; +import uk.gov.laa.ccms.caab.model.ScopeLimitation; + +public abstract class BaseProceedingControllerIntegrationTest + extends AbstractControllerIntegrationTest { + + @Autowired + private ProceedingController proceedingController; + + @Autowired + private ApplicationService applicationService; + + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql"}) + public void updateProceeding() throws IOException { + Long proceedingId = 2L; + + Proceeding updatedProceeding = loadObjectFromJson("/json/proceeding_new.json", Proceeding.class); + + ResponseEntity response = proceedingController.updateProceeding(proceedingId, caabUserLoginId, updatedProceeding); + + assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); + } + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql"}) + public void deleteProceedings() { + Long caseRef = 41L; + Long proceedingRef = 2L; + + proceedingController.removeProceeding(proceedingRef, caabUserLoginId); + List proceedings = applicationService.getProceedingsForApplication(caseRef); + assertEquals(0, proceedings.size()); + } + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql"}) + public void addScopeLimitationToProceeding() throws IOException { + Long proceedingId = 2L; + + ScopeLimitation scopeLimitation = loadObjectFromJson("/json/scope_limitation_new.json", ScopeLimitation.class); + + ResponseEntity response = proceedingController.addProceedingScopeLimitation(proceedingId, caabUserLoginId, scopeLimitation); + + assertEquals(HttpStatus.CREATED, response.getStatusCode()); + } + + + @Test + @Sql(scripts = { + "/sql/application_insert.sql", + "/sql/proceeding_insert.sql", + "/sql/scope_limitation_insert.sql"}) + public void getScopeLimitationsForProceeding() { + Long proceedingId = 2L; + + ResponseEntity> responseEntity = proceedingController.getProceedingsScopeLimitations(proceedingId); + + assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); + assertNotNull(responseEntity.getBody()); + + List scopeLimitations = responseEntity.getBody(); + assertFalse(scopeLimitations.isEmpty()); + } +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseScopeLimitiationControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseScopeLimitiationControllerIntegrationTest.java new file mode 100644 index 0000000..204e249 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/BaseScopeLimitiationControllerIntegrationTest.java @@ -0,0 +1,48 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.jdbc.Sql; +import uk.gov.laa.ccms.caab.api.controller.ScopeLimitationController; +import uk.gov.laa.ccms.caab.api.service.ProceedingService; +import uk.gov.laa.ccms.caab.model.ScopeLimitation; + +public abstract class BaseScopeLimitiationControllerIntegrationTest + extends AbstractControllerIntegrationTest { + + @Autowired + private ScopeLimitationController scopeLimitationController; + + @Autowired + private ProceedingService proceedingService; + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql", "/sql/scope_limitation_insert.sql"}) + public void updateScopeLimitation() throws IOException { + Long scopeLimitationId = 3L; + + ScopeLimitation updatedScopeLimitation = loadObjectFromJson("/json/scope_limitation_new.json", ScopeLimitation.class); + + ResponseEntity response = scopeLimitationController.updateScopeLimitation(scopeLimitationId, caabUserLoginId, updatedScopeLimitation); + + assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); + } + + @Test + @Sql(scripts = {"/sql/application_insert.sql", "/sql/proceeding_insert.sql", "/sql/scope_limitation_insert.sql"}) + public void deleteScopeLimitation() { + Long proceedingId = 2L; + Long scopeLimitationId = 3L; + + scopeLimitationController.removeScopeLimitation(scopeLimitationId, caabUserLoginId); + List scopeLimitations = proceedingService.getScopeLimitationsForProceeding(proceedingId); + assertEquals(0, scopeLimitations.size()); + } + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/LinkedCaseControllerIntegrationLocalTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/LinkedCaseControllerIntegrationLocalTest.java new file mode 100644 index 0000000..fdf3a0b --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/LinkedCaseControllerIntegrationLocalTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@ActiveProfiles("local") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/delete_data.sql") +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/delete_data.sql") +public class LinkedCaseControllerIntegrationLocalTest + extends BaseLinkedCaseControllerIntegrationTest { + + //this runs all tests in BaseLinkedCaseControllerIntegrationTest, do not add anything here + //this is an easy way to run the tests if you have the containerised database running locally already + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/LinkedCaseControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/LinkedCaseControllerIntegrationTest.java new file mode 100644 index 0000000..d3faddc --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/LinkedCaseControllerIntegrationTest.java @@ -0,0 +1,23 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; +import uk.gov.laa.ccms.data.api.IntegrationTestInterface; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/application_tables_create_schema.sql") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/application_tables_drop_schema.sql") +public class LinkedCaseControllerIntegrationTest extends BaseLinkedCaseControllerIntegrationTest + implements IntegrationTestInterface { + + //this runs all tests in BaseLinkedCaseControllerIntegrationTest, do not add anything here + //running this class takes longer than the local version, but it is used for running tests in a pipeline + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/OpponentControllerIntegrationLocalTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/OpponentControllerIntegrationLocalTest.java new file mode 100644 index 0000000..559e363 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/OpponentControllerIntegrationLocalTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@ActiveProfiles("local") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/delete_data.sql") +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/delete_data.sql") +public class OpponentControllerIntegrationLocalTest + extends BaseOpponentControllerIntegrationTest { + + //this runs all tests in BaseOpponentControllerIntegrationTest, do not add anything here + //this is an easy way to run the tests if you have the containerised database running locally already + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/OpponentControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/OpponentControllerIntegrationTest.java new file mode 100644 index 0000000..de7820f --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/OpponentControllerIntegrationTest.java @@ -0,0 +1,23 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; +import uk.gov.laa.ccms.data.api.IntegrationTestInterface; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/application_tables_create_schema.sql") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/application_tables_drop_schema.sql") +public class OpponentControllerIntegrationTest extends BaseOpponentControllerIntegrationTest + implements IntegrationTestInterface { + + //this runs all tests in BaseOpponentControllerIntegrationTest, do not add anything here + //running this class takes longer than the local version, but it is used for running tests in a pipeline + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/PriorAuthorityControllerIntegrationLocalTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/PriorAuthorityControllerIntegrationLocalTest.java new file mode 100644 index 0000000..0762c9d --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/PriorAuthorityControllerIntegrationLocalTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@ActiveProfiles("local") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/delete_data.sql") +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/delete_data.sql") +public class PriorAuthorityControllerIntegrationLocalTest + extends BasePriorAuthorityControllerIntegrationTest { + + //this runs all tests in BasePriorAuthorityControllerIntegrationTest, do not add anything here + //this is an easy way to run the tests if you have the containerised database running locally already + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/PriorAuthorityControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/PriorAuthorityControllerIntegrationTest.java new file mode 100644 index 0000000..7354c4d --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/PriorAuthorityControllerIntegrationTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; +import uk.gov.laa.ccms.data.api.IntegrationTestInterface; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/application_tables_create_schema.sql") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/application_tables_drop_schema.sql") +public class PriorAuthorityControllerIntegrationTest + extends BasePriorAuthorityControllerIntegrationTest + implements IntegrationTestInterface { + + //this runs all tests in BasePriorAuthorityControllerIntegrationTest, do not add anything here + //running this class takes longer than the local version, but it is used for running tests in a pipeline + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ProceedingControllerIntegrationLocalTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ProceedingControllerIntegrationLocalTest.java new file mode 100644 index 0000000..c5b5811 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ProceedingControllerIntegrationLocalTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@ActiveProfiles("local") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/delete_data.sql") +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/delete_data.sql") +public class ProceedingControllerIntegrationLocalTest + extends BaseProceedingControllerIntegrationTest { + + //this runs all tests in BaseProceedingControllerIntegrationTest, do not add anything here + //this is an easy way to run the tests if you have the containerised database running locally already + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ProceedingControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ProceedingControllerIntegrationTest.java new file mode 100644 index 0000000..d325e70 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ProceedingControllerIntegrationTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; +import uk.gov.laa.ccms.data.api.IntegrationTestInterface; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/application_tables_create_schema.sql") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/application_tables_drop_schema.sql") +public class ProceedingControllerIntegrationTest + extends BaseProceedingControllerIntegrationTest + implements IntegrationTestInterface { + + //this runs all tests in BaseProceedingControllerIntegrationTest, do not add anything here + //running this class takes longer than the local version, but it is used for running tests in a pipeline + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ScopeLimitationControllerIntegrationLocalTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ScopeLimitationControllerIntegrationLocalTest.java new file mode 100644 index 0000000..df5cdd2 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ScopeLimitationControllerIntegrationLocalTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@ActiveProfiles("local") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/delete_data.sql") +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/delete_data.sql") +public class ScopeLimitationControllerIntegrationLocalTest + extends BaseScopeLimitiationControllerIntegrationTest { + + //this runs all tests in BaseScopeLimitiationControllerIntegrationTest, do not add anything here + //this is an easy way to run the tests if you have the containerised database running locally already + +} diff --git a/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ScopeLimitationControllerIntegrationTest.java b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ScopeLimitationControllerIntegrationTest.java new file mode 100644 index 0000000..5c1ae31 --- /dev/null +++ b/caab-service/src/integrationTest/java/uk/gov/laa/ccms/data/api/controller/ScopeLimitationControllerIntegrationTest.java @@ -0,0 +1,24 @@ +package uk.gov.laa.ccms.data.api.controller; + +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.AFTER_TEST_METHOD; +import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.context.jdbc.SqlMergeMode.MergeMode.MERGE; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlMergeMode; +import uk.gov.laa.ccms.caab.api.CaabApiApplication; +import uk.gov.laa.ccms.data.api.IntegrationTestInterface; + +@SpringBootTest(classes = CaabApiApplication.class) +@SqlMergeMode(MERGE) +@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "/sql/application_tables_create_schema.sql") +@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "/sql/application_tables_drop_schema.sql") +public class ScopeLimitationControllerIntegrationTest + extends BaseScopeLimitiationControllerIntegrationTest + implements IntegrationTestInterface { + + //this runs all tests in BaseScopeLimitiationControllerIntegrationTest, do not add anything here + //running this class takes longer than the local version, but it is used for running tests in a pipeline + +}