UNPKG

foundation-server

Version:

An extremely efficient, highly scalable, all-in-one, easy to setup cryptocurrency mining pool

194 lines (169 loc) 9.02 kB
/* * * Loader (Updated) * */ const PoolLoader = require('../main/loader'); const PoolLogger = require('../main/logger'); const portalConfig = require('../../configs/main/example.js'); const logger = new PoolLogger(portalConfig); //////////////////////////////////////////////////////////////////////////////// describe('Test loader functionality', () => { let configCopy; beforeEach(() => { configCopy = JSON.parse(JSON.stringify(portalConfig)); }); test('Test initialization of builder', () => { const poolLoader = new PoolLoader(logger, configCopy); expect(typeof poolLoader.portalConfig).toBe('object'); expect(typeof poolLoader.validatePoolPorts).toBe('function'); }); test('Test pool configuration validation [1]', () => { const algorithms = { mining: 'scrypt', block: 'sha256d', coinbase: 'sha256d' }; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, statistics: {}, primary: { coin: { algorithms: algorithms }, payments: {}}}; const response = poolLoader.validatePoolConfigs(poolConfig); expect(response).toBe(true); }); test('Test pool configuration validation [2]', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); const algorithms = { mining: 'invalid', block: 'sha256d', coinbase: 'sha256d' }; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, primary: { coin: { algorithms: algorithms }, payments: {}}}; const response = poolLoader.validatePoolConfigs(poolConfig); expect(consoleSpy).toHaveBeenCalled(); expect(response).toBe(false); console.log.mockClear(); }); test('Test pool configuration validation [3]', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); const algorithms = { mining: 'scrypt', block: 'invalid', coinbase: 'sha256d' }; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, primary: { coin: { algorithms: algorithms }, payments: {}}}; const response = poolLoader.validatePoolConfigs(poolConfig); expect(consoleSpy).toHaveBeenCalled(); expect(response).toBe(false); console.log.mockClear(); }); test('Test pool configuration validation [4]', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); const algorithms = { mining: 'scrypt', block: 'sha256d', coinbase: 'invalid' }; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, primary: { coin: { algorithms: algorithms }, payments: {}}}; const response = poolLoader.validatePoolConfigs(poolConfig); expect(consoleSpy).toHaveBeenCalled(); expect(response).toBe(false); console.log.mockClear(); }); test('Test pool configuration validation [5]', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); const algorithms = { mining: 'scrypt', block: 'sha256d', coinbase: 'sha256d' }; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, statistics: {}, primary: { coin: { algorithms: algorithms }, payments: {}, recipients: [{ percentage: 1 }]}}; const response = poolLoader.validatePoolConfigs(poolConfig); expect(consoleSpy).toHaveBeenCalled(); expect(response).toBe(false); console.log.mockClear(); }); test('Test pool configuration validation [6]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: false, name: 'Litecoin', primary: { coin: { name: 'Litecoin' }, payments: {}}}; const response = poolLoader.validatePoolConfigs(poolConfig); expect(response).toBe(false); }); test('Test pool configuration validation [7]', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); const algorithms = { mining: 'scrypt', block: 'sha256d', coinbase: 'sha256d' }; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, statistics: { historicalInterval: 300 }, primary: { coin: { algorithms: algorithms }, payments: {}}}; const response = poolLoader.validatePoolConfigs(poolConfig); expect(consoleSpy).toHaveBeenCalled(); expect(response).toBe(false); console.log.mockClear(); }); test('Test pool recipient validation [1]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, name: 'Litecoin', primary: {}}; const response = poolLoader.validatePoolRecipients(poolConfig); expect(response).toBe(true); }); test('Test pool recipient validation [2]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, name: 'Litecoin', primary: { recipients: [{ percentage: 1 }]}}; const response = poolLoader.validatePoolRecipients(poolConfig); expect(response).toBe(false); }); test('Test pool recipient validation [3]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, name: 'Litecoin', primary: { recipients: [{ percentage: 0.4 }]}}; const response = poolLoader.validatePoolRecipients(poolConfig); expect(response).toBe(true); }); test('Test pool recipient validation [4]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, name: 'Litecoin', primary: { recipients: [{ percentage: 0.05 }]}}; const response = poolLoader.validatePoolRecipients(poolConfig); expect(response).toBe(true); }); test('Test pool name validation [1]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, name: 'Litecoin', primary: { coin: { name: 'Litecoin' }}}; const poolConfigs = { Pool1: { enabled: true, name: 'Bitcoin', primary: { coin: { name: 'Bitcoin' }}}}; const response = poolLoader.validatePoolNames(poolConfigs, poolConfig); expect(response).toBe(true); }); test('Test pool name validation [2]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, name: 'Pool1' }; const poolConfigs = { Pool1: { enabled: true, name: 'Bitcoin', primary: { coin: { name: 'Bitcoin' }}}}; const response = poolLoader.validatePoolNames(poolConfigs, poolConfig); expect(response).toBe(false); }); test('Test pool name validation [3]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, name: 'Pool1 Pool2' }; const poolConfigs = { Pool1: { enabled: true, name: 'Bitcoin', primary: { coin: { name: 'Bitcoin' }}}}; const response = poolLoader.validatePoolNames(poolConfigs, poolConfig); expect(response).toBe(false); }); test('Test pool name validation [4]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true }; const poolConfigs = { Pool1: { enabled: true, name: 'Bitcoin', primary: { coin: { name: 'Bitcoin' }}}}; const response = poolLoader.validatePoolNames(poolConfigs, poolConfig); expect(response).toBe(false); }); test('Test pool port validation [1]', () => { const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, ports: [{ enabled: true, port: 3005 }]}; const poolConfigs = { Pool1: { enabled: true, ports: [{ enabled: true, port: 3006 }]}}; const response = poolLoader.validatePoolPorts(poolConfigs, poolConfig); expect(response).toBe(true); }); test('Test pool port validation [2]', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, ports: [{ enabled: true, port: 3005 }]}; const poolConfigs = { Pool1: { enabled: true, ports: [{ enabled: true, port: 3005 }]}}; const response = poolLoader.validatePoolPorts(poolConfigs, poolConfig); expect(consoleSpy).toHaveBeenCalled(); expect(response).toBe(false); console.log.mockClear(); }); test('Test pool port validation [3]', () => { configCopy.server.port = 3005; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, ports: [{ enabled: true, port: 3005 }]}; const poolConfigs = { Pool1: { enabled: true, ports: [{ enabled: true, port: 3006 }]}}; const response = poolLoader.validatePoolPorts(poolConfigs, poolConfig); expect(response).toBe(false); }); test('Test pool port validation [4]', () => { configCopy.redis.port = 3005; const poolLoader = new PoolLoader(logger, configCopy); const poolConfig = { enabled: true, ports: [{ enabled: true, port: 3005 }]}; const poolConfigs = { Pool1: { enabled: true, ports: [{ enabled: true, port: 3006 }]}}; const response = poolLoader.validatePoolPorts(poolConfigs, poolConfig); expect(response).toBe(false); }); });