Voeg 28 herkenbare kleurplaten en creatieve niveaus toe (v0.4.66-beta) #4
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";
|
"use strict";
|
||||||
/* version — shown until /api/version resolves (or if the fetch fails, e.g. offline).
|
/* 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. */
|
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(){
|
(function(){
|
||||||
const tag = document.getElementById("verTag");
|
const tag = document.getElementById("verTag");
|
||||||
tag.textContent = "v"+VERSION;
|
tag.textContent = "v"+VERSION;
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,43 @@ test('een bestaande groepsleiding of schoolbeheerder kan via rolwijziging nooit
|
||||||
await app3.close();
|
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 () => {
|
test('systeemmanager koppelt een gebruiker aan een school en maakt hem weer los', async () => {
|
||||||
// koppelen: school bestaat -> update + klas-/toewijzing-opruiming
|
// koppelen: school bestaat -> update + klas-/toewijzing-opruiming
|
||||||
const { app, calls } = await makeApp(superUser, { id: 7, role: 'teacher', school_id: null, username: 'juf' });
|
const { app, calls } = await makeApp(superUser, { id: 7, role: 'teacher', school_id: null, username: 'juf' });
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue