diff --git a/build.gradle b/build.gradle index a5cb50da..e37f50ee 100644 --- a/build.gradle +++ b/build.gradle @@ -144,6 +144,8 @@ task fortifyScan(type: JavaExec) { project.ext { pacticipant = 'wa_task_monitor' pacticipantVersion = getCheckedOutGitCommitHash() + pactBrokerUrl = System.getenv("PACT_BROKER_FULL_URL") ?: 'http://localhost:80' + pactBranchName = System.getenv("PACT_BRANCH_NAME") ?: 'Dev' } checkstyle { @@ -299,8 +301,9 @@ def versions = [ springDoc : '2.6.0', serenity : '4.2.16', springFrameworkCloud: '2.2.10.RELEASE', - pitest : '1.16.1', - pactVersion : '4.1.7', + pitest : '1.18.2', + pactVersion : '4.6.11', + pactJava8Version : '4.1.43', tomcat : '10.1.31' ] @@ -383,7 +386,7 @@ dependencies { //Pact contract testing contractTestImplementation group: 'au.com.dius.pact.consumer', name: 'junit5', version: versions.pactVersion - contractTestImplementation group: 'au.com.dius.pact.consumer', name: 'java8', version: versions.pactVersion + contractTestImplementation group: 'au.com.dius.pact.consumer', name: 'java8', version: versions.pactJava8Version contractTestImplementation(group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: versions.junit) contractTestRuntimeOnly(group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: versions.junit) @@ -415,11 +418,12 @@ runAndPublishConsumerPactTests.finalizedBy pactPublish pact { broker { - pactBrokerUrl = System.getenv("PACT_BROKER_FULL_URL") ?: 'http://localhost:80' + pactBrokerUrl = project.ext.pactBrokerUrl } publish { pactBrokerUrl = System.getenv("PACT_BROKER_FULL_URL") ?: 'http://localhost:80' pactDirectory = 'pacts' + pactBrokerUrl = project.ext.pactBrokerUrl tags = [System.getenv("PACT_BRANCH_NAME") ?: 'Dev'] version = project.pacticipantVersion } diff --git a/config/pmd/ruleset.xml b/config/pmd/ruleset.xml index 03b66c19..e6138b85 100644 --- a/config/pmd/ruleset.xml +++ b/config/pmd/ruleset.xml @@ -62,9 +62,9 @@ - - - + + + diff --git a/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/StartForCaseWorkerConsumerTest.java b/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/StartForCaseWorkerConsumerTest.java index 18538533..def8d954 100644 --- a/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/StartForCaseWorkerConsumerTest.java +++ b/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/StartForCaseWorkerConsumerTest.java @@ -1,7 +1,11 @@ package uk.gov.hmcts.reform.wataskmonitor.consumer.ccd; +import au.com.dius.pact.consumer.dsl.LambdaDsl; +import au.com.dius.pact.consumer.dsl.LambdaDslJsonBody; +import au.com.dius.pact.consumer.dsl.LambdaDslObject; import au.com.dius.pact.consumer.dsl.PactDslWithProvider; import au.com.dius.pact.consumer.junit5.PactTestFor; +import au.com.dius.pact.core.model.PactSpecVersion; import au.com.dius.pact.core.model.RequestResponsePact; import au.com.dius.pact.core.model.annotations.Pact; import org.json.JSONException; @@ -13,6 +17,7 @@ import java.util.Map; +import static io.pactfoundation.consumer.dsl.LambdaDsl.newJsonBody; import static junit.framework.TestCase.assertNotNull; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; @@ -46,11 +51,28 @@ public RequestResponsePact startForCaseWorker(PactDslWithProvider builder) { .matchHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .status(200) .body(buildStartForCaseWorkerPactDsl(START_APPEAL)) +// .body(LambdaDsl.newJsonBody(((lambdaDslJsonBody) -> { +// string +// })) .toPact(); } +// .body(String.valueOf(newJsonBody( +// o -> o.stringType("event_id", START_APPEAL) +// .stringType("token", null) +// .object("case_details", cd -> { +// cd.stringMatcher("jurisdiction", "[/^[A-Za-z_]+$/]+", "IA"); +// cd.stringMatcher("case_type_id", "[/^[A-Za-z_]+$/]+", "Asylum"); +// cd.object("case_data", data -> { +// data.stringMatcher("isOutOfCountryEnabled", "Yes|No|YES|NO", "No"); +// data.stringMatcher("appealOutOfCountry", "Yes|No|YES|NO", "No"); +// }); +// }).build() + + + @Test - @PactTestFor(pactMethod = "startForCaseWorker") + @PactTestFor(pactMethod = "startForCaseWorker", pactVersion = PactSpecVersion.V3) public void verifyStartEventForCaseworker() throws JSONException { StartEventResponse startEventResponse = coreCaseDataApi.startForCaseworker( diff --git a/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/CcdConsumerTestBase.java b/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/CcdConsumerTestBase.java index 15e6a729..c14c6cde 100644 --- a/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/CcdConsumerTestBase.java +++ b/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/CcdConsumerTestBase.java @@ -1,6 +1,7 @@ package uk.gov.hmcts.reform.wataskmonitor.consumer.ccd.util; import au.com.dius.pact.consumer.junit5.PactTestFor; +import au.com.dius.pact.core.model.PactSpecVersion; import au.com.dius.pact.core.model.annotations.PactFolder; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; diff --git a/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/PactDslBuilderForCaseDetailsList.java b/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/PactDslBuilderForCaseDetailsList.java index e60b0867..febf7569 100644 --- a/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/PactDslBuilderForCaseDetailsList.java +++ b/src/contractTest/java/uk/gov/hmcts/reform/wataskmonitor/consumer/ccd/util/PactDslBuilderForCaseDetailsList.java @@ -1,6 +1,8 @@ package uk.gov.hmcts.reform.wataskmonitor.consumer.ccd.util; import au.com.dius.pact.consumer.dsl.DslPart; +import au.com.dius.pact.consumer.dsl.PactDslJsonBody; +import au.com.dius.pact.core.support.json.JsonValue; import io.pactfoundation.consumer.dsl.LambdaDslObject; import static io.pactfoundation.consumer.dsl.LambdaDsl.newJsonBody; @@ -28,6 +30,34 @@ public static DslPart buildStartEventForCaseWorkerPactDsl(String eventId) { })).build(); } + //TODO: Investigate this further, does not work with current Pact version + public static JsonValue buildStartEventForCaseWorkerPactDslA(String eventId) { + return new PactDslJsonBody() + .stringType("event_id", eventId) + .stringType("token", null) + .object("case_details") + .numberType("id", 2000) + .stringMatcher("jurisdiction", ALPHABETIC_REGEX, "IA") + .stringMatcher("case_type", ALPHABETIC_REGEX, "Asylum") + .stringValue("state", "appealStarted") + .stringValue("securityClassification", "PUBLIC") + .object("case_data", PactDslBuilderForCaseDetailsList::getCaseDataPactDsl) + .closeObject() + .getBody(); + } + +// String pactDslJson = new PactDslJsonBody() +// .stringType("status", "ON") +// .object("document") +// .stringType("status", "NOT_FOUND") +// .stringType("release", "undefined") +// .closeObject() +// .object("file") +// .stringType("version", "v1.4") +// .stringType("release", "1.1") +// .closeObject() +// .getBody().toString(); + public static DslPart buildStartForCaseWorkerPactDsl(String eventId) { return newJsonBody( o -> o.stringType("event_id", eventId) @@ -42,6 +72,22 @@ public static DslPart buildStartForCaseWorkerPactDsl(String eventId) { })) .build(); } +// public static DslPart buildStartForCaseWorkerPactDslAA(String eventId) { +// return PactDslJsonBody( +// o -> o.stringType("event_id", eventId) +// .stringType("token", null) +// .object("case_details", cd -> { +// cd.stringMatcher("jurisdiction", ALPHABETIC_REGEX, "IA"); +// cd.stringMatcher("case_type_id", ALPHABETIC_REGEX, "Asylum"); +// cd.object("case_data", data -> { +// data.stringMatcher("isOutOfCountryEnabled", "Yes|No|YES|NO", "No"); +// data.stringMatcher("appealOutOfCountry", "Yes|No|YES|NO", "No"); +// }); +// })) +// .build(); +// } + + public static DslPart buildSubmitForCaseWorkedPactDsl(Long caseId) { return newJsonBody(