diff --git a/build.gradle b/build.gradle index e5911968cc..d68faec9c5 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ plugins { id 'com.github.kt3k.coveralls' version '2.12.2' id 'com.github.spacialcircumstances.gradle-cucumber-reporting' version '0.1.25' id 'org.jetbrains.gradle.plugin.idea-ext' version '1.4.1' - id 'info.solidsoft.pitest' version '1.15.0' + id 'info.solidsoft.pitest' version '1.19.0-rc.3' id 'uk.gov.hmcts.java' version '0.12.68' id 'au.com.dius.pact' version '4.6.20' id 'org.jsonschema2pojo' version '1.2.2' @@ -244,7 +244,7 @@ dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-oauth2-resource-server' implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-openfeign' - implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-loadbalancer' + implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-loadbalancer', version: '4.3.1' implementation group: 'org.springframework.hateoas', name: 'spring-hateoas' implementation group: 'org.springframework.plugin', name: 'spring-plugin-core' implementation group: 'org.springframework.retry', name: 'spring-retry' @@ -304,7 +304,7 @@ dependencies { testImplementation group: 'io.rest-assured', name: 'rest-assured', version: '5.5.6' testImplementation group: 'org.assertj', name: 'assertj-vavr', version: '0.5.0' testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test' - testImplementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-contract-stub-runner' + testImplementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-contract-stub-runner', version: '4.3.1' testImplementation group: 'org.testcontainers', name: 'testcontainers', version: testContainersVersion testImplementation group: 'org.testcontainers', name: 'postgresql', version: testContainersVersion testImplementation group: 'org.testcontainers', name: 'elasticsearch', version: testContainersVersion @@ -313,6 +313,7 @@ dependencies { testImplementation group: 'com.github.hmcts', name: 'ccd-test-definitions', version: ccdTestDefinitionVersion testImplementation group: 'com.github.hmcts', name: 'befta-fw', version: beftaFwVersion testImplementation group: 'com.github.hmcts', name: 'fortify-client', version: '1.4.10', classifier: 'all' + testImplementation 'org.springframework.cloud:spring-cloud-contract-wiremock:4.3.1' contractTestImplementation group: 'au.com.dius.pact.provider', name: 'junit5', version: pactProviderVersion contractTestImplementation group: 'au.com.dius.pact.provider', name: 'spring', version: pactProviderVersion @@ -623,7 +624,7 @@ jacocoTestReport { def report = file("${buildDir}/reports/jacoco/test/jacocoTestReport.xml") logger.lifecycle("Checking coverage results: ${report}") - def parser = new XmlParser() + def parser = new groovy.xml.XmlParser() parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false) def results = parser.parse(report) @@ -719,11 +720,11 @@ task fortifyScan(type: JavaExec) { idea { module { - // config to allow Intelij to mark test source and resource files correctly to help linting tools - testSourceDirs += project.sourceSets.aat.java.srcDirs - testSourceDirs += project.sourceSets.contractTest.java.srcDirs - testResourceDirs += project.sourceSets.aat.resources.srcDirs - testResourceDirs += project.sourceSets.contractTest.resources.srcDirs + // config to allow InteliJ to mark test source and resource files correctly to help linting tools + testSources.from(project.sourceSets.aat.java.srcDirs) + testSources.from(project.sourceSets.contractTest.java.srcDirs) + testResources.from(project.sourceSets.aat.resources.srcDirs) + testResources.from(project.sourceSets.contractTest.resources.srcDirs) } } @@ -735,7 +736,7 @@ task highLevelDataSetup(type: JavaExec) { jvmArgs = ['--add-opens=java.base/java.lang.reflect=ALL-UNNAMED'] } -task smoke() { +task smoke(type: JavaExec) { description = 'Executes smoke tests against an the CCD Data Store API instance just deployed' dependsOn aatClasses @@ -745,19 +746,15 @@ task smoke() { into "$buildDir/test-results/test" } - doLast { - generateCucumberReports.enabled = true - javaexec { - mainClass = "uk.gov.hmcts.ccd.datastore.befta.DataStoreBeftaMain" - classpath += configurations.cucumberRuntime + sourceSets.aat.runtimeClasspath - args = ['--plugin', "json:${rootDir}/target/cucumber.json", - '--plugin', "junit:${buildDir}/test-results/smoke/cucumber.xml", - '--tags', '@Smoke and not @Ignore', - '--glue', 'uk.gov.hmcts.befta.player', - '--glue', "uk.gov.hmcts.ccd.datastore.befta", 'src/aat/resources/features'] - jvmArgs = [ '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED' ] - } - } + generateCucumberReports.enabled = true + mainClass = "uk.gov.hmcts.ccd.datastore.befta.DataStoreBeftaMain" + classpath += configurations.cucumberRuntime + sourceSets.aat.runtimeClasspath + args = ['--plugin', "json:${rootDir}/target/cucumber.json", + '--plugin', "junit:${buildDir}/test-results/smoke/cucumber.xml", + '--tags', '@Smoke and not @Ignore', + '--glue', 'uk.gov.hmcts.befta.player', + '--glue', "uk.gov.hmcts.ccd.datastore.befta", 'src/aat/resources/features'] + jvmArgs = [ '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED' ] finalizedBy { generateCucumberReports { diff --git a/gradle/suppress.gradle b/gradle/suppress.gradle index a664a6ad63..c9f1c91f77 100644 --- a/gradle/suppress.gradle +++ b/gradle/suppress.gradle @@ -1,4 +1,5 @@ -import groovy.util.slurpersupport.GPathResult +import groovy.xml.XmlSlurper +import groovy.xml.slurpersupport.GPathResult import groovy.xml.DOMBuilder import groovy.xml.XmlUtil import org.w3c.dom.Document @@ -114,4 +115,4 @@ task suppressCves() { // If no argument is specified, the default report file is 'dependency-check-report.xml' suppressCves() } -} \ No newline at end of file +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index aaaabb3cb9..dbc3ce4a04 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/common/DisplayContextParameter.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/common/DisplayContextParameter.java index 5f687e0c4c..6146ec25dd 100644 --- a/src/main/java/uk/gov/hmcts/ccd/domain/model/common/DisplayContextParameter.java +++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/common/DisplayContextParameter.java @@ -32,8 +32,8 @@ public String getValue() { } public static List getDisplayContextParametersFor(String displayContextParameter) { - List displayContextParameterTypeList = new ArrayList<>(); - List displayContextParameters = new ArrayList<>(); + final List displayContextParameterTypeList = new ArrayList<>(); + final List displayContextParameters = new ArrayList<>(); if (Strings.isNullOrEmpty(displayContextParameter)) { return Collections.emptyList(); diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java index 60877aa99f..7d52cc528f 100644 --- a/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java +++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java @@ -343,7 +343,7 @@ public CreateCaseEventResult createCaseSystemEvent(final String caseReference, Event event) { final CaseDetails caseDetails = delegatingCaseDetailsRepository.findByReference(caseReference) .orElseThrow(() -> - new ResourceNotFoundException(format("Case with reference %s could not be found", caseReference))); + new ResourceNotFoundException(format("Case with reference %s could not be found", caseReference))); final CaseEventDefinition caseEventDefinition = new CaseEventDefinition(); caseEventDefinition.setId("DocumentUpdated"); diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchSortService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchSortService.java index 01da197b86..4fd0475de6 100644 --- a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchSortService.java +++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchSortService.java @@ -73,8 +73,8 @@ private ObjectNode buildSortOrderFieldNode(CaseTypeDefinition caseTypeDefinition ObjectNode objectNode = objectMapper.createObjectNode(); CommonField commonField = caseTypeDefinition.getComplexSubfieldDefinitionByPath(sortOrderField.getCaseFieldId()).orElseThrow(() -> - new ServiceException(String.format("Case field '%s' does not exist in configuration for case type '%s'.", - sortOrderField.getCaseFieldId(), caseTypeDefinition.getId())) + new ServiceException(String.format("Case field '%s' does not exist in configuration for case type " + + "'%s'.", sortOrderField.getCaseFieldId(), caseTypeDefinition.getId())) ); FieldTypeDefinition fieldType = commonField.getFieldTypeDefinition(); diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java index 4af5243a48..1783914daf 100644 --- a/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java +++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java @@ -52,7 +52,6 @@ public BaseType getType() { public List validate(final String dataFieldId, final JsonNode dataValue, final CaseFieldDefinition caseFieldDefinition) { - List validationResults; // Empty text should still check against MIN - MIN may or may not be 0 if (isNullOrEmpty(dataValue)) { @@ -87,6 +86,7 @@ public List validate(final String dataFieldId, + " does not match Document Management domain or expected URL path", dataFieldId)); } + List validationResults; if (dataValue.has(DOCUMENT_BINARY_URL)) { final JsonNode documentBinaryUrl = dataValue.get(DOCUMENT_BINARY_URL); validationResults = validateDocumentBinaryURL( diff --git a/src/test/java/uk/gov/hmcts/ccd/integrations/IdamRepositoryCachingIT.java b/src/test/java/uk/gov/hmcts/ccd/integrations/IdamRepositoryCachingIT.java index cf21900329..2c24a8fe75 100644 --- a/src/test/java/uk/gov/hmcts/ccd/integrations/IdamRepositoryCachingIT.java +++ b/src/test/java/uk/gov/hmcts/ccd/integrations/IdamRepositoryCachingIT.java @@ -55,8 +55,8 @@ public void openMocks() { } /** - *

Test cached behaviour of getDataStoreUserAccessToken method. Caching is implemented using Spring - * Cacheable annotation so test is performed on the actual IdamRepository bean with mocked dependencies.

+ * Test cached behaviour of getDataStoreUserAccessToken method. Caching is implemented using Spring + * Cacheable annotation so test is performed on the actual IdamRepository bean with mocked dependencies. * *

As the caching behaviour is controlled by Spring it is not reset between tests. For this reason * all tests have to be in a single method so that state can be controlled.