feat: add role_write permission and update e2e tests
Add role_write permission to permissions table and update migrations. Update e2e tests to use DB integration and seed permissions. Add seedPermissions helper.
This commit is contained in:
@@ -7,4 +7,5 @@ INSERT INTO "permissions" ("id", "nom") VALUES
|
||||
('module_read', 'Consulter les modules et enseignements'),
|
||||
('module_write', 'Gérer les modules et enseignements'),
|
||||
('user_read', 'Consulter les utilisateurs et leurs rôles'),
|
||||
('user_write', 'Gérer les utilisateurs et leurs rôles');
|
||||
('user_write', 'Gérer les utilisateurs et leurs rôles'),
|
||||
('role_write', 'Gérer les rôles et leurs permissions');
|
||||
|
||||
@@ -9,5 +9,6 @@ INSERT INTO "permissions" ("id", "nom") VALUES
|
||||
('module_read', 'Consulter les modules et enseignements'),
|
||||
('module_write', 'Gérer les modules et enseignements'),
|
||||
('user_read', 'Consulter les utilisateurs et leurs rôles'),
|
||||
('user_write', 'Gérer les utilisateurs et leurs rôles')
|
||||
('user_write', 'Gérer les utilisateurs et leurs rôles'),
|
||||
('role_write', 'Gérer les rôles et leurs permissions')
|
||||
ON CONFLICT ("id") DO UPDATE SET "nom" = EXCLUDED."nom";
|
||||
|
||||
@@ -1,24 +1,40 @@
|
||||
// #115 - E2E tests for GET /permissions
|
||||
// Handler statique (pas de DB), test direct du handler
|
||||
|
||||
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",
|
||||
fn() {
|
||||
const res = permissionsHandler.GET!(
|
||||
async fn() {
|
||||
await truncateAll();
|
||||
await seedPermissions(PERMISSIONS);
|
||||
const res = await permissionsHandler.GET!(
|
||||
makeGetRequest("/permissions"),
|
||||
makeEmployeeContext(),
|
||||
);
|
||||
assertEquals(res.status, 200);
|
||||
return res.text().then((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"));
|
||||
});
|
||||
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,
|
||||
@@ -27,7 +43,9 @@ Deno.test({
|
||||
Deno.test({
|
||||
name: "e2e permissions: GET /permissions - all entries have id and nom",
|
||||
async fn() {
|
||||
const res = permissionsHandler.GET!(
|
||||
await truncateAll();
|
||||
await seedPermissions(PERMISSIONS);
|
||||
const res = await permissionsHandler.GET!(
|
||||
makeGetRequest("/permissions"),
|
||||
makeEmployeeContext(),
|
||||
);
|
||||
|
||||
@@ -111,3 +111,9 @@ export async function seedAjustements(
|
||||
): Promise<typeof schema.ajustements.$inferSelect[]> {
|
||||
return await testDb.insert(schema.ajustements).values(rows).returning();
|
||||
}
|
||||
|
||||
export async function seedPermissions(
|
||||
rows: { id: string; nom: string }[],
|
||||
): Promise<typeof schema.permissions.$inferSelect[]> {
|
||||
return await testDb.insert(schema.permissions).values(rows).returning();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user