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_read', 'Consulter les modules et enseignements'),
|
||||||
('module_write', 'Gérer les modules et enseignements'),
|
('module_write', 'Gérer les modules et enseignements'),
|
||||||
('user_read', 'Consulter les utilisateurs et leurs rôles'),
|
('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_read', 'Consulter les modules et enseignements'),
|
||||||
('module_write', 'Gérer les modules et enseignements'),
|
('module_write', 'Gérer les modules et enseignements'),
|
||||||
('user_read', 'Consulter les utilisateurs et leurs rôles'),
|
('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";
|
ON CONFLICT ("id") DO UPDATE SET "nom" = EXCLUDED."nom";
|
||||||
|
|||||||
@@ -1,24 +1,40 @@
|
|||||||
// #115 - E2E tests for GET /permissions
|
// #115 - E2E tests for GET /permissions
|
||||||
// Handler statique (pas de DB), test direct du handler
|
|
||||||
|
|
||||||
import { assertEquals, assertExists } from "@std/assert";
|
import { assertEquals, assertExists } from "@std/assert";
|
||||||
import { makeEmployeeContext, makeGetRequest } from "../helpers/handler.ts";
|
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";
|
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({
|
Deno.test({
|
||||||
name: "e2e permissions: GET /permissions returns all 9 permissions",
|
name: "e2e permissions: GET /permissions returns all 9 permissions",
|
||||||
fn() {
|
async fn() {
|
||||||
const res = permissionsHandler.GET!(
|
await truncateAll();
|
||||||
|
await seedPermissions(PERMISSIONS);
|
||||||
|
const res = await permissionsHandler.GET!(
|
||||||
makeGetRequest("/permissions"),
|
makeGetRequest("/permissions"),
|
||||||
makeEmployeeContext(),
|
makeEmployeeContext(),
|
||||||
);
|
);
|
||||||
assertEquals(res.status, 200);
|
assertEquals(res.status, 200);
|
||||||
return res.text().then((text) => {
|
const text = await res.text();
|
||||||
const data = JSON.parse(text);
|
const data = JSON.parse(text);
|
||||||
assertEquals(data.length, 9);
|
assertEquals(data.length, 9);
|
||||||
assertExists(data.find((p: { id: string }) => p.id === "student_read"));
|
assertExists(data.find((p: { id: string }) => p.id === "student_read"));
|
||||||
assertExists(data.find((p: { id: string }) => p.id === "role_write"));
|
assertExists(data.find((p: { id: string }) => p.id === "role_write"));
|
||||||
});
|
|
||||||
},
|
},
|
||||||
sanitizeResources: false,
|
sanitizeResources: false,
|
||||||
sanitizeOps: false,
|
sanitizeOps: false,
|
||||||
@@ -27,7 +43,9 @@ Deno.test({
|
|||||||
Deno.test({
|
Deno.test({
|
||||||
name: "e2e permissions: GET /permissions - all entries have id and nom",
|
name: "e2e permissions: GET /permissions - all entries have id and nom",
|
||||||
async fn() {
|
async fn() {
|
||||||
const res = permissionsHandler.GET!(
|
await truncateAll();
|
||||||
|
await seedPermissions(PERMISSIONS);
|
||||||
|
const res = await permissionsHandler.GET!(
|
||||||
makeGetRequest("/permissions"),
|
makeGetRequest("/permissions"),
|
||||||
makeEmployeeContext(),
|
makeEmployeeContext(),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -111,3 +111,9 @@ export async function seedAjustements(
|
|||||||
): Promise<typeof schema.ajustements.$inferSelect[]> {
|
): Promise<typeof schema.ajustements.$inferSelect[]> {
|
||||||
return await testDb.insert(schema.ajustements).values(rows).returning();
|
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