Voeg thematische kleurplaten en creatieve niveaus toe (v0.4.65-beta) #3
3 changed files with 39 additions and 2 deletions
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
0.4.07-beta
|
||||
0.4.08-beta
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"use strict";
|
||||
/* version — shown until /api/version resolves (or if the fetch fails, e.g. offline).
|
||||
Kept in sync by hand with the VERSION file at the repo root on every release. */
|
||||
const VERSION = "0.4.07-beta";
|
||||
const VERSION = "0.4.08-beta";
|
||||
(function(){
|
||||
const tag = document.getElementById("verTag");
|
||||
tag.textContent = "v"+VERSION;
|
||||
|
|
|
|||
|
|
@ -143,6 +143,43 @@ test('een bestaande groepsleiding of schoolbeheerder kan via rolwijziging nooit
|
|||
await app3.close();
|
||||
});
|
||||
|
||||
test('groepsleiding mag zelf geen rol wijzigen en geen school koppelen/losmaken', async () => {
|
||||
// rolwijziging: users.role.change is alleen 'super'. Een groepsleiding die
|
||||
// dit probeert op een niet-leerling-account wordt zelfs al eerder
|
||||
// geweigerd (teacherOnly-check: groepsleiding beheert uitsluitend
|
||||
// leerlingen), dus 403 - niet stilzwijgend genegeerd.
|
||||
const teacherActor = { id: 5, username: 'juf', role: 'teacher', school_id: 2, class_id: null, data: {}, data_rev: 0 };
|
||||
const { app, calls } = await makeApp(teacherActor, { id: 7, role: 'teacher', school_id: 2 });
|
||||
const res = await app.inject({ method: 'PATCH', url: '/api/admin/users/7', cookies,
|
||||
payload: { role: 'admin' } });
|
||||
assert.equal(res.statusCode, 403, res.body);
|
||||
assert.ok(!calls.some((c) => c.sql.startsWith('UPDATE users SET role')),
|
||||
'groepsleiding mag geen rol van een ander account wijzigen');
|
||||
await app.close();
|
||||
// schoolId koppelen/losmaken: alleen systeemmanager (req.user.allRoles.includes('super')).
|
||||
// Op een eigen leerling (waar een groepsleiding verder wél bij mag) blijft
|
||||
// dit alsnog verboden, dus hier specifiek getest met een leerling-doel.
|
||||
const { app: app2, calls: calls2 } = await makeApp(teacherActor, { id: 7, role: 'pupil', school_id: 2, class_id: 40 });
|
||||
const res2 = await app2.inject({ method: 'PATCH', url: '/api/admin/users/7', cookies,
|
||||
payload: { schoolId: null } });
|
||||
assert.ok(!calls2.some((c) => c.sql.startsWith('UPDATE users SET school_id')),
|
||||
'groepsleiding mag een account niet van school koppelen/losmaken');
|
||||
await app2.close();
|
||||
// klassen aanmaken/koppelen: classes.manage is alleen super/admin
|
||||
const { app: app3, calls: calls3 } = await makeApp(teacherActor, null);
|
||||
const res3 = await app3.inject({ method: 'POST', url: '/api/admin/classes', cookies,
|
||||
payload: { name: 'Nieuwe klas' } });
|
||||
assert.equal(res3.statusCode, 403, res3.body);
|
||||
assert.ok(!calls3.some((c) => c.sql.startsWith('INSERT INTO classes')));
|
||||
await app3.close();
|
||||
// scholen beheren: schools.manage is alleen super
|
||||
const { app: app4 } = await makeApp(teacherActor);
|
||||
const res4 = await app4.inject({ method: 'PATCH', url: '/api/admin/schools/2', cookies,
|
||||
payload: { name: 'Andere naam' } });
|
||||
assert.equal(res4.statusCode, 403, res4.body);
|
||||
await app4.close();
|
||||
});
|
||||
|
||||
test('systeemmanager koppelt een gebruiker aan een school en maakt hem weer los', async () => {
|
||||
// koppelen: school bestaat -> update + klas-/toewijzing-opruiming
|
||||
const { app, calls } = await makeApp(superUser, { id: 7, role: 'teacher', school_id: null, username: 'juf' });
|
||||
|
|
|
|||
Loading…
Reference in a new issue