Skip to content

Latest commit

 

History

History
192 lines (157 loc) · 4.37 KB

File metadata and controls

192 lines (157 loc) · 4.37 KB

Testes da API - Sprint 1

📋 Endpoints Criados

1. Health Check

curl http://localhost:8000/api/v1/health-check.php

Resposta esperada (200):

{
  "success": true,
  "api": "VIRTUS Talent Hub - API v1",
  "status": "operational",
  "database": "connected",
  "timestamp": "2024-03-26T10:30:00+00:00"
}

2. Register (Criar usuário)

curl -X POST http://localhost:8000/api/v1/auth/register.php \
  -H "Content-Type: application/json" \
  -d '{
    "email": "joao@ufcg.edu.br",
    "password": "SeNha123",
    "full_name": "João Silva",
    "user_role": "user"
  }'

Resposta esperada (201):

{
  "success": true,
  "message": "Usuário registrado com sucesso",
  "data": {
    "user_id": 1,
    "email": "joao@ufcg.edu.br",
    "full_name": "João Silva",
    "user_role": "user"
  }
}

Casos de erro esperados:

  • Email vazio → 400 "Email é obrigatório"
  • Email inválido → 400 "Email inválido"
  • Domínio não permitido → 400 "Domínio '...' não é permitido"
  • Senha < 8 caracteres → 400 "Senha deve ter no mínimo 8 caracteres"
  • Email já existe → 409 "Email já está registrado"

3. Login (Autenticar usuário)

curl -X POST http://localhost:8000/api/v1/auth/login.php \
  -H "Content-Type: application/json" \
  -d '{
    "email": "joao@ufcg.edu.br",
    "password": "SeNha123"
  }'

Resposta esperada (200):

{
  "success": true,
  "message": "Login realizado com sucesso",
  "data": {
    "user_id": 1,
    "email": "joao@ufcg.edu.br",
    "full_name": "João Silva",
    "user_role": "user"
  }
}

Casos de erro esperados:

  • Email ou senha vazio → 401 "Email e senha são obrigatórios"
  • Credenciais inválidas → 401 "Email ou senha inválidos"

4. Auth Status (Verificar autenticação)

# COM SESSÃO ATIVA
curl http://localhost:8000/api/v1/auth/status.php

Resposta esperada (200 - Autenticado):

{
  "success": true,
  "authenticated": true,
  "data": {
    "user_id": 1,
    "email": "joao@ufcg.edu.br",
    "full_name": "João Silva",
    "user_role": "user"
  }
}

Resposta esperada (401 - NÃO Autenticado):

{
  "success": false,
  "authenticated": false,
  "message": "Não autenticado"
}

5. Logout (Sair)

curl -X POST http://localhost:8000/api/v1/auth/logout.php

Resposta esperada (200):

{
  "success": true,
  "message": "Logout realizado com sucesso"
}

🧪 Teste Completo (Frontend)

Pré-requisitos

  1. ✅ Banco de dados criado e schema.sql executado
  2. ✅ Domínios permitidos inseridos na tabela allowed_domains (ex: ufcg.edu.br, institution.edu.br)
  3. ✅ PHP server rodando na porta 8000
  4. ✅ Arquivos copiados para pasta correta

Fluxo de Teste

  1. Abrir index.html → Clicar "Criar Conta"
  2. Preencher formulário com dados válidos
  3. Verificar se usuário foi criado
  4. Fazer login com as credenciais
  5. Verificar se dashboard carrega dados do usuário
  6. Fazer logout

⚙️ Checklist Sprint 1

  • Schema.sql executado no banco
  • Tabela allowed_domains preenchida com domínios institucionais
  • 5 endpoints criados e testados
  • Frontend consegue chamar endpoints
  • Sessões funcionando corretamente
  • Erros retornados com status HTTP corretos

🐛 Troubleshooting

"CORS error" ou "Connection refused"

  • Verificar se PHP server está rodando: php -S localhost:8000
  • Verificar se arquivo existe: ls /api/v1/auth/login.php

"Banco de dados indisponível"

  • Verificar credenciais em includes/config.php
  • Verificar se MySQL está rodando
  • Executar: mysql -u root -p < db/schema.sql

"Email não permitido"

  • Verificar allowed_domains table: SELECT * FROM allowed_domains;
  • Inserir domínio se necessário: INSERT INTO allowed_domains (domain, description) VALUES ('seu.dominio', 'Descrição');

Sessão não persiste entre requisições

  • Verificar que session_start() está no início dos endpoints
  • Verificar se cookies estão habilitados no navegador
  • Verificar pasta de sessões tem permissão de escrita

📝 Próximos Passos (Sprint 2)

  • Criar endpoints de recuperação de senha (forgot-password.php, reset-password.php)
  • Criar endpoints de usuário (GET/PUT /api/v1/users.php)
  • Criar páginas de termos e privacidade
  • Implementar logging LGPD
  • Adicionar testes unitários