Automatizando requisições que exigem autenticação no Postman com pre-requests
Gustavo

Gustavo @dantas

About: software engineer | #nodejs #react

Location:
Brazil
Joined:
Jul 27, 2021

Automatizando requisições que exigem autenticação no Postman com pre-requests

Publish Date: May 20
2 0

No Postman, como você testa as rotas da sua API REST ou as queries da sua API GraphQL que precisam de autenticação JWT? Você provavelmente cria uma rota/mutation para login e depois copia o token e coloca no header de authorization, certo? Nesse post eu vou te mostrar como você pode fazer todo esse processo de forma automatizada, seja em uma API REST ou GraphQL 🚀



Criando variáveis

Primeiro, precisamos ter variáveis para usar como Bearer Token na requisição/mutation.

Criar uma variável é bem simples:

  1. Clique na sua collection criada (seu projeto) no Postman
  2. Vá para a seção variables e crie a variável:

Criando scripts

Primeiro, você precisa criar um request/mutation que seja responsável por retornar um token que será utilizado. Por exemplo:

Agora na request/mutation, vá para a seção scripts.

Script para query GraphQL

const url = 'http://localhost:3000/graphql';
const method = 'POST';
const header = {
    'Content-Type': 'application/json',
};
const graphqlMutation = {
    query: `
        mutation UserSignIn($email: String!, $password: String!) {
            userSignIn(input: { 
                email: $email, 
                password: $password 
            }) {
                token
                error {
                    field
                    message
                }
            }
        }
    `,
    variables: {
        email: "postman_user@test.com",
        password: "pass123"
    }
};

pm.sendRequest({
    url,
    method,
    header,
    body: {
        mode: 'raw',
        raw: JSON.stringify(graphqlMutation)
    }
}, (err, res) => {
    if (err) {
        console.error(err);
        return;
    }

    const response = res.json();
    if (response.errors) {
        console.error("GraphQL Errors:", response.errors);
    } else if (response.data.userSignIn.error) {
        console.error("Authentication Error:", response.data.userSignIn.error);
    } else {
        pm.collectionVariables.set("bearerToken", response.data.userSignIn.token);
    }
});
Enter fullscreen mode Exit fullscreen mode

Script para API Rest

let url = `http://localhost:3000/auth`;
let method ='POST';
let header = {
    'Content-Type': 'application/json',
};
let payload = {
    login: "seu_login",
    password: "sua_senha",
};

pm.sendRequest({
    url,
    method,
    header,
    body: {
        mode: 'raw',
        raw: JSON.stringify(payload)
    },
}, (err, res) => {
    if(err) {
        console.log(err)
        return;
    }
    pm.environment.set("bearerToken", res.json().access_token)
});
Enter fullscreen mode Exit fullscreen mode

Mais algumas palavrinhas - troubleshooting e ajuda

  • Tenha em mente que os requests foram feitos de acordo com o meu schema, adapte-o para o seu caso de uso.
    • Você pode ver como eu adaptei para o meu projeto aqui
  • Caso precise debuggar o próprio postman, você pode utilizar Ctrl+Alt+C para abrir o console
  • Caso precise de ajuda, você pode:

Comments 0 total

    Add comment