// #115 - E2E tests for GET /permissions import { assertEquals, assertExists } from "@std/assert"; import { makeEmployeeContext, makeGetRequest } from "../helpers/handler.ts"; import { seedPermissions, truncateAll } from "../helpers/db_integration.ts"; import { handler as permissionsHandler } from "$apps/admin/api/permissions.ts"; const PERMISSIONS = [ { id: "note_read", nom: "Consulter les notes des étudiants" }, { id: "note_write", nom: "Saisir et modifier les notes" }, { id: "student_read", nom: "Consulter la liste des étudiants" }, { id: "student_write", nom: "Gérer les étudiants (ajout, modification, suppression)", }, { id: "module_read", nom: "Consulter les modules et enseignements" }, { id: "module_write", nom: "Gérer les modules et enseignements" }, { id: "user_read", nom: "Consulter les utilisateurs et leurs rôles" }, { id: "user_write", nom: "Gérer les utilisateurs et leurs rôles" }, { id: "role_write", nom: "Gérer les rôles et leurs permissions" }, ]; Deno.test({ name: "e2e permissions: GET /permissions returns all 9 permissions", async fn() { await truncateAll(); await seedPermissions(PERMISSIONS); const res = await permissionsHandler.GET!( makeGetRequest("/permissions"), makeEmployeeContext(), ); assertEquals(res.status, 200); const text = await res.text(); const data = JSON.parse(text); assertEquals(data.length, 9); assertExists(data.find((p: { id: string }) => p.id === "student_read")); assertExists(data.find((p: { id: string }) => p.id === "role_write")); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "e2e permissions: GET /permissions - all entries have id and nom", async fn() { await truncateAll(); await seedPermissions(PERMISSIONS); const res = await permissionsHandler.GET!( makeGetRequest("/permissions"), makeEmployeeContext(), ); const data: { id: string; nom: string }[] = await res.json(); for (const p of data) { assertEquals(typeof p.id, "string"); assertEquals(typeof p.nom, "string"); } }, sanitizeResources: false, sanitizeOps: false, });