const assert = require('assert'); const crypto = require('crypto'); function addBuilderForReport(report) { return TestServer.database().insert('builders', { name: report.builderName, password_hash: crypto.createHash('sha256').update(report.builderPassword).digest('hex') }); } function addWorkerForReport(report) { return TestServer.database().insert('build_workers', { name: report.workerName, password_hash: crypto.createHash('sha256').update(report.workerPassword).digest('hex') }); } function prepareServerTest(test, privilegedAPIType='browser') { test.timeout(5000); TestServer.inject(privilegedAPIType); beforeEach(async function () { const database = TestServer.database(); if (typeof(MockData) != 'undefined') MockData.resetV3Models(); await database.connect({keepAlive: true}); if (privilegedAPIType === 'browser') return; const entry = await TestServer.database().selectFirstRow('build_workers', {name: 'test'}); if (!entry) await addWorkerForReport({workerName: 'test', workerPassword: 'password'}); }); afterEach(function () { TestServer.database().disconnect(); }); } function submitReport(report) { return TestServer.database().insert('builders', { name: report[0].builderName, password_hash: crypto.createHash('sha256').update(report[0].builderPassword).digest('hex') }).then(function () { return TestServer.remoteAPI().postJSON('/api/report/', report); }); } async function assertThrows(expectedError, testFunction) { let thrownException = false; try { await testFunction(); } catch(error) { thrownException = true; assert.strictEqual(error, expectedError); } assert.ok(thrownException); } if (typeof module != 'undefined') { module.exports.addBuilderForReport = addBuilderForReport; module.exports.addWorkerForReport = addWorkerForReport; module.exports.prepareServerTest = prepareServerTest; module.exports.submitReport = submitReport; module.exports.assertThrows = assertThrows; }