Skip to content

Flujo de auto-registro y aprobación

Plan de pruebas end-to-end para el ciclo completo "alguien se registra como reclutador o empresa → admin lo aprueba o rechaza". Combina interacciones de tres roles distintos, así que se prueba como un solo escenario continuo.

Duración estimada: 20 minutos por rol (≈ 40 min en total para reclutador + empresa).

Ambiente sugerido

Local con MailHog corriendo (http://localhost:8025) para inspeccionar los correos sin ensuciar buzones reales.

Pre-requisitos

  • Backend corriendo (php artisan serve, MailHog activo).
  • Frontend corriendo (npm run dev en humae_frontend).
  • Una cuenta de admin verificada y aprobada. Si no la tienes, créala con el seeder:
    bash
    cd humae_backend
    php artisan db:seed --class=TestAccountsSeeder
    Eso te deja admin@test.humae / Password123 lista.

Caso 1 · Reclutador self-service (happy path)

TC-REG-REC-001 · Reclutador se registra

Severidad: 🔴 Crítica

Pasos:

  1. Logout (si tienes sesión).
  2. /register → click en card "Soy reclutador"/register/reclutador.
  3. Llenar:
    • Nombre: Recluta Test
    • Email: recluta-prueba@humae.test
    • Teléfono: +52 55 0000 0000
    • Password: Password123 / Password123
    • Motivo: Prueba de registro automática.
    • Aceptar términos.
  4. Submit.

Resultado esperado:

  • 201 con pending_approval: true.
  • UI cambia a la pantalla "¡Recibimos tu solicitud!" con el ícono MailCheck verde.
  • En MailHog hay dos correos nuevos:
    • Para recluta-prueba@humae.test con asunto "Verificación…" (link firmado).
    • Para admin@test.humae con asunto "Solicitud de registro pendiente: Reclutador".
  • En tinker: User::where('email','recluta-prueba@humae.test')->first() devuelve un user con status='pending_approval', email_verified_at=NULL, rol Spatie recruiter asignado.

TC-REG-REC-002 · Login bloqueado antes de verificar email

Pasos:

  1. /login → email + password del reclutador recién registrado.
  2. Submit.

Resultado esperado:

  • 403 con errors.code = email_unverified.
  • Toast "Verifica tu correo antes de iniciar sesión" con acción "Reenviar correo".

TC-REG-REC-003 · Verificar correo

Pasos:

  1. En MailHog, abrir el correo de verificación enviado al reclutador.
  2. Click en el botón del correo. Abre /verify-email?id=...&hash=...&signature=....
  3. Esperar el redirect.

Resultado esperado:

  • En backend: email_verified_at deja de ser nulo.
  • status sigue en pending_approval — la verificación no aprueba.
  • UI redirige a /login con toast de éxito.

TC-REG-REC-004 · Login bloqueado por aprobación pendiente

Pasos:

  1. /login → mismas credenciales.

Resultado esperado:

  • 403 con errors.code = pending_approval.
  • Toast "Tu cuenta está en revisión" con descripción "Un administrador de HUMAE la revisará. Te avisaremos por correo cuando esté aprobada.".

TC-REG-REC-005 · Admin aprueba al reclutador

Pasos:

  1. Logout. Login como admin@test.humae.
  2. Click en el CTA del correo "Ir a usuarios pendientes" — abre /admin/usuarios?status=pending_approval.
  3. Verificar que el filtro está pre-seleccionado en "Pendientes de aprobación".
  4. Click en Aprobar en la fila del reclutador.

Resultado esperado:

  • Toast "Recluta Test fue aprobado".
  • La fila desaparece del filtro pending.
  • En MailHog llega un correo nuevo a recluta-prueba@humae.test con asunto "Tu cuenta HUMAE fue aprobada".

TC-REG-REC-006 · Reclutador puede iniciar sesión

Pasos:

  1. Logout admin. /login con credenciales del reclutador.

Resultado esperado:

  • 200 con {user, token}.
  • Redirige a /recruiter/directorio.
  • Header muestra los items administrativos del rol recruiter (Directorio, Pipeline, Asignaciones, etc.).

Caso 2 · Empresa self-service (happy path)

TC-REG-EMP-001 · Empresa se registra

Severidad: 🔴 Crítica

Pasos:

  1. Logout. /register → card "Represento una empresa"/register/empresa.
  2. Llenar sección "Tu cuenta":
    • Nombre: Owner Empresa
    • Email: owner-prueba@empresa.test
    • Password: Password123 / Password123
    • Aceptar términos.
  3. Llenar sección "Datos de la empresa":
    • Nombre legal: Empresa Demo S.A. de C.V.
    • Nombre comercial: Empresa Demo
    • Sitio web: https://empresa.test
    • Motivo: Buscamos contratar talento HUMAE.
  4. Submit.

Resultado esperado:

  • 201 con pending_approval: true.
  • En DB: existen User (status=pending_approval, rol company_user), Company (status='pending', is_verified=false), y CompanyMember (rol owner, is_primary_contact=true, accepted_at no nulo).
  • MailHog muestra correo verify-email al usuario y notificación pending al admin (incluyendo legal_name).

Pasos:

  1. Repetir el form con razón social vacía.

Resultado esperado:

  • 422 con errors["company.legal_name"].
  • UI muestra el error inline en el campo correspondiente.

TC-REG-EMP-003 · Verificar correo + esperar aprobación

Mismo patrón que TC-REG-REC-003 y TC-REG-REC-004.


TC-REG-EMP-004 · Admin rechaza con motivo

Pasos (probar el camino de rechazo, complementario al aprobado del reclutador):

  1. Login como admin. /admin/usuarios?status=pending_approval.
  2. Click en Rechazar en la fila de la empresa.
  3. En el dialog, escribir motivo: "Información incompleta — falta sitio web verificable.".
  4. Confirmar.

Resultado esperado:

  • Toast "Solicitud de Owner Empresa rechazada.".
  • La fila desaparece de pending y aparece bajo Inactivos.
  • En MailHog llega correo "No pudimos aprobar tu cuenta HUMAE" con el motivo en el cuerpo.

TC-REG-EMP-005 · Login bloqueado tras rechazo

Pasos:

  1. Logout admin. /login con credenciales de la empresa rechazada.

Resultado esperado:

  • 403 con errors.code = account_inactive.
  • Toast "Tu cuenta está inactiva. Contacta a soporte.".

Casos edge

TC-REG-EDGE-001 · Email duplicado

Pasos: Intentar registrarse como reclutador con un email ya en uso.

Resultado esperado: 422 con errors.email = ["Este correo ya está registrado"]. UI muestra el error inline.


TC-REG-EDGE-002 · Throttle 5/min

Pasos: Disparar 6 solicitudes a /auth/register/recruiter en un minuto.

Resultado esperado: La sexta devuelve 429 Too Many Requests con Retry-After.


TC-REG-EDGE-003 · Doble aprobación

Pasos: Aprobar a un user, recargar la página, click Aprobar otra vez.

Resultado esperado: 409 "Esta cuenta no está pendiente de aprobación.". UI muestra el toast de error y no rompe.


TC-REG-EDGE-004 · Sin admins en el sistema

Pasos: Borrar todos los users con rol admin (caso teórico) y registrar a un reclutador.

Resultado esperado: El registro pasa (201). El Notification::send() recibe colección vacía y simplemente no manda nada — el endpoint no truena.

Notificaciones a verificar

AcciónCorreo aPlantillaAparece en bell?
Registro recruiter/companySolicitanteVerifyEmailNo (auth de Laravel)
Registro recruiter/companyCada adminPendingUserRegistrationNotificationSí (canal database)
AprobaciónSolicitanteAccountApprovedNotificationSí (canal database)
RechazoSolicitanteAccountRejectedNotificationSí (canal database)

Tests automatizados de respaldo

bash
cd humae_backend
./vendor/bin/pest \
  tests/Feature/Api/V1/Auth/RegisterRecruiterTest.php \
  tests/Feature/Api/V1/Auth/RegisterCompanyTest.php \
  tests/Feature/Api/V1/Auth/LoginGatesTest.php \
  tests/Feature/Api/V1/Admin/ApproveRejectTest.php

Los 13 tests cubren los caminos felices y los principales errores: email duplicado, missing legal_name, login bloqueado por verify/approval/inactive, aprobar/rechazar como admin vs no-admin, idempotencia (409 al re-aprobar).

Siguiente

Volver al plan general →.

Manual de usuario HUMAE · Uso interno