Files
pact-user-service/src/test/java/de/kreuzwerker/cdc/userservice/GenericStateWithParameterContractTest.java
T

65 lines
2.3 KiB
Java
Raw Normal View History

2021-12-10 09:49:13 -08:00
package de.kreuzwerker.cdc.userservice;
import au.com.dius.pact.provider.junit.Provider;
import au.com.dius.pact.provider.junit.State;
import au.com.dius.pact.provider.junit.loader.PactBroker;
import au.com.dius.pact.provider.junit5.HttpTestTarget;
import au.com.dius.pact.provider.junit5.PactVerificationContext;
import au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.web.server.LocalServerPort;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
@Provider("user-service")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
2021-12-10 10:21:27 -08:00
// pact_broker is the service name in docker-compose
@PactBroker(host = "cicd.bayhan.ca:9292", tags = "${pactbroker.tags:prod}")
2021-12-10 09:49:13 -08:00
public class GenericStateWithParameterContractTest {
@LocalServerPort
private int port;
@BeforeEach
void before(PactVerificationContext context) {
context.setTarget(new HttpTestTarget("localhost", port));
}
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@MockBean
private UserService userService;
@State("default")
public void toDefaultState(Map<String, Object> params) {
final boolean userExists = (boolean) params.get("userExists");
if (userExists) {
when(userService.findUser(any())).thenReturn(User.builder()
2021-12-10 10:21:27 -08:00
.id("1")
.legacyId(UUID.randomUUID().toString())
.name("Beth")
.role(UserRole.ADMIN)
.lastLogin(new Date())
.friend(Friend.builder().id("2").name("Ronald Smith").build())
.friend(Friend.builder().id("3").name("Matt Spencer").build())
.build());
2021-12-10 09:49:13 -08:00
} else {
when(userService.findUser(any())).thenThrow(NotFoundException.class);
}
}
}