diff --git a/src/test/java/de/rpr/pactexample/PactConsumerJUnit5Test.java b/src/test/java/de/rpr/pactexample/PactConsumerJUnit5Test.java index 633f152..f154bf1 100644 --- a/src/test/java/de/rpr/pactexample/PactConsumerJUnit5Test.java +++ b/src/test/java/de/rpr/pactexample/PactConsumerJUnit5Test.java @@ -3,6 +3,8 @@ package de.rpr.pactexample; import au.com.dius.pact.consumer.MockServer; import au.com.dius.pact.consumer.PactTestExecutionContext; import au.com.dius.pact.consumer.dsl.PactBuilder; +import au.com.dius.pact.consumer.dsl.PactDslJsonArray; +import au.com.dius.pact.consumer.dsl.PactDslJsonBody; import au.com.dius.pact.consumer.dsl.PactDslWithProvider; import au.com.dius.pact.consumer.junit5.PactConsumerTestExt; import au.com.dius.pact.consumer.junit5.PactTestFor; @@ -27,19 +29,7 @@ public class PactConsumerJUnit5Test { @Pact(provider = "UserServiceJUnit5", consumer = "UserConsumer") public V4Pact getAllUsers(PactBuilder builder) { - String expectedUsers = """ - [ - { - "id": 1, - "name": "Jane Doe" - }, - { - "id": 2, - "name": "John Doe" - } - ] - """; - + //noinspection ConstantConditions return builder .usingLegacyDsl() .given("A running user service") @@ -49,7 +39,16 @@ public class PactConsumerJUnit5Test { .willRespondWith() .status(200) .headers(Map.of("Content-Type", "application/json")) - .body(expectedUsers) + .body(new PactDslJsonArray() + .object() + .integerMatching("id", "[0-9]*", 1) + .stringMatcher("name", "[a-zA-Z ]*", "Jane Doe") + .closeObject() + .object() + .integerMatching("id", "[0-9]*", 2) + .stringMatcher("name", "[a-zA-Z ]*", "John Doe") + .closeObject() + ) .toPact() .asV4Pact() .get(); @@ -58,13 +57,6 @@ public class PactConsumerJUnit5Test { @Pact(provider = "UserServiceJUnit5", consumer = "UserConsumer") public V4Pact getUserById(PactBuilder builder) { - String expectedUser = """ - { - "id": 1, - "name": "Jane Doe" - } - """; - return builder .usingLegacyDsl() .given("A running user service") @@ -74,7 +66,10 @@ public class PactConsumerJUnit5Test { .willRespondWith() .status(200) .headers(Map.of("Content-Type", "application/json")) - .body(expectedUser) + .body(new PactDslJsonBody() + .integerMatching("id", "[0-9]*", 1) + .stringMatcher("name", "[a-zA-Z ]*", "Jane Doe") + ) .toPact() .asV4Pact() .get(); @@ -86,23 +81,25 @@ public class PactConsumerJUnit5Test { RestTemplate restTemplate = new RestTemplateBuilder().rootUri(mockServer.getUrl()).build(); User user = restTemplate.getForObject("/users/1", User.class); - assertThat(user) - .isNotNull() - .isEqualTo(new User(1, "Jane Doe")); + assertThat(user).isNotNull(); + assertThat(user.id()).isNotNegative(); + assertThat(user.name()).isNotEmpty(); } @Test @PactTestFor(providerName = "UserServiceJUnit5", pactMethod = "getAllUsers") void getAllUsers(MockServer mockServer) { RestTemplate restTemplate = new RestTemplateBuilder().rootUri(mockServer.getUrl()).build(); - User[] response = restTemplate.getForObject("/users", User[].class); + List users = Arrays.asList(restTemplate.getForObject("/users", User[].class)); - assertThat(response) + assertThat(users) .isNotNull() - .containsExactly( - new User(1, "Jane Doe"), - new User(2, "John Doe") - ); + .hasSize(2); + + users.forEach(user -> { + assertThat(user.id()).isNotNegative(); + assertThat(user.name()).isNotEmpty(); + }); } }