Testando seu “contrato” com o restassured
Após longos meses sem publicar algo, eis que resolvo escrever por dois grandes motivos:
1. alguns amigos me incentivaram bastante;
2. vi muita coisa complexa por aí.
Então, bora lá…
Mesmo sabendo que, o caminho mais fácil nem sempre será o melhor, entendo que muitas vezes precisamos apenas “sair do outro lado” para que depois consigamos avançar em nossas ideias e skills.
Logo, com a ciência sobre a ordem natural das coisas e sem atropelar nada, existem momentos em que não queremos ler 300 livros para escrever apenas um: “Hello World!”.
Pensando nesse contexto, nos deparamos com diversas formas e frameworks para se testar um contrato, então, sem entrar no mérito de explicar o step by step, ou o que seria um contrato (clica ai!), deixo claro que as aspas duplas no título do post significa que, na real, iremos testar apenas o schema-json, ok? (e isso é bem comum por aí haha…)
Após todos estarem de acordo com isso, é a hora de corrermos atrás do tal do contrato através de algum desenvolvedor, task, doc/swagger ou na raça mesmo (leia-se, sozinhos!) haha...lá, teremos todos os atributos, o tipo do valor e se o mesmo será obrigatório ou não.
Bora para o Famoso: “MÃO NA MASSA”!
Vamos baixar a dependência via pom.xml: essa aqui!
(além de todas as outras necessárias para o seu projeto rodar, claro).
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>3.0.0</version>
</dependency>
Agora, dentro da pasta src/test/resources/{qualquer_coisa_que_quiser}, criaremos um arquivo .json: “exemplo-schema.json”
Ah, uma nota importantíssima:
Esse arquivo exemplo-schema.json precisa ficar dentro da pasta “resources” (atente-se ao caminho: src/test/resources/) fora da pasta src/test/java/ hein!
Dentro desse arquivo, teremos que colocar nosso schema e a regra de validação que foram acordadas anteriormente através do contrato. Existem vários sites que nos auxíliam nesse formato, vamos utilizar esse: site json-schema
Abaixo eu tenho um exemplo de um JSON de um endpoint que peguei para testar:
E aqui, um exemplo de como ficou meu schema para testa-lô:
Como podem ver, eu estou avisando que em meu schema tenho vários atributos do tipo string e que são required! Isso faz com que, caso alguma coisa mude para integer, boolean ou sei lá…o meu “contrato” se quebre.
Mas pera lá, para vermos funcionando e/ou quebrando, temos que ter um arquivo para testa-lo, né? Simbora!
Agora vamos criar um arquivo .java dentro pasta src/test/java/{qualquer_coisa_que_quiser} chamado: “ExemploContrato.java”
Vamos testar essa joça!
Após rodar o teste, se tudo estiver correto, veremos o “certinho verde” que tanto amamos (ou não!).
E, abaixo, para fins de exemplo, mudei o “type” do atributo “administrador” para um boolean e eis o resultado:
Simples, fácil e rápido!
Enfim, agora com qualquer alteração no schema (“contrato” haha) conseguiremos pegar antecipadamente através de um pipeline, por exemplo.
Obrigado pela atenção!
Ah, os feedbacks, dúvidas, xingamentos e etc…serão sempre bem vindos hein.
Até a próxima.
Pontos a serem considerados:
1. conversas e ajudas sobre esse tipo de abordagem com: Bruno Batista
2. muita porrada e debate com o hater/gênio do: Ramses Sacol
3. o excelente serverest que testei com facilidade do: Paulinho
4. a falta de posts em pt-br (sendo ele, simples!)
5. agradecer ao Vitor Cardoso que deu um super feedback e editei esse post
6. se quiserem brincar mais, tem um repositório de estudos aqui: https://github.com/uLucasFraga/restassured_for_studies ❤