Apariencia
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 devenhumae_frontend). - Una cuenta de admin verificada y aprobada. Si no la tienes, créala con el seeder:bashEso te deja
cd humae_backend php artisan db:seed --class=TestAccountsSeederadmin@test.humae/Password123lista.
Caso 1 · Reclutador self-service (happy path)
TC-REG-REC-001 · Reclutador se registra
Severidad: 🔴 Crítica
Pasos:
- Logout (si tienes sesión).
/register→ click en card "Soy reclutador" →/register/reclutador.- 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.
- Nombre:
- Submit.
Resultado esperado:
- 201 con
pending_approval: true. - UI cambia a la pantalla "¡Recibimos tu solicitud!" con el ícono
MailCheckverde. - En MailHog hay dos correos nuevos:
- Para
recluta-prueba@humae.testcon asunto "Verificación…" (link firmado). - Para
admin@test.humaecon asunto "Solicitud de registro pendiente: Reclutador".
- Para
- En tinker:
User::where('email','recluta-prueba@humae.test')->first()devuelve un user constatus='pending_approval',email_verified_at=NULL, rol Spatierecruiterasignado.
TC-REG-REC-002 · Login bloqueado antes de verificar email
Pasos:
/login→ email + password del reclutador recién registrado.- 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:
- En MailHog, abrir el correo de verificación enviado al reclutador.
- Click en el botón del correo. Abre
/verify-email?id=...&hash=...&signature=.... - Esperar el redirect.
Resultado esperado:
- En backend:
email_verified_atdeja de ser nulo. statussigue enpending_approval— la verificación no aprueba.- UI redirige a
/logincon toast de éxito.
TC-REG-REC-004 · Login bloqueado por aprobación pendiente
Pasos:
/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:
- Logout. Login como
admin@test.humae. - Click en el CTA del correo "Ir a usuarios pendientes" — abre
/admin/usuarios?status=pending_approval. - Verificar que el filtro está pre-seleccionado en "Pendientes de aprobación".
- 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.testcon asunto "Tu cuenta HUMAE fue aprobada".
TC-REG-REC-006 · Reclutador puede iniciar sesión
Pasos:
- Logout admin.
/logincon 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:
- Logout.
/register→ card "Represento una empresa" →/register/empresa. - Llenar sección "Tu cuenta":
- Nombre:
Owner Empresa - Email:
owner-prueba@empresa.test - Password:
Password123/Password123 - Aceptar términos.
- Nombre:
- 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.
- Nombre legal:
- Submit.
Resultado esperado:
- 201 con
pending_approval: true. - En DB: existen
User(status=pending_approval, rolcompany_user),Company(status='pending',is_verified=false), yCompanyMember(rolowner,is_primary_contact=true,accepted_atno nulo). - MailHog muestra correo verify-email al usuario y notificación pending al admin (incluyendo
legal_name).
TC-REG-EMP-002 · Validación: legal_name requerido
Pasos:
- 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):
- Login como admin.
/admin/usuarios?status=pending_approval. - Click en Rechazar en la fila de la empresa.
- En el dialog, escribir motivo: "Información incompleta — falta sitio web verificable.".
- 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:
- Logout admin.
/logincon 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ón | Correo a | Plantilla | Aparece en bell? |
|---|---|---|---|
| Registro recruiter/company | Solicitante | VerifyEmail | No (auth de Laravel) |
| Registro recruiter/company | Cada admin | PendingUserRegistrationNotification | Sí (canal database) |
| Aprobación | Solicitante | AccountApprovedNotification | Sí (canal database) |
| Rechazo | Solicitante | AccountRejectedNotification | Sí (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.phpLos 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 →.

