🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónPruebas 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.
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.
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
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.