haikuwebkit/Websites/perf.webkit.org/server-tests/resources/common-operations.js

71 lines
2.1 KiB
JavaScript

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