1
0
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:
Pavlo Buidenkov 2020-08-31 20:46:13 +03:00
parent 7ec64ce846
commit ae2b565f47
10 changed files with 30 additions and 68 deletions

View 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);
});
});

View File

@ -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);
}
});

View File

@ -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

View File

@ -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

View File

@ -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) {

View File

@ -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, '-');
}

View File

@ -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-'
);
});

View File

@ -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 {

View File

@ -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;
};

View File

@ -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;