mirror of
https://github.com/pavlobu/deskreen.git
synced 2025-05-18 08:20:10 -07:00
test for inactiveRooms function
This commit is contained in:
parent
7ec64ce846
commit
ae2b565f47
22
app/server/inactiveRooms.spec.ts
Normal file
22
app/server/inactiveRooms.spec.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import pollForInactiveRooms from './inactiveRooms';
|
||||
import getStore from './store';
|
||||
|
||||
const TEN_DAYS_PERIOD_IN_MILLISECONDS = 1000 * 60 * 60 * 24 * 10;
|
||||
describe('Inactive rooms auto removed from store', () => {
|
||||
it('should remove inactive rooms from store that are updatedAt about 10 days ago', async () => {
|
||||
const store = getStore();
|
||||
store.set(
|
||||
'rooms',
|
||||
'roomId1',
|
||||
JSON.stringify({
|
||||
updatedAt: Date.now() - TEN_DAYS_PERIOD_IN_MILLISECONDS,
|
||||
})
|
||||
);
|
||||
|
||||
pollForInactiveRooms();
|
||||
|
||||
const rooms = (await store.getAll('rooms')) || {};
|
||||
// log.info(`${Object.keys(rooms).length} rooms found`);
|
||||
expect(Object.keys(rooms).length).toBe(0);
|
||||
});
|
||||
});
|
@ -1,15 +1,9 @@
|
||||
/* eslint-disable no-console */
|
||||
import getStore from './store';
|
||||
import Logger from '../utils/logger';
|
||||
|
||||
const log = new Logger('app/server/inactive_rooms.ts');
|
||||
|
||||
export default async function pollForInactiveRooms() {
|
||||
const store = getStore();
|
||||
|
||||
log.info('Checking for inactive rooms...');
|
||||
const rooms = (await store.getAll('rooms')) || {};
|
||||
log.info(`${Object.keys(rooms).length} rooms found`);
|
||||
|
||||
Object.keys(rooms).forEach(async (roomId) => {
|
||||
const room = JSON.parse(rooms[roomId]);
|
||||
@ -18,9 +12,6 @@ export default async function pollForInactiveRooms() {
|
||||
timeSinceUpdatedInSeconds / 60 / 60 / 24
|
||||
);
|
||||
if (timeSinceUpdatedInDays > 7) {
|
||||
log.info(
|
||||
`Deleting roomId ${roomId} which hasn't been used in ${timeSinceUpdatedInDays} days`
|
||||
);
|
||||
await store.del('rooms', roomId);
|
||||
}
|
||||
});
|
@ -11,17 +11,13 @@ import koaSend from 'koa-send';
|
||||
import getPort from 'get-port';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
import Socket from './socket';
|
||||
import pollForInactiveRooms from './inactive_rooms';
|
||||
import pollForInactiveRooms from './inactiveRooms';
|
||||
import getStore from './store';
|
||||
|
||||
import Logger from '../utils/logger';
|
||||
|
||||
const log = new Logger('app/server/index.ts');
|
||||
|
||||
// const log = (...args) => {
|
||||
// logger.
|
||||
// };
|
||||
|
||||
let isDev;
|
||||
try {
|
||||
// eslint-disable-next-line global-require
|
||||
|
@ -1,5 +1,4 @@
|
||||
/* eslint-disable no-async-promise-executor */
|
||||
import regeneratorRuntime from 'regenerator-runtime';
|
||||
import _ from 'lodash';
|
||||
import Io from 'socket.io';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
|
@ -1,21 +1,19 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
/**
|
||||
* Memory store more for testing purpose than production use.
|
||||
*/
|
||||
|
||||
/*
|
||||
* got original code from darkwire.io
|
||||
* translated code to typescript for Deskreen
|
||||
* */
|
||||
|
||||
interface MemoryStoreParams {
|
||||
store: any;
|
||||
hasSocketAdapter: boolean;
|
||||
store: unknown;
|
||||
}
|
||||
|
||||
class MemoryStore implements MemoryStoreParams {
|
||||
store: any;
|
||||
|
||||
hasSocketAdapter: boolean;
|
||||
|
||||
constructor() {
|
||||
this.store = {};
|
||||
this.hasSocketAdapter = false;
|
||||
}
|
||||
|
||||
async get(key: string, field: any) {
|
||||
|
@ -1,4 +0,0 @@
|
||||
// eslint-disable-next-line import/prefer-default-export
|
||||
export function sanitize(str: string) {
|
||||
return str.replace(/[^A-Za-z0-9]/g, '-');
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
import { sanitize } from './index';
|
||||
|
||||
test('sanitizes should strip bad characters', () => {
|
||||
expect(sanitize('d@rkW1r# e is L3git&&!&*A*')).toBe(
|
||||
'd-rkW1r--e-is-L3git-----A-'
|
||||
);
|
||||
});
|
@ -6,7 +6,7 @@ log.transports.file.level = 'warn';
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
log.transports.console.level = 'silly';
|
||||
} else {
|
||||
log.transports.console.level = 'silly'; // TODO: make false when doing release
|
||||
log.transports.console.level = 'debug'; // TODO: make false when doing release
|
||||
}
|
||||
|
||||
export default class LoggerWithFilePrefix {
|
||||
|
@ -1,15 +0,0 @@
|
||||
import getPort from 'get-port';
|
||||
|
||||
export function shuffle(array: number[]) {
|
||||
array.sort(() => Math.random() - 0.5);
|
||||
}
|
||||
|
||||
export default async (): Promise<number> => {
|
||||
let res = 3131;
|
||||
const range = Array.from(getPort.makeRange(2000, 9999));
|
||||
shuffle(range);
|
||||
res = await getPort({
|
||||
port: range,
|
||||
});
|
||||
return res;
|
||||
};
|
@ -1,18 +0,0 @@
|
||||
/* eslint-disable no-console */
|
||||
import socketIO from 'socket.io-client';
|
||||
import generateUrl from '../api/generator';
|
||||
|
||||
let socket: SocketIOClient.Socket;
|
||||
|
||||
export const connect = (roomId: string) => {
|
||||
socket = socketIO(generateUrl(), {
|
||||
query: {
|
||||
roomId,
|
||||
},
|
||||
forceNew: true,
|
||||
});
|
||||
console.log('socket in utils', socket);
|
||||
return socket;
|
||||
};
|
||||
|
||||
export const getSocket = () => socket;
|
Loading…
x
Reference in New Issue
Block a user