Closed diagutierrezro closed 1 month ago
Se inicia con el ajuste de las pruebas unitarias. Para poder crear los Mocks es necesario utilizar una librería nativa de python que se llama unittest, la cual se realiza la importación:
Posteriormente, para motivos de practicidad sólo se dejará sin comentarear una función de prueba unitaria de postVerify hasta que se confirme que la adición de los mocks funcione correctamente y se pueda implementar en las demás pruebas. Se agrega un decorador a la prueba y se indica el tipo de respuesta que debe tener:
Sin embargo se genera un error que se está tratando de arreglar
Queda pendiente la revisión de este error, la confirmación de que los mocks funcionan y la implementación en las demás pruebas unitarias.
Se corrige el error presentado el día anterior, se estaba referenciando de forma incorrecta el método:
Se corrigió la referenciación y se corrió la prueba dando un resultado satisfactorio:
Sin embargo, al momento de implementar las demás pruebas, se recibían errores 500 y según los logs, se estaban realizando intentos de conexiones a la API en vez de utilizar los Mocks:
Investigando se encontró que era necesario también crear los mocks de las peticiones internas del método de firma electrónica y de verificación (post, get, put, etc), por lo que se comienza a realizar esta implementación
Se logró encontrar el modo de mockear las peticiones internas. Por el momento se está probando sólo los casos de éxito de postVerify.
Primero se deben mockear las variables de entorno involucradas:
Ahora se debe simular la respuesta, capturando primero todas las consultas request (en este caso sólo get), para luego con el propósito de mockear las respuestas se genera un json dummy acorde a la respuesta real de la api para cada uno de los distintos códigos de verificación omitiendo las clave valor que no necesite el método para funcionar:
Se modifica el código de la prueba para poder implementar estos cambios:
Sin embargo al momento de ejecutar se registra este error:
El motivo de dicho error radica en esta línea del método postVerify:
Al parecer el mock a pesar de tener la estructura correcta del json, esta debe tener un formato distinto, por lo que se debe agregar este mock con la respuesta real de la API sin formatear (cosa que no se puede ver en postman), sin embargo la ejecución local para poder observar esta información no es posible por temas del computador en el que se está realizando el desarrollo. Por lo tanto se centrarán los esfuerzos en volver a habilitar las peticiones locales para poder resolver este apartado y que puedan funcionar las pruebas unitarias
Se termina de realizar el ajuste a las pruebas unitarias. En primera instancia se logró resolver el problema del equipo en el que se estaba desarrollando.
Gracias a lo anterior se pudieron rescatar las respuestas originales de las apis para poder realizar el proceso de mocking, quedando el método de verificación así:
Como se evidencia ahora las respuestas son simuladas cono un bytearray.
Para firma electrónica el proceso de ajuste fué bastante extenso, ya que habían más respuestas de distintos tipos que mockear. Sin embargo se logró realizar el ajuste, agregando las respuestas de las APIs en formato byteArray, además de configurar por separado los mocks de los get, post y put, quedando la función de prueba unitaria de la siguiente manera:
Con las pruebas de fallo correcto de firma electrónica el proceso fué similar, agregando al decorador de parámetros las respuestas configuradas del método de respuesta normal, siendo el resto muy similar al anterior expuesto:
Como resultado final no se crean registros en la base de datos ni en Nuxeo si no que las pruebas unitarias son realizadas correctamente (los warnings son relativos a versiones de algunos métodos de bibliotecas):
Por tanto se coloca en in review
Muy buen trabajo Andres.
Se requiere realizar ajustes a las pruebas unitarias para que estas se creen sobre cada función y usando mocks para no afectar otros sistemas ni generar registros de esta ejecución de pruebas, para esto se deben primero crear los mocks que simulen las respuestas de las apis.
Sub Tareas
Criterios de aceptación
Requerimientos
No aplica
Definition of Ready - DoR
Definition of Done - DoD - Desarrollo