X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=consumer%2Fsrc%2Ftest%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fconsumer%2Fadapter%2FRemoteUsersServiceConsumerIT.java;h=f3786af12954e12322b22913e5adce5121cb9826;hb=44ba3a02b984e62ba3bd7f3083a6d79dfa696f71;hp=12ce6c97fa021054ad990df5d8db9a7239555e1d;hpb=0bed04371871dbcd898d0b64ba57b4a304d7c525;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 12ce6c9..f3786af 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,13 +1,64 @@ 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.BeforeEach; +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.boot.web.client.RestTemplateBuilder; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.web.client.RestTemplate; + +import java.io.IOException; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; @ExtendWith(PactConsumerTestExt.class) @PactTestFor(providerName = "UsersProvider") public class RemoteUsersServiceConsumerIT { + @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") + .query("email=pact@juplo.de") + .method("GET") + .willRespondWith() + .status(200) + .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) { + RestTemplate restTemplate = new RestTemplateBuilder().rootUri(mockServer.getUrl()).build(); + RemoteUsersServiceConsumer usersService = new RemoteUsersServiceConsumer("/get?email={email}", restTemplate); + try { + Optional result = usersService.getUserByEmail("pact@juplo.de"); + assertThat(result.isPresent()).isTrue(); + User user = result.get(); + assertThat(user.getId()).isEqualTo(UUID.fromString("123e4567-e89b-12d3-a456-426614174000")); + assertThat(user.getEmail()).isEqualTo("pact@juplo.de"); + } + catch (Exception e) { + fail("Unexpected exception", e); + } + } }