Saltar al contenido principal

🔍 Investigación: Usuarios de Prueba en Clerk

Fecha: 1 de enero, 2025
Objetivo: Resolver problemas de autenticación con usuarios fake/de prueba en Clerk


📋 Problema Actual

Los usuarios fake creados con nuestros scripts no pueden iniciar sesión en Clerk. Posibles causas:

  1. ❌ Verificación de email requerida
  2. ❌ 2FA requerido
  3. ❌ Contraseñas no válidas
  4. ❌ Configuración del Dashboard de Clerk
  5. ❌ Problemas con la creación de usuarios vía API

🔍 Investigación Realizada

1. Documentación Oficial de Clerk

Fuentes consultadas:

2. Métodos para Crear Usuarios de Prueba

Método 1: Usuarios de Prueba con Códigos Predefinidos (Recomendado)

Según la documentación de Clerk, puedes usar direcciones de correo electrónico o números de teléfono ficticios que generan códigos de acceso predefinidos.

Ventajas:

  • ✅ No requiere envío de emails reales
  • ✅ Códigos predefinidos para pruebas
  • ✅ Funciona en modo desarrollo

Implementación:

// Clerk genera códigos predefinidos para emails de prueba
// Ejemplo: test@example.com siempre genera el mismo código

Método 2: Crear Usuarios vía API con createUser

Parámetros importantes:

  • skipPasswordChecks: true - Permite contraseñas simples
  • skipPasswordRequirement: true - No requiere contraseña
  • emailAddress: [email] - Email del usuario
  • password: string - Contraseña (opcional si skipPasswordRequirement)

Problema conocido:

  • ⚠️ Aún así puede requerir verificación de email si está activada en el Dashboard

Método 3: Desactivar Verificación en Dashboard

Pasos:

  1. Dashboard → Settings → User & Authentication
  2. Desactivar "Require email verification"
  3. Cambiar "Multi-factor authentication" a "Optional" o "Disabled"

🛠️ Soluciones Propuestas

Solución 1: Usar Emails de Prueba con Códigos Predefinidos

Clerk tiene un sistema de emails de prueba que genera códigos predefinidos.

Emails de prueba conocidos:

  • test@example.com
  • user@test.com
  • Cualquier email con dominio @test.com o @example.com

Códigos predefinidos:

  • Clerk genera códigos consistentes para estos emails
  • No requiere verificación real

Implementación:

// Usar emails con dominio de prueba
const testEmails = [
'test.admin@test.com',
'test.participant1@test.com',
// ...
];

Solución 2: Verificar Configuración del Dashboard

Checklist:

  • "Require email verification" está DESACTIVADO
  • "Multi-factor authentication" está en "Optional" o "Disabled"
  • "Password requirements" permite contraseñas simples
  • La aplicación está en modo "Development" (no Production)

Solución 3: Usar skipEmailVerification (si existe)

Nota: Este parámetro puede no existir en la API actual. Verificar documentación más reciente.

Solución 4: Crear Usuarios Manualmente en Dashboard

Pasos:

  1. Dashboard → Users → Create User
  2. Ingresar email y contraseña
  3. Marcar como "Verified" manualmente
  4. Sincronizar con BD local

📝 Scripts Actuales

scripts/create-clerk-users.ts

Lo que hace:

  • ✅ Crea usuarios en Clerk vía API
  • ✅ Usa skipPasswordChecks: true
  • ✅ Usa skipPasswordRequirement: true
  • ✅ Sincroniza userId con BD local
  • ⚠️ NO verifica emails automáticamente

Problema:

  • Los usuarios se crean pero pueden requerir verificación de email

scripts/verify-clerk-users.ts

Lo que hace:

  • ✅ Intenta verificar emails de usuarios existentes
  • ✅ Usa verifyEmailAddress(emailAddressId)

Problema:

  • Puede no funcionar si la verificación está desactivada en el Dashboard

🎯 Plan de Acción

Paso 1: Verificar Configuración del Dashboard

  1. Ir a https://dashboard.clerk.com/
  2. Seleccionar la aplicación
  3. Settings → User & Authentication
  4. Verificar:
    • ✅ "Require email verification" = OFF
    • ✅ "Multi-factor authentication" = Optional
    • ✅ "Password requirements" = Permite contraseñas simples

Paso 2: Usar Emails de Prueba con Dominios Especiales

Modificar prisma/seed-users.ts para usar dominios de prueba:

  • @test.com
  • @example.com

Paso 3: Actualizar Script de Creación

Modificar scripts/create-clerk-users.ts para:

  • Usar emails con dominios de prueba
  • Verificar que los usuarios se creen correctamente
  • Intentar verificar emails después de crear

Paso 4: Probar Flujo Completo

  1. Ejecutar pnpm db:seed:users
  2. Ejecutar pnpm clerk:create-users
  3. Intentar iniciar sesión con un usuario de prueba
  4. Verificar que no pida código de verificación

🔗 Referencias


⚠️ Notas Importantes

  1. Modo Desarrollo vs Producción:

    • Las configuraciones de desarrollo NO deben usarse en producción
    • Siempre verificar que estás en la aplicación correcta
  2. Códigos Predefinidos:

    • Clerk puede tener códigos predefinidos para emails de prueba
    • Consultar documentación más reciente para confirmar
  3. Verificación Manual:

    • Si la API no permite verificar automáticamente, hacerlo manualmente en el Dashboard

Próximos Pasos:

  1. Verificar configuración del Dashboard
  2. Probar con emails de dominio @test.com
  3. Actualizar scripts si es necesario
  4. Probar flujo completo de autenticación