Criando e executando Testes de Contrato com Pact.js — Parte II
Passo a passo de como criar o Broker e enviar os pactos gerados para assim serem validados
ATENÇÃO: Este artigo é a continuação do artigo Criando e executando Testes de Contrato com Pact.js — Parte I na qual iniciamos a escrita do nosso teste de contrato na perspectiva do Consumer.
Primeira etapa: Enviando o Pact File para o Broker/Pactflow
Agora que criamos nosso Pact File (caso queira ver o exemplo gerado, basta acessar através deste link) vamos hospedá-lo em um local onde o mesmo pode ser visualizado e verificado pelo nosso Provider.
Há duas formas de se fazer: a primeira é através de um Broker local e o segundo através de uma plataforma SaaS desenvolvida pelo próprio time do Pact.
Vamos começar com a primeira abordagem (A instalação do Docker e como baixar as imagens necessárias pra realizar este processo podem ser verificados através deste outro artigo: Pact Broker via Docker Images).
Pact Broker via Docker:
Uma vez que as imagens do Docker estejam rodando, vamos criar um novo arquivo chamado publish.js que irá realizar este processo. Esse novo arquivo iremos criar dentro de __tests__/contract/broker/publish.js:
E nele iremos adicionar o seguinte código:
De uma forma resumida o arquivo verifica se existe a variável de ambiente PACT_LOCAL_BROKER no nosso arquivo .env (Essa variável é o endereço do broker e por padrão quando iniciamos a imagem do Docker o valor é: http://localhost:9292/). Caso não exista ou tenha sido preenchida incorretamente, uma mensagem de erro será apresentada no console assim que tentarmos realizar o envio. Além disso, mais três informações estão sendo enviadas: o local onde o Pact File foi gerado, a tag e a versão do pacto.
ATENÇÃO: A versão é um valor que deve ser alterado sempre que houver uma mudança no contrato entre Consumer e Provider.
Por fim pra realizarmos o envio basta adicionarmos a variável PACT_LOCAL_BROKER dentro do .env (Um exemplo de como ficará o .env pode ser visto neste link) e incluirmos no package.json um novo script, conforme podemos ver no snippet abaixo:
Novamente no terminal basta executarmos o novo comando:
$ npm run publish:broker
E no broker, agora podemos ver o Pact File gerado. Basta acessarmos a URL http://localhost:9292/ através do nosso navegador:
Conforme podemos ver na imagem acima (última coluna) o contrato ainda não foi verificado pelo nosso Provider mas iremos fazer isso em breve 👊
Pactflow:
Via Pactflow o processo é significativamente mais simples. Porém isso tem um preço. A plataforma é gratuita para um período de teste e para uma quantidade definida de contratos (Para mais informações basta acessar este link).
O processo de abertura de conta é bem simples e pode ser feito através do link acima.
Uma vez que a conta tenha sido criada, basta acessarmos no menu superior direito o menu ‘Settings’ e na próxima página o primeiro menu chamado ‘Api Tokens’.
Neste menu haverá dois tokens, basta copiarmos o valor da segunda opção, conforme imagem abaixo:
Mais uma vez vamos automatizar a execução do processo através de um script no package.json:
IMPORTANTE: Note que é necessário substituir os valores das variáveis PACTFLOW_URI e PACTFLOW_TOKEN antes de executar o comando. Estas variáveis serão substituídas respectivamente pela URL do Pactflow assim que você gerar a sua conta e o token que foi copiado anteriormente. Um exemplo pode ser visto neste link.
Pra rodar o comando via terminal:
$ npm run publish:pactflow
No Pactflow agora podemos visualizar o nosso Pacto e o status de Unverified pois o mesmo ainda não foi verificado pelo nosso Provider.
Próximos passos
Agora que já criamos o nosso pacto e já o enviamos para o Broker/Pactflow temos que realizar a validação do Pacto na perspectiva do Provider. A continuação dessa saga acaba (será?) nesse último artigo: Criando e executando Testes de Contrato com Pact.js — Parte III