Exemplo da criação de um Pact entre:
- 1 consumidor (Consumer)
- 1 provedor (Provider)
- Veja este mesmo cenário feito em Java.
- OpenJdk 11
- Kotlin 1.3.72
- Spring Boot
- Pact JVM
- Pact Broker
- Maven
Este exemplo aborda um cenário comum no setor bancário. Nosso objetivo é obter o dado de saldo de determinado cliente. Para isto, vamos considerar que este dado será recuperado da seguinte forma:
1 - Com o identificador do cliente, solicitamos ao serviço de dominio do cliente (consumer) o valor do saldo em conta.
2 - Por sua vez, o consumer pergunta ao serviço de domínio da conta (provider) qual o saldo contido na conta atrelada aquele cliente.
3 - Tendo a informação do saldo em conta, o consumer retorna a informação a quem a solicitou.
De forma resumida, temos os seguintes serviços:
- provider: mantém e gerencia informações relacionadas a contas bancárias.
- consumer: mantém e gerencia informações sobre clientes/correntistas.
A imagem abaixo representa esta interação que acabamos de definir.
-
Garanta que você tenha uma instância do Pact Broker rodando localmente. Para maiores informações, vide sessão configuração do Pact Broker.
-
Abra os projetos contidos neste diretório (
consumer
eprovider
) em sua IDE de preferência e instale suas dependências. -
Para gerar o contrato, basta rodar os testes Junit do projeto
consumer
.
Obtendo sucesso, o plugin maven do Pact irá gerar um arquivo json contendo o contrato entre as APIs. Veja os exemplos nas imagens abaixo.
- Com o contrato gerado, podemos publicá-lo no Pact Broker.
Para isto, podemos utilizar o plugin maven do Pact.
É necessário confirmar que o plugin está configurado corretamente.
Após confirmar o status do plugin, abra outro terminal no diretório consumer
e execute o seguinte comando para publicar o contrato no Broker:
mvn pact:publish
Em seguida, você poderá ver o contrato publicado no Pact Broker http://localhost:9292
.
- Com o contrato publicado no Broker, agora validaremos se a API provedora (provider) está aderente ao contrato.
No projeto provider
, rode os testes Junit e verifique se eles são concluídos com sucesso.
Este teste irá verificar no Broker os contratos disponiveis para validação, baixá-los e testá-los de acordo com a API provedora.
Para este passo, configuramos para que a publição do resultado seja feita automaticamente assim que a validação do contrato ocorre.
Veja a configuração em: pom.xml linha 117
<pact.verifier.publishResults>true</pact.verifier.publishResults>
Para verificar o resultado, basta acessar novamente o Broker.