74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const registerUsersRoutes = require('../src/web/routes/admin/users');
|
|
|
|
test('user duplicate route pre-fills the add form', async () => {
|
|
const handlers = {};
|
|
const app = {
|
|
get(path, ...routeHandlers) {
|
|
handlers[path] = routeHandlers;
|
|
},
|
|
post() {}
|
|
};
|
|
|
|
const deps = {
|
|
pool: {
|
|
async query() {
|
|
return [[]];
|
|
}
|
|
},
|
|
common: {},
|
|
pages: {
|
|
renderUsersAddPage(message, currentUser, roles, formValues, messageVariant) {
|
|
return JSON.stringify({ message, currentUser, roles, formValues, messageVariant });
|
|
}
|
|
},
|
|
formatDashboardDate: () => '',
|
|
getAuditUserId: () => 1,
|
|
hashPassword: () => ({ hash: '', salt: '', iterations: 1 }),
|
|
validatePasswordStrength: () => '',
|
|
readArrayField: () => [],
|
|
rbacData: {
|
|
fetchRoles: async () => ([{ id: 2, name: 'Editors' }]),
|
|
fetchUsersWithRolesPage: async () => ({ users: [], totalItems: 0, currentPage: 1 }),
|
|
fetchUserWithRoles: async () => ({ id: 7, name: 'Alice', username: 'alice', roleIds: [2] }),
|
|
syncUserRoles: async () => {}
|
|
},
|
|
requirePermission() {
|
|
return function (_req, _res, next) {
|
|
next();
|
|
};
|
|
}
|
|
};
|
|
|
|
registerUsersRoutes(app, deps);
|
|
|
|
const routeHandlers = handlers['/settings/users/:id/duplicate'];
|
|
assert.equal(Array.isArray(routeHandlers), true);
|
|
|
|
const req = {
|
|
params: { id: '7' },
|
|
currentUser: { id: 1 }
|
|
};
|
|
const res = {
|
|
send(value) {
|
|
this.body = value;
|
|
},
|
|
redirect(url) {
|
|
this.redirectedTo = url;
|
|
},
|
|
status(code) {
|
|
this.statusCode = code;
|
|
return this;
|
|
}
|
|
};
|
|
|
|
await routeHandlers[2](req, res, () => {});
|
|
|
|
const payload = JSON.parse(res.body);
|
|
assert.equal(payload.formValues.name, 'Copy of Alice');
|
|
assert.equal(Object.prototype.hasOwnProperty.call(payload.formValues, 'username'), false);
|
|
assert.equal(payload.roles.length, 1);
|
|
assert.equal(payload.roles[0].isSelected, true);
|
|
}); |