6c6500895d2961d7b302d6816673cec4e14ebd73
[demos/pact] / consumer / src / test / java / de / juplo / demos / consumer / adapter / RemoteUsersServiceConsumerIT.java
1 package de.juplo.demos.consumer.adapter;
2
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.consumer.domain.User;
10 import org.junit.jupiter.api.Test;
11 import org.junit.jupiter.api.extension.ExtendWith;
12 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.boot.test.context.SpringBootTest;
14 import org.springframework.test.context.junit.jupiter.SpringExtension;
15
16 import java.io.IOException;
17 import java.util.Map;
18 import java.util.Optional;
19
20 import static org.assertj.core.api.Assertions.assertThat;
21 import static org.assertj.core.api.Assertions.fail;
22
23
24 @ExtendWith({ SpringExtension.class, PactConsumerTestExt.class })
25 @PactTestFor(providerName = "UsersProvider")
26 public class RemoteUsersServiceConsumerIT
27 {
28   @Autowired
29   RemoteUsersServiceConsumer usersService;
30
31
32   @Pact(consumer="EmailServicesConsumer")
33   public RequestResponsePact getExistingUserByEmail(PactDslWithProvider builder) {
34     return builder
35         .given("User with email pact@juplo.de exists")
36           .uponReceiving("Request for user with email pact@juplo.de")
37             .path("/get")
38             .query("email=pact@juplo.de")
39             .method("GET")
40             .headers("Accept", "application/json")
41           .willRespondWith()
42             .status(200)
43             .headers(Map.of("Content-Type", "application/json;charset=UTF-8"))
44             .body("{\"id\": \"123e4567-e89b-12d3-a456-426614174000\", \"email\": \"pact@juplo.de\"}")
45         .toPact();
46   }
47
48   @Test
49   @PactTestFor(pactMethod = "getExistingUserByEmail")
50   public void testGetExistingUserByEmail(MockServer mockServer) {
51     try {
52       Optional<User> result = usersService.getUserByEmail("pact@juplo.de");
53
54       assertThat(result.isPresent()).isTrue();
55       User user = result.get();
56       assertThat(user.getId()).isEqualTo("123e4567-e89b-12d3-a456-426614174000");
57       assertThat(user.getEmail()).isEqualTo("pact@juplo.de");
58     }
59     catch (Exception e) {
60       fail("Unexpected exception", e);
61     }
62   }
63 }