foundation-server
Version:
An extremely efficient, highly scalable, all-in-one, easy to setup cryptocurrency mining pool
68 lines (56 loc) • 2.36 kB
JavaScript
/*
*
* Server (Updated)
*
*/
/* eslint-disable-next-line no-unused-vars */
const redis = require('redis-mock');
const events = require('events');
jest.mock('redis', () => jest.requireActual('redis-mock'));
const PoolApi = require('../main/api');
const PoolServer = require('../main/server');
const PoolLogger = require('../main/logger');
const poolConfig = require('../../configs/pools/example.js');
const portalConfig = require('../../configs/main/example.js');
process.env.poolConfigs = JSON.stringify({ Pool1: poolConfig });
process.env.portalConfig = JSON.stringify(portalConfig);
const logger = new PoolLogger(portalConfig);
////////////////////////////////////////////////////////////////////////////////
function mockResponse() {
const response = new events.EventEmitter();
response.writeHead = (code, headers) => {
response.emit('header', [code, headers]);
};
response.end = (payload) => response.emit('end', payload);
return response;
}
////////////////////////////////////////////////////////////////////////////////
describe('Test server functionality', () => {
let poolServer;
beforeAll((done) => {
const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
poolServer = new PoolServer(logger);
poolServer.setupServer(() => {
expect(consoleSpy).toHaveBeenCalled();
console.log.mockClear();
done();
});
});
afterAll((done) => {
poolServer.server.close(() => done());
});
test('Test initialization of server', () => {
expect(typeof poolServer).toBe('object');
expect(typeof poolServer.server).toBe('object');
expect(poolServer.server._connections).toBe(0);
});
test('Test handleErrors functionality [1]', () => {
const mainApi = new PoolApi();
const response = mockResponse();
response.on('end', (payload) => {
const expected = '{"version":"0.0.3","statusCode":500,"headers":{"Access-Control-Allow-Headers":"Content-Type, Access-Control-Allow-Headers, Access-Control-Allow-Origin, Access-Control-Allow-Methods","Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET","Content-Type":"application/json"},"body":"The server was unable to handle your request. Verify your input or try again later"}';
expect(payload).toBe(expected);
});
poolServer.handleErrors(mainApi, 'test', response);
});
});