1 package de.juplo.demos.pwreset.adapter;
3 import au.com.dius.pact.consumer.MockServer;
4 import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
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 de.juplo.demos.pwreset.domain.User;
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;
16 import java.util.Optional;
17 import java.util.UUID;
19 import static org.assertj.core.api.Assertions.assertThat;
20 import static org.assertj.core.api.Assertions.fail;
23 @ExtendWith(PactConsumerTestExt.class)
24 @PactTestFor(providerName = "UsersProvider")
25 public class RemoteUsersServiceConsumerIT
27 @Pact(consumer="EmailServicesConsumer")
28 public RequestResponsePact getExistingUserByEmail(PactDslWithProvider builder) {
30 .given("User with email pact@juplo.de exists")
31 .uponReceiving("Request for user with email pact@juplo.de")
33 .query("email=pact@juplo.de")
37 .headers(Map.of("Content-Type", "application/json;charset=UTF-8"))
38 .body("{\"id\": \"123e4567-e89b-12d3-a456-426614174000\", \"email\": \"pact@juplo.de\"}")
43 @PactTestFor(pactMethod = "getExistingUserByEmail")
44 public void testGetExistingUserByEmail(MockServer mockServer) {
45 RestTemplate restTemplate = new RestTemplateBuilder().rootUri(mockServer.getUrl()).build();
46 RemoteUsersServiceConsumer usersService = new RemoteUsersServiceConsumer("/get?email={email}", restTemplate);
48 Optional<User> result = usersService.getUserByEmail("pact@juplo.de");
50 assertThat(result.isPresent()).isTrue();
51 User user = result.get();
52 assertThat(user.getId()).isEqualTo(UUID.fromString("123e4567-e89b-12d3-a456-426614174000"));
53 assertThat(user.getEmail()).isEqualTo("pact@juplo.de");
56 fail("Unexpected exception", e);