mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
test: add tests for admin privileges
This commit is contained in:
@@ -719,4 +719,42 @@ describe('Admin Controllers', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('admin page privileges', () => {
|
||||
let userJar;
|
||||
let uid;
|
||||
const privileges = require('../src/privileges');
|
||||
before((done) => {
|
||||
user.create({ username: 'regularjoe', password: 'barbar' }, (err, _uid) => {
|
||||
assert.ifError(err);
|
||||
uid = _uid;
|
||||
helpers.loginUser('regularjoe', 'barbar', (err, _jar) => {
|
||||
assert.ifError(err);
|
||||
userJar = _jar;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should allow normal user access to admin pages', async () => {
|
||||
function makeRequest(url) {
|
||||
return new Promise((resolve, reject) => {
|
||||
request(url, { jar: userJar, json: true }, (err, res, body) => {
|
||||
if (err) reject(err);
|
||||
else resolve(res);
|
||||
});
|
||||
});
|
||||
}
|
||||
for (const route of Object.keys(privileges.admin.routeMap)) {
|
||||
/* eslint-disable no-await-in-loop */
|
||||
await privileges.admin.rescind([privileges.admin.routeMap[route]], uid);
|
||||
let res = await makeRequest(`${nconf.get('url')}/api/admin/${route}`);
|
||||
assert.strictEqual(res.statusCode, 403);
|
||||
|
||||
await privileges.admin.give([privileges.admin.routeMap[route]], uid);
|
||||
res = await makeRequest(`${nconf.get('url')}/api/admin/${route}`);
|
||||
assert.strictEqual(res.statusCode, 200);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user