Skip to content

ZupIT/pact-framework-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pact Logo

Exemplos de uso de Testes de Contrato com Pact Framework

Bem vindo ao repositório de exemplos do Pact Framework!!

O objetivo deste repositório é demonstrar como fazer testes de contrato com o PACT Framework em diferentes linguagens como forma de facilitar seu entendimento.

O teste de contrato é uma abordagem utilizada para garantir uma integração entre dois sistemas. A maior vantagem da abordagem é o teste via artefato que garante que as duas pontas se validem na forma de um teste unitário. Esse teste unitário é executado para realizar o build dos dois artefatos, garantindo assim que ambas as pontas estejam de acordo com o contrato entre as duas partes.

O Pact Framework realiza testes de contrato com: Rest, Mensageria e GRPC
As integrações não necessitam ter sido desenvolvidas na mesma linguagem para que você faça o teste de contrato, ele é agnóstico a linguagem.

Caso não conheça o Pact e o conceito de testes de contratos, dê uma olhada na sessão de links úteis.


Linguagens suportadas pelo Pact:


Linguagens abordadas nos exemplos:


Zuppers contribuidores

Contributors Display

Abaixo estão os links dos exemplos que você irá encontrar neste repositório. Neles você também irá encontrar detalhes sobre como executá-los.

Abaixo um desenho que representa bem como o teste de contrato é realizado.

Pact Workflow

O processo de validação dos contratos acontece da seguinte forma:

  • O Consumer cria um contrato em forma de testes BDD (Behavior Driven Development) com suas expectativas de consumo da integração com o Provider.

  • O Consumer testa suas expectativas de Consumer sobre o Provider dentro do seu próprio teste, sem necessidade de realizar comunicação com o Provider real.

  • O Consumer publica o contrato no Broker do Pact para que o Provider possa acessá-lo e testá-lo.

  • O Provider cria um código de teste unitário que obterá o contrato do Pact Broker e dado as expectativas que o Consumer descreveu, rodará em seu próprio endpoint para validar se condiz com o que esse Provider está fornecendo (Tudo isso em tempo de teste unitário) e sem a necessidade de se comunicar com o Consumer. Usando apenas o contrato gerado pelo Pact.

A vantagem dessa abordagem é que todos os testes são escritos em forma de teste unitário, portanto, é fácil automatizar a validação das integrações em uma esteira de CI, onde ela rodará seus testes e validará seus contratos de integração, assim, garantindo que suas integrações estão funcionando antes de você publicar seu artefato em qualquer ambiente. O teste no artefato assegura que nenhuma mudança seja feita sem o conhecimento de ambos os lados, isso ajuda a prevenir problemas causados por falha de comunicação entre equipes de integração de sistemas.

O Pact Broker é uma ferramenta fundamental para o gerenciamento dos contratos entre as integrações envolvidas. Ele mantém o contrato, a data de atualização e o status dessa integração, para mais informações acesse Pact Broker.

Para que você consiga utilizar o teste de contrato com o Pact, sugerimos que você tenha um container com o Pact Broker em uma infraestrutura acessível para as duas aplicações que fazem a integração.

Para qualquer um dos exemplos deste repositório, precisaremos de uma instância do Broker. A seguir explicamos como subir o seu próprio Broker.

Para configurar uma instancia do Pact Broker em sua máquina local, clone o projeto em sua máquina,
vá até o diretório infrastructure/pact-broker e execute o seguinte comando:

Caso o exemplo for relacionado a Integração Continua, utilize o diretõrio infrastructure/pact-broker-with-jenkins

docker-compose up

Para validar se o broker está funcionando corretamente, acesse o endereço http://localhost:9292.
Caso tudo tenha ocorrido conforme planejado, você verá a página inicial do Pact Broker.

Se estiver utilizando o compose com Jenkins, você poderá acessá-lo no endereço http://localhost:8080

Credenciais para acesso ao Jenkins:

user:admin
pass:admin

Caso tenha alguma dificuldade para subir o container jenkins_pact_broker, verifique se o diretório jenkins_home possui permissões de escrita. Caso não tenha permissão, podemos conceder da seguinte forma:

sudo chown $USER:$USER jenkins_home -R

Para demais informações, acesse a documentação do Jenkins.

Nosso repositório segue o Código de Conduta para desenvolvedores. Se você deseja participar criando códigos no nosso repositório, por favor, siga o Código de Conduta, ele pode ser lido aqui CODIGO DE CONDUTA. Qualquer código enviado para este repositório que ferir tais valores serão ignorados.

Beagle has adopted a Code of Conduct that we expect project participants to adhere to. Please read the so that you can understand what actions will and will not be tolerated.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published