1 package de.juplo.demos.pact;
3 import au.com.dius.pact.consumer.MockServer;
4 import au.com.dius.pact.consumer.dsl.*;
5 import au.com.dius.pact.consumer.junit5.PactConsumerTestExt;
6 import au.com.dius.pact.consumer.junit5.PactTestFor;
7 import au.com.dius.pact.core.model.RequestResponsePact;
8 import au.com.dius.pact.core.model.annotations.Pact;
9 import org.junit.jupiter.api.Test;
10 import org.junit.jupiter.api.extension.ExtendWith;
11 import org.springframework.boot.web.client.RestTemplateBuilder;
12 import org.springframework.web.client.RestTemplate;
15 import java.util.regex.Pattern;
17 import static org.assertj.core.api.Assertions.fail;
20 @ExtendWith(PactConsumerTestExt.class)
21 @PactTestFor(providerName = "Siren Order Provider")
22 public class ContractTest
24 @Pact(consumer="SpringConsumer")
25 public RequestResponsePact getOrders(PactDslWithProvider builder)
28 .uponReceiving("get all orders")
33 .headers(Map.of("Content-Type", "application/vnd.siren+json"))
34 .body(LambdaDsl.newJsonBody(body ->
36 body.array("entities", entities ->
38 body.arrayContaining("actions", actions ->
40 actions.object(object ->
42 object.stringType("name","update");
43 object.stringType("method", "PUT");
44 object.matchUrl2("href", Matchers.regexp("\\d+", "1234"));
53 @PactTestFor(pactMethod = "getOrders")
54 public void testGetExistingUserByEmail(MockServer mockServer)
56 RestTemplate restTemplate =
57 new RestTemplateBuilder()
58 .rootUri(mockServer.getUrl())
62 restTemplate.getForEntity("/orders", String.class);
66 fail("Unexpected exception", e);