Added a Spring-based consumer
[demos/example-siren] / spring-consumer / src / test / java / de / juplo / demos / pact / ContractTest.java
1 package de.juplo.demos.pact;
2
3 import au.com.dius.pact.consumer.MockServer;
4 import au.com.dius.pact.consumer.dsl.PactDslJsonBody;
5 import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
6 import au.com.dius.pact.consumer.junit5.PactConsumerTestExt;
7 import au.com.dius.pact.consumer.junit5.PactTestFor;
8 import au.com.dius.pact.core.model.RequestResponsePact;
9 import au.com.dius.pact.core.model.annotations.Pact;
10 import org.junit.jupiter.api.Test;
11 import org.junit.jupiter.api.extension.ExtendWith;
12 import org.springframework.boot.web.client.RestTemplateBuilder;
13 import org.springframework.web.client.RestTemplate;
14
15 import java.util.Map;
16
17 import static org.assertj.core.api.Assertions.fail;
18
19
20 @ExtendWith(PactConsumerTestExt.class)
21 @PactTestFor(providerName = "Siren Order Provider")
22 public class ContractTest
23 {
24   @Pact(consumer="SpringConsumer")
25   public RequestResponsePact getOrders(PactDslWithProvider builder)
26   {
27     PactDslJsonBody body = new PactDslJsonBody()
28         .stringType("name")
29         .booleanType("happy")
30         .hexValue("hexCode")
31         .id()
32         .ipAddress("localAddress")
33         .numberValue("age", 100);
34     return builder
35           .uponReceiving("get all orders")
36             .path("/orders")
37             .method("GET")
38           .willRespondWith()
39             .status(200)
40             .headers(Map.of("Content-Type", "application/vnd.siren+json"))
41             .body(body)
42         .toPact();
43   }
44
45   @Test
46   @PactTestFor(pactMethod = "getOrders")
47   public void testGetExistingUserByEmail(MockServer mockServer)
48   {
49     RestTemplate restTemplate =
50         new RestTemplateBuilder()
51             .rootUri(mockServer.getUrl())
52             .build();
53     try
54     {
55       restTemplate.getForEntity("/orders", String.class);
56     }
57     catch (Exception e)
58     {
59       fail("Unexpected exception", e);
60     }
61   }
62 }