Validación de contraseña

Emmanuel Valverde y Fran Iglesias

Ver biografía y publicaciones del autor

Iteración 1 - Validación de contraseña básica

Objetivo

Diseñar e implementar un software que valide una contraseña utilizando TDD.

La contraseña será introducida por el usuario (como argumento del método) y el software deberá responder si la contraseña es válida o no.

Una contraseña válida debe cumplir los siguientes requisitos:

  • Tener más de 8 caracteres
  • Contener una letra mayúscula
  • Contener una letra minúscula
  • Contener un número
  • Contener un guión bajo

Requisitos técnicos:

  • Queremos un método que verifique si la contraseña es válida o no.
  • No queremos saber la razón por la cual la contraseña no es válida (el valor de retorno es un booleano).

Iteración 2 - Abstracción de normas

Objetivo

Diseñar e implementar un software que pueda adaptarse a diferentes reglas de validación de contraseñas TDD y centrarse en los principios OOP.

Supongamos que ahora queremos crear otro tipo de validaciones de contraseñas porque en nuestra app necesitamos diferentes tipos de contraseñas, como por ejemplo:

Validación 2:

  • Tener más de 6 caracteres
  • Contener una letra mayúscula
  • Contener una letra minúscula
  • Contener un número

Validación 3:

  • Tener más de 16 caracteres
  • Contener una letra mayúscula
  • Contener una letra minúscula
  • Contener un guión bajo

Cosas a practicar

En esta iteración, debemos tratar de identificar una buena abstracción y de trabajar en los principios de OOP, así como en patrones de diseño como Builder y Factory.

Restricciones interesantes

Usa object calisthenics.

Iteración 3 - Errores múltiples

Objetivo

Ahora podremos saber si una contraseña es válida o no, pero no podremos entender por qué deberíamos devolver una lista de errores para cada contraseña no válida, para poder saber por qué la contraseña no es válida.

Cosas a practicar

Identifica qué tan mantenible es el código que has construido hasta ahora, y cómo se adapta a los cambios. Esta iteración podría cambiar según el lenguaje de programación que utilices.

Iteración 4 - Estrategia de validación

Objetivo

Hasta este punto hemos podido crear una lista de reglas de validación y verificar que la contraseña pase cada una de ellas. Ahora queremos una nueva contraseña con las mismas reglas pero que permita omitir sólo una de ellas.

Validación 4

  • Tener más de 8 caracteres
  • Contener una letra mayúscula
  • Contener al menos un número 
  • Contener un guión bajo

Ejemplo:

  • Tiene más de 8 caracteres ✅
  • Contiene una letra mayúscula ✅
  • Contiene un número ✅
  • Contiene un guión bajo ❌

Esta contraseña es válida

Cosas a practicar

Esto ayudará a reforzar la encapsulación para las listas de reglas y a tener un mejor diseño para las estrategias de validación [evitando que usemos herencia]. Esto también podría ayudarnos a trabajar en el patrón Strategy.

Vídeo: