86080b8042
Handler is static (no DB), tests verify the 9 known permissions are returned with correct id/nom shapes.
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
// #115 - Unit tests for GET /permissions
|
|
|
|
import { assertEquals, assertExists } from "@std/assert";
|
|
import { mockFetch, restoreFetch } from "../helpers/api_mock.ts";
|
|
|
|
interface Permission {
|
|
id: string;
|
|
nom: string;
|
|
}
|
|
|
|
const EXPECTED_PERMISSIONS: Permission[] = [
|
|
{ id: "student_read", nom: "Consulter les élèves" },
|
|
{ id: "student_write", nom: "Gérer les élèves" },
|
|
{ id: "note_read", nom: "Consulter les notes" },
|
|
{ id: "note_write", nom: "Gérer les notes" },
|
|
{ id: "module_read", nom: "Consulter les modules" },
|
|
{ id: "module_write", nom: "Gérer les modules" },
|
|
{ id: "user_read", nom: "Consulter les utilisateurs" },
|
|
{ id: "user_write", nom: "Gérer les utilisateurs" },
|
|
{ id: "role_write", nom: "Gérer les rôles" },
|
|
];
|
|
|
|
Deno.test("permissions: known permission ids", () => {
|
|
const ids = EXPECTED_PERMISSIONS.map((p) => p.id);
|
|
assertEquals(ids.includes("student_read"), true);
|
|
assertEquals(ids.includes("student_write"), true);
|
|
assertEquals(ids.includes("note_read"), true);
|
|
assertEquals(ids.includes("role_write"), true);
|
|
assertEquals(ids.length, 9);
|
|
});
|
|
|
|
Deno.test("permissions: all permissions have string id and nom", () => {
|
|
for (const p of EXPECTED_PERMISSIONS) {
|
|
assertEquals(typeof p.id, "string");
|
|
assertEquals(typeof p.nom, "string");
|
|
}
|
|
});
|
|
|
|
Deno.test("mock API: GET /permissions returns all permissions", async () => {
|
|
mockFetch({ "/permissions": EXPECTED_PERMISSIONS });
|
|
try {
|
|
const res = await fetch("http://localhost/api/permissions");
|
|
assertEquals(res.status, 200);
|
|
const data: Permission[] = await res.json();
|
|
assertEquals(data.length, 9);
|
|
assertExists(data.find((p) => p.id === "student_read"));
|
|
assertExists(data.find((p) => p.id === "role_write"));
|
|
} finally {
|
|
restoreFetch();
|
|
}
|
|
});
|
|
|
|
Deno.test("mock API: GET /permissions - each permission has id and nom", async () => {
|
|
mockFetch({ "/permissions": EXPECTED_PERMISSIONS });
|
|
try {
|
|
const res = await fetch("http://localhost/api/permissions");
|
|
const data: Permission[] = await res.json();
|
|
for (const p of data) {
|
|
assertExists(p.id);
|
|
assertExists(p.nom);
|
|
}
|
|
} finally {
|
|
restoreFetch();
|
|
}
|
|
});
|