{
  "executed_at_utc": "2026-10-31T16:32:15Z",
  "finished_at_utc": "2026-10-31T16:32:17Z",
  "postgresql_version": "17.11",
  "server_version_num": 170011,
  "architecture": "aarch64",
  "docker_server_version": "29.7.2",
  "image_tag": "postgres:17-alpine",
  "image_id": "sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24",
  "test_count": 29,
  "results": [
    {
      "test": "roles_non_privilegies",
      "status": "pass",
      "role": "postgres",
      "expected": "equipe_de:false:false:false,equipe_fr:false:false:false",
      "actual": "equipe_de:false:false:false,equipe_fr:false:false:false"
    },
    {
      "test": "proprietaire_distinct",
      "status": "pass",
      "role": "postgres",
      "expected": "proprietaire",
      "actual": "proprietaire"
    },
    {
      "test": "memes_droits_sql",
      "status": "pass",
      "role": "postgres",
      "expected": "true",
      "actual": "true"
    },
    {
      "test": "sans_rls_fr",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        101,
        102,
        201,
        202
      ],
      "actual_ids": [
        101,
        102,
        201,
        202
      ]
    },
    {
      "test": "sans_rls_de",
      "status": "pass",
      "role": "equipe_de",
      "expected_ids": [
        101,
        102,
        201,
        202
      ],
      "actual_ids": [
        101,
        102,
        201,
        202
      ]
    },
    {
      "test": "sans_policy_fr",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [],
      "actual_ids": []
    },
    {
      "test": "lecture_fr",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        101,
        102
      ],
      "actual_ids": [
        101,
        102
      ]
    },
    {
      "test": "lecture_fr_id_de",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [],
      "actual_ids": []
    },
    {
      "test": "parametre_modifiable",
      "status": "pass",
      "role": "equipe_fr",
      "expected": "DE",
      "actual": "DE"
    },
    {
      "test": "parametre_sans_effet_sur_current_user",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        101,
        102
      ],
      "actual_ids": [
        101,
        102
      ]
    },
    {
      "test": "lecture_de",
      "status": "pass",
      "role": "equipe_de",
      "expected_ids": [
        201,
        202
      ],
      "actual_ids": [
        201,
        202
      ]
    },
    {
      "test": "lecture_de_id_fr",
      "status": "pass",
      "role": "equipe_de",
      "expected_ids": [],
      "actual_ids": []
    },
    {
      "test": "insert_fr_autorise",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        103
      ],
      "actual_ids": [
        103
      ]
    },
    {
      "test": "lecture_apres_insert_fr",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        101,
        102,
        103
      ],
      "actual_ids": [
        101,
        102,
        103
      ]
    },
    {
      "test": "insert_de_refuse",
      "status": "pass",
      "role": "equipe_fr",
      "expected_sqlstate": "42501",
      "actual_sqlstate": "42501",
      "message": "new row violates row-level security policy for table \"commandes\""
    },
    {
      "test": "update_fr_vers_de_refuse",
      "status": "pass",
      "role": "equipe_fr",
      "expected_sqlstate": "42501",
      "actual_sqlstate": "42501",
      "message": "new row violates row-level security policy for table \"commandes\""
    },
    {
      "test": "update_ligne_cachee",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [],
      "actual_ids": []
    },
    {
      "test": "update_fr_autorise",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        101
      ],
      "actual_ids": [
        101
      ]
    },
    {
      "test": "etat_fr_apres_update_refuse",
      "status": "pass",
      "role": "equipe_fr",
      "expected": "FR:Modification autorisée",
      "actual": "FR:Modification autorisée"
    },
    {
      "test": "insert_refuse_absent",
      "status": "pass",
      "role": "postgres",
      "expected_ids": [],
      "actual_ids": []
    },
    {
      "test": "ligne_de_inchangee",
      "status": "pass",
      "role": "postgres",
      "expected": "Commande fictive Allemagne A",
      "actual": "Commande fictive Allemagne A"
    },
    {
      "test": "grant_absent",
      "status": "pass",
      "role": "equipe_fr",
      "expected_sqlstate": "42501",
      "actual_sqlstate": "42501",
      "message": "permission denied for table commandes"
    },
    {
      "test": "permissive_or",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        101,
        102,
        201
      ],
      "actual_ids": [
        101,
        102,
        201
      ]
    },
    {
      "test": "restrictive_and",
      "status": "pass",
      "role": "equipe_fr",
      "expected_ids": [
        101,
        201
      ],
      "actual_ids": [
        101,
        201
      ]
    },
    {
      "test": "proprietaire_sans_force",
      "status": "pass",
      "role": "proprietaire",
      "expected_ids": [
        101,
        102,
        201,
        202
      ],
      "actual_ids": [
        101,
        102,
        201,
        202
      ]
    },
    {
      "test": "proprietaire_avec_force",
      "status": "pass",
      "role": "proprietaire",
      "expected_ids": [],
      "actual_ids": []
    },
    {
      "test": "superuser_avec_force",
      "status": "pass",
      "role": "postgres",
      "expected_ids": [
        101,
        102,
        201,
        202
      ],
      "actual_ids": [
        101,
        102,
        201,
        202
      ]
    },
    {
      "test": "bypassrls_avec_force",
      "status": "pass",
      "role": "audit_bypass",
      "expected_ids": [
        101,
        102,
        201,
        202
      ],
      "actual_ids": [
        101,
        102,
        201,
        202
      ]
    },
    {
      "test": "donnees_finales",
      "status": "pass",
      "role": "postgres",
      "expected_ids": [
        101,
        102,
        201,
        202
      ],
      "actual_ids": [
        101,
        102,
        201,
        202
      ]
    }
  ],
  "limitations": [
    "Jeu de données entièrement fictif, quatre lignes initiales.",
    "Le banc d’essai s’authentifie comme postgres et change le rôle actif avec SET ROLE.",
    "Aucun test d’authentification, de pool de connexions, d’injection SQL, de vue ou de performance."
  ]
}
