Aprenda como testar APIs com Cypress, quando um access token é necessário

O Cypress é uma excelente ferramenta para os mais diversos tipos de testes automatizados.

Dente esses tipos de testes, facilmente é possível criar e executar testes de API com Cypress.

Para tais testes, o Cypress oferece a funcionalidade cy.request().

Mas e o que fazer quando a API que preciso testar necessita de um token de acesso? 🔐

Que bom que perguntou.

Aí vai um exemplo, utilizando a API do Typeform, a qual exige tal token.

Para este exemplo, irei mostrar um requisição do tipo GET, para buscar minhas informações, porém, o mesmo se aplica para outros tipos de requisições, tais como POST, PUT, ou DELETE.

// cypress/integration/typeformAPI.spec.js

const API_URL = Cypress.env('API_BASE_URL')
const authorization = `Bearer ${Cypress.env('ACCESS_TOKEN')}`

it('retrieves my user information', () => {
  cy.request({
    method: 'GET',
    url: `${API_URL}me`,
    headers: { authorization }
  }).should(({ status, body }) => {
    const { alias, email, language } = body

    expect(status).to.eq(200)
    expect(alias).to.eq('Walmyr Filho')
    expect(email).to.eq('walmyr@example.com')
    expect(language).to.eq('en')
  })
})

No teste acima, primeiro defino duas variáveis (API_URL e authorization), ambas vindo de variáveis, sendo a primeira definida no arquivo cypress.json (ver mais abaixo) e a outra no arquivo cypress.env.json (arquivo não versionado, visto que é onde armazeno dados sensíveis, tais como o ACCESS_TOKEN).

Note que para a variável authorization, à estou interpolando com a string Bearer, visto que é esse tipo de token que a API do Typeform utiliza.

Logo após, defino o teste que obtém as informações do meu usuário, em um bloco it (meu caso de teste).

Na função de callback do bloco it, executo o comando cy.request(), o qual, neste caso, recebe como argumento um objeto, com as propriedades methodurlheaders, com seus respectivos valores, onde no caso dos cabeçalhos (headers) passo a variável que define o token de acesso.

Com a requisição realizada, encadeio o comando .should(), o qual recebe uma função de callback como argumento, e para tal função de callback, passo como argumento as propriedades status e body a partir do objeto de resposta da requisição, por meio de desestruturação de objetos.

No corpo da função de callback, desestruturo as propriedades alias, email e language a partir da propiedade body, visto que estes são os valores os quais usarei para minhas verificações de resultado esperado (além do status).

Por fim, verifico que o status da requisição é de sucesso (200), além de verificar que os valores das variáveis alias, email e language são iguais aos valores esperados (Walmyr Filho, walmyr@example.com e en, respectivamente).

Veja também a definição dos arquivos cypress.json e cypress.env.json (este com um token de acesso exemplo, visto que é um dado sensível).

// cypress.json

{
  "env": {
    "API_BASE_URL": "https://api.typeform.com/"
  }
}
// cypress.env.json

{
  "ACCESS_TOKEN": "token-de-acesso-aqui"
}

É assim que passo o token de acesso nos headers da requisição, para ter as permissões necessárias para fazer as chamadas à API.


Gostou dessa “pitada de Cypress”?

Deixa um comentário.


Ficou curioso(a) e quer aprender mais sobre automação de testes com Cypress? Conheça meus cursos no Udemy.


👋  Até a próxima e bons testes!

Um comentário em “Como testar APIs que necessitam um token de acesso com Cypress

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s