Release v2.15.2
This commit is contained in:
1 parent
ddcc665f81
commit
7295f83f04
43 files changed
+2526
-104
No files matched your search
@@ -5,6 +5,55 @@ require('../src/common');
|
||||
|
||||
const registerManageRoutes = require('../src/web/routes/admin/manage');
|
||||
|
||||
test('force-deleting a screen requires a verified empty live-connection list', async () => {
|
||||
const handlers = {};
|
||||
const queries = [];
|
||||
let connectionResponse = { connections: [{ id: 'active-1' }] };
|
||||
const app = {
|
||||
post(path, ...routeHandlers) { handlers[path] = routeHandlers; },
|
||||
get() {}
|
||||
};
|
||||
|
||||
registerManageRoutes(app, {
|
||||
pool: {
|
||||
async query(sql, params) {
|
||||
queries.push({ sql, params });
|
||||
return [[]];
|
||||
}
|
||||
},
|
||||
common: { async fetchScreenById() { return { id: 7, name: 'Demo', slug: 'demo' }; } },
|
||||
pages: {},
|
||||
getScreenDeleteBlockMessage: async () => 'This screen is still linked to onboarding devices.',
|
||||
getScreenConnections: async () => connectionResponse,
|
||||
requirePermission() { return function (_req, _res, next) { next(); }; }
|
||||
});
|
||||
|
||||
const handler = handlers['/screens/:id/delete'][1];
|
||||
const createResponse = function () {
|
||||
return {
|
||||
redirect(url) { this.redirectedTo = url; },
|
||||
status(code) { this.statusCode = code; return this; },
|
||||
send(body) { this.body = body; }
|
||||
};
|
||||
};
|
||||
|
||||
const activeResponse = createResponse();
|
||||
await handler({ params: { id: '7' }, body: { force_delete: '1' } }, activeResponse, () => {});
|
||||
assert.match(decodeURIComponent(activeResponse.redirectedTo), /still in use by connected players/);
|
||||
assert.equal(queries.some(function (query) { return /DELETE FROM d_screens/.test(query.sql); }), false);
|
||||
|
||||
connectionResponse = { connections: [], degraded: true };
|
||||
const unverifiableResponse = createResponse();
|
||||
await handler({ params: { id: '7' }, body: { force_delete: '1' } }, unverifiableResponse, () => {});
|
||||
assert.match(decodeURIComponent(unverifiableResponse.redirectedTo), /Unable to verify/);
|
||||
assert.equal(queries.some(function (query) { return /DELETE FROM d_screens/.test(query.sql); }), false);
|
||||
|
||||
connectionResponse = { connections: [] };
|
||||
const idleResponse = createResponse();
|
||||
await handler({ params: { id: '7' }, body: { force_delete: '1' } }, idleResponse, () => {});
|
||||
assert.equal(queries.some(function (query) { return /DELETE FROM d_screens/.test(query.sql); }), true);
|
||||
});
|
||||
|
||||
test('screen update keeps the existing slug on edit', async () => {
|
||||
const handlers = {};
|
||||
const app = {
|
||||
|
||||
Reference in new issue
Block a user