X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=consumer%2Fsrc%2Ftest%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fconsumer%2Fadapter%2FRemoteUsersServiceConsumerIT.java;h=6c6500895d2961d7b302d6816673cec4e14ebd73;hb=cb2a8fda60a15b79b72d99a5d1f72a18e4d681a0;hp=ee8bd61e55a6331ae8a37d95a1883dce296e187f;hpb=2819247c41afad8ca474e3af84e1216353c2bb38;p=demos%2Fpact diff --git a/consumer/src/test/java/de/juplo/demos/consumer/adapter/RemoteUsersServiceConsumerIT.java b/consumer/src/test/java/de/juplo/demos/consumer/adapter/RemoteUsersServiceConsumerIT.java index ee8bd61..6c65008 100644 --- a/consumer/src/test/java/de/juplo/demos/consumer/adapter/RemoteUsersServiceConsumerIT.java +++ b/consumer/src/test/java/de/juplo/demos/consumer/adapter/RemoteUsersServiceConsumerIT.java @@ -1,32 +1,63 @@ package de.juplo.demos.consumer.adapter; +import au.com.dius.pact.consumer.MockServer; 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 de.juplo.demos.consumer.domain.User; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import java.io.IOException; +import java.util.Map; +import java.util.Optional; -@ExtendWith(PactConsumerTestExt.class) +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; + + +@ExtendWith({ SpringExtension.class, PactConsumerTestExt.class }) @PactTestFor(providerName = "UsersProvider") public class RemoteUsersServiceConsumerIT { - @Pact(provider="UsersProvider", consumer="EmailServicesConsumer") - public RequestResponsePact createPact(PactDslWithProvider builder) { + @Autowired + RemoteUsersServiceConsumer usersService; + + + @Pact(consumer="EmailServicesConsumer") + public RequestResponsePact getExistingUserByEmail(PactDslWithProvider builder) { return builder .given("User with email pact@juplo.de exists") .uponReceiving("Request for user with email pact@juplo.de") .path("/get") - .matchQuery( - "email", - // See: https://stackoverflow.com/a/201378/247276 - "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])", - "pact@juplo.de") + .query("email=pact@juplo.de") .method("GET") - .matchHeader("", "", "") + .headers("Accept", "application/json") .willRespondWith() .status(200) - .body("{\"responsetest\": true}") + .headers(Map.of("Content-Type", "application/json;charset=UTF-8")) + .body("{\"id\": \"123e4567-e89b-12d3-a456-426614174000\", \"email\": \"pact@juplo.de\"}") .toPact(); } + + @Test + @PactTestFor(pactMethod = "getExistingUserByEmail") + public void testGetExistingUserByEmail(MockServer mockServer) { + try { + Optional result = usersService.getUserByEmail("pact@juplo.de"); + + assertThat(result.isPresent()).isTrue(); + User user = result.get(); + assertThat(user.getId()).isEqualTo("123e4567-e89b-12d3-a456-426614174000"); + assertThat(user.getEmail()).isEqualTo("pact@juplo.de"); + } + catch (Exception e) { + fail("Unexpected exception", e); + } + } }