Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Pruebas unitarias que fallan si se rompe la autorización

5 tareas · 40 min · Principiante

Una prueba de autorización vale lo que vale el día en que alguien borra el control por error: si sigue en verde, no protegía nada. Conjuntos Llovizna vende una plataforma para administrar conjuntos residenciales y presume de tener sus permisos cubiertos al cien por ciento. Te entrega la política de permisos, sus pruebas unitarias, las del controlador y la corrida de pruebas de mutantes que el equipo lanzó por primera vez.

0 de 5 · 0%

Objetivo de la sala

Una prueba de autorización vale lo que vale el día en que alguien borra el control por error: si sigue en verde, no protegía nada. Conjuntos Llovizna vende una plataforma para administrar conjuntos residenciales y presume de tener sus permisos cubiertos al cien por ciento. Te entrega la política de permisos, sus pruebas unitarias, las del controlador y la corrida de pruebas de mutantes que el equipo lanzó por primera vez.

Las decisiones de permiso se prueban mejor donde se toman: en la función o la clase de política que responde «sí» o «no», sin levantar la aplicación entera. Ahí una prueba es barata, corre en cada cambio y puede recorrer los casos que importan. Pero una prueba de autorización solo sirve si fallaría al romperse la regla. Eso exige tres cosas: casos que deben responder «no» (los permisos de más son el fallo típico y nadie se queja de ellos), casos en el borde de cada condición (el límite exacto, el otro inquilino, el factor que falta) y llamar a la política de verdad, no a una sustituta.

La cobertura de líneas no mide nada de eso: una línea con tres condiciones queda «cubierta» con un solo caso que las cumple todas. Las pruebas de mutantes sí lo miden. La herramienta hace copias del código con un cambio pequeño cada una (borra una condición, cambia <= por <, devuelve True) y corre las pruebas contra cada copia. Si alguna falla, el mutante queda muerto; si todas pasan, sobrevive, y un mutante que sobrevive es un cambio que nadie notaría.

Responde para continuar

¿Qué dice de la batería que un mutante de la política sobreviva?

Ver pista de ayuda

El mutante es un cambio hipotético; lo que se mide es la reacción de las pruebas.

Abre el laboratorio y lee test_api_estado_cuenta.py y luego conftest.py. Las dos pruebas del controlador piden el estado de cuenta de una unidad con dos residentes distintos, pero ninguna de las dos puede fallar por un permiso: una usa un accesorio que cambia la decisión real por una que siempre dice que sí, y la otra acepta cualquiera de los dos códigos.

Sustituir dependencias está bien para aislar una prueba; sustituir justo lo que la prueba dice comprobar la deja vacía.

Responde para continuar

¿Cómo se llama el accesorio que reemplaza la decisión de permiso en las pruebas del controlador?

Ver pista de ayuda

Está en conftest.py y usa monkeypatch.

Lee informe-mutantes.txt junto con politicas.py. Cada mutante dice la línea y el cambio. La plataforma es multiinquilino: la administración de un conjunto no debe ver nada de otro. Busca el mutante sobreviviente que quita justo esa frontera en el estado de cuenta, y comprueba en test_politicas.py que ninguna prueba usa una administración de otro conjunto.

Responde para continuar

¿Qué mutante sobreviviente dejaría a la administración de otro conjunto ver el estado de cuenta sin que ninguna prueba lo note? Escribe su identificador.

Ver pista de ayuda

Busca el cambio que reemplaza la comparación de conjunto por True.

No todos los sobrevivientes pesan igual. Unos abren un permiso que hoy se niega (quitar una condición siempre abre). Otros cierran uno que hoy se concede: es un fallo funcional, también hay que probarlo, pero no deja entrar a nadie. Y hay mutantes equivalentes, que cambian el código sin cambiar ninguna respuesta posible y no se pueden matar con ninguna prueba. Lee las notas del equipo para saber qué pasa en el límite del gasto.

Responde para continuar

¿Cuántos mutantes sobrevivientes abren un permiso que la política niega hoy?

Ver pista de ayuda

Descarta el que cambia el límite del gasto (cierra) y el que solo cambia el orden de las condiciones (equivalente).

Cada sobreviviente se mata con un caso concreto. Para el de la verificación reciente del segundo factor, piensa qué valores tiene que tener la persona de la prueba para que la única diferencia entre permitir y negar sea esa condición.

Responde para continuar

¿Qué prueba mata al mutante que quita la verificación reciente al cambiar la cuenta de recaudo?

Ver pista de ayuda

El caso tiene que cumplir todas las condiciones menos una.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad