Boilerplate REST-assured

Ambiente

Para executar os testes localmente, estou utilizando o ServeRest

Logo do ServeRest

Link do Repo: https://github.com/ServeRest/ServeRest

ServeRest está disponível de forma online, no npm e no docker.

npm install

Para iniciar o serviço basta acessar a pasta ServeRest-trunk rodar o comando

npx serverest@latest

Pré Requisitos REST-assured

Configuração

variáveis de ambiente e bash_profile - exemplo:

java: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
maven: export PATH=/opt/apache-maven-3.5.4/bin:$PATH
Instalando Java
Instalando Maven

Crie um maven project ou use um pom.xml existente para fazer o download/instalação das dependências.

Instalação

Clone project

  • Clone este repositório para sua maquina usando http or ssh, por exemplo:

git clone https://github.com/rafaelbercam/boilerplate-api-test-rest-assured.git

  • Instale todas as dependências (pom.xml) usando mvn install e execute os testes:

cd boilerplate-api-test-rest-assured

mvn install

Como configurar os testes

Antes de rodar os testes voce vai precisar:

  • Criar um arquivo config.properties dentro da pasta resources e inserir as variáveis de ambiente.
  • Arquivo de Exemplo: config.properties.example

The valid values are below:

Exemplo:
APP_URL=http://localhost:3000
USER=fulano@qa.com
PASSWORD=teste
NOTA:

Neste boilerplate o arquivo config.properties esta exposto, mas seguindo o guia de boas práticas você deve adicionar o arquivo config.properties no .gitignore

Instalando Dependências do Projeto

Rodar o comando

mvn install

Rodar os testes

Basta rodar o comando

mvn test -Dtest=AllIntegratedTests

Configuração do Projeto

O projeto esta dividido da seguinte maneira:

[test]
  [java]
    [br.com.restassrured]
       [commons] -> Classes de configurações e do Request Specification do REST-assured
       [data] -> Classes que retornam objetos para serem parseados nas requisições.
       [requests] -> Classes que retornam métodos que disparam as requisições do REST-assured
       [runner] - Classes que rodam suites de testes específicas usando o `@RunWith` do JUnit4
       [tests] -> Arquivos de Teste no forma JUnit
    [resources] -> Arquivo de configuração das variáveis de ambiente.

data

São classes que retornam objetos de acordo com os paramentros enviados em uma requisição.

Exemplo:

public class User {

    private String nome;
    private String email;
    private String password;
    private String administrador;

}

requests

Em requests, retornam a Response da requisição do REST-assured. Dessa foma o tipo retornado do método é do tipo Response

Basta fazer o import do Response.

import io.restassured.response.Response;

Exemplo da Classe:

public class LoginRequests {
    public Response postLogin(){
       DataLogin login = new DataLogin();
       return given()
                    .spec(requestSpecification)
                    .body(login.getLogin(login)).
               when()
                    .post("/login").
               then().extract().response();
    }
}

test

Em test, poderão ser colocados os arquivos de teste no formato do JUnit.

Exemplo da classe:

public class Login {

    private final LoginRequests request = new LoginRequests();
    private static Response response;

    @Test
    public void postLogin(){

        response = request.postLogin();
        assertEquals(HttpStatus.SC_OK,response.statusCode());
        assertEquals(
                "Login realizado com sucesso",
                response.getBody().jsonPath().get("message"));
        
    }
}

Note como a resposta da requisição retorna um objeto do tipo Response, foi necessário declarar uma variável do tipo para recebe-la.