Por que mockar autenticação JWT?
Implementar autenticação real (banco de dados, bcrypt, sessões, refresh tokens) leva dias. Quando o objetivo é testar o fluxo de UI — tela de login, redirecionamentos, persistência de sessão, expiração de token — um mock de JWT permite avançar sem esperar o backend.
O httpdrop permite criar endpoints mock de login que retornam JWTs válidos, simulando exatamente o que um backend real retornaria.
Criando o endpoint de login
Configure uma Mock Rule para POST /auth/login que retorna um JWT:
// Mock Rule: POST /auth/login → 200
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFuYSBTaWx2YSIsImVtYWlsIjoiYW5hQGV4YW1wbGUuY29tIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE2NTc2MDAwLCJleHAiOjE3MTY2NjI0MDB9.xyz",
"refresh_token": "dGhpcy1pcy1hLW1vY2stcmVmcmVzaC10b2tlbg",
"token_type": "Bearer",
"expires_in": 86400
}
# Testando o mock de login
curl -X POST https://httpdrop.com/mock/SEU_ENDPOINT_ID/auth/login -H "Content-Type: application/json" -d '{"email":"ana@example.com","password":"qualquer"}' | jq .
# Resultado:
{
"access_token": "eyJhb...",
"token_type": "Bearer",
"expires_in": 86400
}
Simulando credenciais inválidas
Use o recurso de Chaos ou uma Rule separada para simular erro de autenticação:
// Mock Rule: POST /auth/login → 401 (credenciais inválidas)
{
"error": "invalid_credentials",
"message": "E-mail ou senha incorretos",
"code": "AUTH_FAILED"
}
Gerando um JWT de teste válido
Use a ferramenta Gerador de JWT para criar tokens com payload personalizado:
// Payload para usuário admin
{
"sub": "user_123",
"name": "Ana Silva",
"email": "ana@example.com",
"role": "admin",
"permissions": ["users:read", "users:write", "billing:read"],
"iat": 1716576000,
"exp": 1716662400
}
"test-secret-key" — nunca exponha chaves de produção em ferramentas de browser ou repositórios.Testando rotas protegidas
Configure Mock Rules que verificam o header Authorization:
# Rota que retorna perfil do usuário autenticado
curl https://httpdrop.com/mock/SEU_ENDPOINT_ID/api/me -H "Authorization: Bearer SEU_JWT_TOKEN"
# Mock Rule: GET /api/me → 200
{
"id": "user_123",
"name": "Ana Silva",
"email": "ana@example.com",
"role": "admin"
}
sub do token no campo userId.