40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const { pruneStaleOnboardingDevices } = require('../src/db/common');
|
|
|
|
test('prunes old unbound onboarding devices without deleting completed bindings', async () => {
|
|
let queryText = '';
|
|
const pool = {
|
|
async query(sql) {
|
|
queryText = sql;
|
|
return [[]];
|
|
}
|
|
};
|
|
|
|
await pruneStaleOnboardingDevices(pool);
|
|
|
|
assert.match(queryText, /screen_id IS NULL/);
|
|
assert.match(queryText, /modified_at < \(CURRENT_TIMESTAMP - INTERVAL 15 MINUTE\)/);
|
|
assert.match(queryText, /last_seen_at < \(CURRENT_TIMESTAMP - INTERVAL 24 HOUR\)/);
|
|
assert.doesNotMatch(queryText, /d_players\.identifier = d_onboarding_devices\.device_id/);
|
|
});
|
|
|
|
test('updates an onboarding device last-seen timestamp by device id', async () => {
|
|
let queryText = '';
|
|
let queryParams = null;
|
|
const pool = {
|
|
async query(sql, params) {
|
|
queryText = sql;
|
|
queryParams = params;
|
|
return [[]];
|
|
}
|
|
};
|
|
|
|
const { touchOnboardingDeviceLastSeen } = require('../src/db/common');
|
|
await touchOnboardingDeviceLastSeen(pool, ['device-123', 'client-123']);
|
|
|
|
assert.match(queryText, /SET last_seen_at = CURRENT_TIMESTAMP/);
|
|
assert.match(queryText, /WHERE device_id IN \(\?, \?\)/);
|
|
assert.deepEqual(queryParams, ['device-123', 'client-123']);
|
|
}); |