X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=spring-consumer%2Fsrc%2Ftest%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fpact%2FContractTest.java;fp=spring-consumer%2Fsrc%2Ftest%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fpact%2FContractTest.java;h=d7358d85224b636209d2eb4d03df5bad47e79076;hb=b01ab6860eb5ab3be5b04427924c1c44b1d0fc66;hp=0000000000000000000000000000000000000000;hpb=59332c6858f6f891f9d72a51ca88574f4eb4f947;p=demos%2Fexample-siren diff --git a/spring-consumer/src/test/java/de/juplo/demos/pact/ContractTest.java b/spring-consumer/src/test/java/de/juplo/demos/pact/ContractTest.java new file mode 100644 index 0000000..d7358d8 --- /dev/null +++ b/spring-consumer/src/test/java/de/juplo/demos/pact/ContractTest.java @@ -0,0 +1,62 @@ +package de.juplo.demos.pact; + +import au.com.dius.pact.consumer.MockServer; +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; +import au.com.dius.pact.core.model.RequestResponsePact; +import au.com.dius.pact.core.model.annotations.Pact; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +import static org.assertj.core.api.Assertions.fail; + + +@ExtendWith(PactConsumerTestExt.class) +@PactTestFor(providerName = "Siren Order Provider") +public class ContractTest +{ + @Pact(consumer="SpringConsumer") + public RequestResponsePact getOrders(PactDslWithProvider builder) + { + PactDslJsonBody body = new PactDslJsonBody() + .stringType("name") + .booleanType("happy") + .hexValue("hexCode") + .id() + .ipAddress("localAddress") + .numberValue("age", 100); + return builder + .uponReceiving("get all orders") + .path("/orders") + .method("GET") + .willRespondWith() + .status(200) + .headers(Map.of("Content-Type", "application/vnd.siren+json")) + .body(body) + .toPact(); + } + + @Test + @PactTestFor(pactMethod = "getOrders") + public void testGetExistingUserByEmail(MockServer mockServer) + { + RestTemplate restTemplate = + new RestTemplateBuilder() + .rootUri(mockServer.getUrl()) + .build(); + try + { + restTemplate.getForEntity("/orders", String.class); + } + catch (Exception e) + { + fail("Unexpected exception", e); + } + } +}