🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónPruebas unitarias de políticas
5 tareas · 40 min · Principiante
Una política con pruebas en verde parece protegida. A veces no lo está: una prueba puede pasar sin comprobar nada, una regla puede no tener ninguna y un cambio pequeño puede romper la política sin que ninguna prueba lo note. En Bahareque Constructora hay cuatro reglas sobre pods, cinco pruebas que pasan todas y un informe de mutantes, una técnica que edita la política a propósito para ver si alguna prueba protesta. Lees la política, sus pruebas y ese informe para decidir qué falta antes de confiar en el verde.
Objetivo de la sala
Una política con pruebas en verde parece protegida. A veces no lo está: una prueba puede pasar sin comprobar nada, una regla puede no tener ninguna y un cambio pequeño puede romper la política sin que ninguna prueba lo note. En Bahareque Constructora hay cuatro reglas sobre pods, cinco pruebas que pasan todas y un informe de mutantes, una técnica que edita la política a propósito para ver si alguna prueba protesta. Lees la política, sus pruebas y ese informe para decidir qué falta antes de confiar en el verde.Las pruebas de Rego son reglas cuyo nombre empieza por test_. Cada una sustituye la entrada con la palabra clave with (regla with input as {...}) y comprueba el resultado. Si la prueba es indefinida o da algo distinto de verdadero, cuenta como fallo. Conftest las ejecuta con conftest verify, y OPA con opa test.
Una prueba útil responde una pregunta: «con esta entrada, ¿esta regla hace lo que se espera?». Eso exige que la entrada sea realista: con el tipo de recurso correcto y los campos que la regla mira. Una prueba cuya entrada nunca podría activar la regla pasa siempre, y pasar siempre no es lo mismo que proteger.
Responde para continuar
Cinco pruebas de una política pasan. ¿Qué conclusión se sostiene?
Ver pista de ayuda
Un verde dice que las pruebas pasan, no que sean las que hacían falta.
Una prueba de «permite» es la más fácil de escribir mal. Si la entrada no se parece a la que la regla evalúa, la regla no se activa, el resultado queda vacío, y count(...) == 0 se cumple sin que la regla haya tenido oportunidad de equivocarse. La prueba pasa hoy y pasará también el día que alguien rompa la regla.
Lee el archivo de pruebas con cuidado: busca la entrada cuya forma no corresponde a lo que la regla espera.
Responde para continuar
Escribe el nombre de la prueba que pasa sin comprobar nada porque su entrada no activa la regla.
Ver pista de ayuda
Con la terminal, `cat politicas/ejecucion.rego` y `cat politicas/ejecucion_test.rego`. Compara el tipo de recurso que exige cada regla con el que trae cada prueba.
Una regla sin ninguna prueba puede romperse en silencio: la suite seguirá en verde porque nada la mira. Se encuentra cruzando dos listas, las reglas de la política y las reglas que alguna prueba invoca. La cobertura que informan algunas herramientas (OPA puede informar qué líneas se evaluaron) ayuda, pero aquí basta con leer.
Cruza las reglas del archivo de política con las pruebas del archivo de pruebas.
Responde para continuar
Escribe el nombre de la regla de la política que ninguna prueba invoca.
Ver pista de ayuda
Lista los nombres de regla de `ejecucion.rego` y marca cuáles aparecen en alguna línea `with input as` del archivo de pruebas.
La prueba de mutantes toma la política, le hace una edición pequeña (invertir una comparación, borrar una condición) y vuelve a correr las pruebas. Si alguna falla, el mutante «muere»: la suite habría detectado ese error. Si ninguna falla, sobrevive: la política cambió y nadie se enteró. Cada mutante vivo señala una prueba que falta o una prueba que no comprueba lo que dice.
Lee el informe del script del equipo.
Responde para continuar
¿Cuántos mutantes sobreviven en el informe?
Ver pista de ayuda
Cuenta las filas cuyo resultado dice SOBREVIVE.
Un mutante vivo no se arregla en el informe sino en las pruebas. Para cada uno se pregunta: ¿qué entrada habría hecho fallar la suite con este cambio? Esa entrada es la prueba que falta. Si dos mutantes sobreviven por el mismo motivo (una entrada de un tipo de recurso que no activa la regla), corregir esa entrada puede matar a los dos.
Responde para continuar
Sobrevive el mutante que elimina la condición `runAsUser == 0` de `deny_raiz`. ¿Qué prueba lo mata?
Ver pista de ayuda
El mutante hace que la regla deniegue siempre. ¿Qué entrada debería salir sin denegación?
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.