Skip to content

feat: agregar validacion de entrada con class-validator - #47

Open
anidroid1184 wants to merge 2 commits into
Velar-Bonds:mainfrom
anidroid1184:feat/add-input-validation
Open

feat: agregar validacion de entrada con class-validator#47
anidroid1184 wants to merge 2 commits into
Velar-Bonds:mainfrom
anidroid1184:feat/add-input-validation

Conversation

@anidroid1184

Copy link
Copy Markdown
  • Agrega ValidationPipe global con whitelist, forbidNonWhitelisted y exceptionFactory personalizada
  • Define RegisterDto y LoginDto con decoradores de validacion (@isemail, @minlength, @isin, @IsOptional)
  • Remueve guards manuales if (!email || !password) reemplazados por validacion automatica
  • Agrega tests unitarios al DTO con plainToInstance + validate

Qué cambia

Se habilita validación automática de entrada en la API de NestJS usando class-validator y class-transformer. Antes los payloads llegaban al servicio sin validar — ahora el ValidationPipe global rechaza cualquier body inválido con un 400 estructurado antes de que toque la lógica de negocio.

Archivos modificados:

  • apps/api/src/bootstrap.ts — ValidationPipe global con whitelist: true, forbidNonWhitelisted: true, y exceptionFactory que produce errores descriptivos por campo.
  • apps/api/src/auth/dto/auth.dto.tsRegisterDto y LoginDto decorados con @IsEmail, @MinLength(8), @IsIn(['usuario','partido','tse']), @IsOptional, etc.
  • apps/api/src/auth/auth.service.ts — Tipos RegisterInput/LoginInput movidos al DTO, guards manuales if (!email || !password) eliminados, firma de métodos actualizada a RegisterDto/LoginDto.
  • apps/api/src/auth/auth.dto.spec.ts — 6 tests unitarios con plainToInstance + validate cubriendo email inválido, password corta, perspectiva inválida, campos desconocidos, y payloads válidos (usuario y partido).

Closes #23

Por qué

Los payloads de registro y login llegaban sin validación automática al servicio. Un llamado con email inválido, password vacía, o campos extras no era rechazado por el framework — dependía de guards manuales dispersos. NestJS ofrece ValidationPipe + class-validator que resuelve esto a nivel framework con cero código repetitivo por endpoint.

Checklist

  • Corrí los checks del repo (typecheck / tests / build) y pasan
  • No rompe funcionalidad existente
  • Agregué/actualicé tests si corresponde
  • Commits convencionales (feat/fix/docs/chore)
    Nota: El spec bonds.service.spec.ts tiene un test que falla preexistente (paymentMethods faltante en el evento esperado de auditoría) — no relacionado con este cambio.

- Agrega ValidationPipe global con whitelist, forbidNonWhitelisted y exceptionFactory personalizada
- Define RegisterDto y LoginDto con decoradores de validacion (@isemail, @minlength, @isin, @IsOptional)
- Remueve guards manuales if (!email || !password) reemplazados por validacion automatica
- Agrega tests unitarios al DTO con plainToInstance + validate
@vercel

vercel Bot commented Jul 20, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the josueazc's projects Team on Vercel.

A member of the Team first needs to authorize it.

@anidroid1184 anidroid1184 changed the title feat agregar validacion de entrada con class-validator feat: agregar validacion de entrada con class-validator Jul 20, 2026
@anidroid1184

Copy link
Copy Markdown
Author

@josueazc please review the PR
I'll been waiting for fixing if it's needed

@josueazc

Copy link
Copy Markdown
Contributor

resolve conflicts before continuing.

@anidroid1184

Copy link
Copy Markdown
Author

@josueazc only falls the vercel check.
Says that require authorization to deploy

@josueazc

Copy link
Copy Markdown
Contributor

resolve conflicts before continuing.

apps/api/src/auth/auth.service.ts
apps/api/src/bootstrap.ts

@anidroid1184

Copy link
Copy Markdown
Author

@josueazc sure, I'll review that

@anidroid1184

Copy link
Copy Markdown
Author

@josueazc conflicts resolved and merged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[backend] Input Validation with class-validator DTOs

2 participants