Closed initial-mockingbird closed 1 year ago
Addendum: Ya los tests de esta tarea deberian estar hechos, asi que pueden utilizarlos para verificar que las peticiones correctas siguen siendo correctas. Sin embargo, con estos cambios, puede que necesiten modificar los tests (porque ahora retornan errores!).
Addendum2: #18 Va a integrar un nuevo campo en usuario: si se ha verificado o no por correo. Tener en cuenta a la hora de devolver la informacion al front.
Me uno a esta tarea
Actualmente el backend crea, busca y patchea usuarios perfectamente. Sin embargo, este no realiza verificaciones:
Se debe verificarla sanidad de los dominios, e.g las fechas de nacimiento o transacciones no deben ser futuras.
Las verificaciones se deben hacer tanto en POST,PATCH y PUT.
Debe modificarse el ORM para garantizar ciertas restricciones, como por ejemplo, unicidad de usuarios y celulares.
Las verificaciones para 1. y 2. Se realizan en dos lugares:
A nivel del repositorio. El controlador va a llamar a los metodos del repositorio sin verificar nada. Es responsabilidad del repositorio hacer los chequeos correspondientes y retornar el objeto correspondiente o levantar una excepcion. Ojo,no es cualquier excepcion. Ver proximo punto.
A nivel de exception handler. Crear un manejador global de excepciones el cual: agarre las excepciones levantadas por los repositorios (tienen que ponerse de acuerdo para ver cual tipo de excepciones son estas, preferiblemente creen una clase que herede de excepcion para esto) y luego decida que hacer con esto.
Entre las acciones que puede hacer el excepcion handler estan (de manera no exclusiva): Loggear la excepcion, Relanzarla, o soltar un tipo de excepcion especial que flask interpreta como error y automaticamente envia un responsa con codigo 400-499.
Esto puede sonar complicado, pero de verdad no tienen por que complicarse la vida. Hay librerias para hacerlo, en particular:
https://flask.palletsprojects.com/en/2.3.x/errorhandling/
ESTA TAREA REQUIERE DE UN MINIMO DE 2 PERSONAS