Files
pulse-signage/test/admin-users-edit-save-new-route.test.js
T
lzstealth 203d0bfc01
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m49s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 32s
Release 2.8.0
2026-08-16 17:15:31 +01:00

95 lines
2.5 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const registerUsersRoutes = require('../src/web/routes/admin/users');
test('user edit save and new goes to the blank create page', async () => {
const handlers = {};
const app = {
get() {},
post(path, ...routeHandlers) {
handlers[path] = routeHandlers;
}
};
const deps = {
pool: {
async query(sql) {
if (sql.includes('SELECT id FROM a_users WHERE id = ? LIMIT 1')) {
return [[{ id: 7 }]];
}
if (sql.includes('SELECT id FROM a_users WHERE username = ? AND id <> ? LIMIT 1')) {
return [[]];
}
return [[]];
},
async getConnection() {
return {
async beginTransaction() {},
async query(sql) {
if (sql.includes('UPDATE a_users SET name = ?, username = ?, account_locked = ?, modified_by = ? WHERE id = ?')) {
return [{ affectedRows: 1 }];
}
return [[]];
},
async commit() {},
async rollback() {},
release() {}
};
}
},
common: {
validateMaxLength(value) {
return String(value || '').trim();
},
fetchDuplicateName: async () => null
},
pages: {},
formatDashboardDate: () => '',
getAuditUserId: () => 1,
hashPassword: () => ({ hash: 'hash', salt: 'salt', iterations: 1 }),
validatePasswordStrength: () => '',
readArrayField: () => [],
rbacData: {
fetchRoles: async () => ([]),
fetchUsersWithRolesPage: async () => ({ users: [], totalItems: 0, currentPage: 1 }),
fetchUserWithRoles: async () => ({ id: 7, name: 'User', username: 'user', roleIds: [], inUse: false }),
syncUserRoles: async () => {}
},
requirePermission() {
return function (_req, _res, next) {
next();
};
}
};
registerUsersRoutes(app, deps);
const routeHandlers = handlers['/settings/users/:id/username'];
assert.equal(Array.isArray(routeHandlers), true);
const req = {
params: { id: '7' },
body: {
name: 'User',
username: 'user',
save_action: 'new'
},
currentUser: { id: 1 }
};
const res = {
redirect(url) {
this.redirectedTo = url;
},
status() {
return this;
},
send() {
return this;
}
};
await routeHandlers[1](req, res, () => {});
assert.equal(res.redirectedTo, '/settings/users/new?message=User%20updated.');
});