feat(access): Фаза 1b — управление доступом к симуляциям в админке
Бэкенд /api/access обобщён на тип 'sim': catalog отдаёт симуляции (lab_sims), summary/matrix/class — карты по всем типам. Админ-секция «Доступ» теперь показывает «Симуляции» во всех трёх режимах (по контенту / по классу / матрица) + поиск; helpers (bucket/keyName/itemsOf) обобщены через карты типов (CONTENT_TYPES=textbook,exam,sim; course зарезервирован). Теперь админ/учитель могут открывать/закрывать конкретные симуляции классам и ученикам — закрыт UX- разрыв из 1a (новые классы без UI-управления). Тест: каталог включает sims; 210 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -110,6 +110,12 @@ describe('contentAccess', () => {
|
||||
assert.equal(r.status, 403);
|
||||
});
|
||||
|
||||
it('GET /api/access/catalog включает симуляции', async () => {
|
||||
const r = await inject('GET', '/api/access/catalog', null, teacher.token);
|
||||
assert.equal(r.status, 200);
|
||||
assert.ok(Array.isArray(r.body.sims) && r.body.sims.length >= 1, 'каталог содержит симуляции');
|
||||
});
|
||||
|
||||
it('DELETE /api/classes/:id чистит правила класса (через purgeAccessFor)', async () => {
|
||||
setRule('class', classId, 1);
|
||||
const del = await inject('DELETE', `/api/classes/${classId}`, null, teacher.token);
|
||||
|
||||
Reference in New Issue
Block a user