Files
bruno/packages/bruno-js/src/scripts/test-runtime.js
2023-02-01 17:56:13 +05:30

57 lines
1.3 KiB
JavaScript

const { NodeVM } = require('vm2');
const chai = require('chai');
const path = require('path');
const Bru = require('./bru');
const BrunoRequest = require('./bruno-request');
const BrunoResponse = require('./bruno-response');
const Test = require('./test');
const TestResults = require('./test-results');
class TestRuntime {
constructor() {
}
runTests(testsFile, request, response, environment, collectionVariables, collectionPath) {
const bru = new Bru(environment, collectionVariables);
const req = new BrunoRequest(request);
const res = new BrunoResponse(response);
const __brunoTestResults = new TestResults();
const test = Test(__brunoTestResults, chai);
const context = {
bru,
req,
res,
test,
expect: chai.expect,
assert: chai.assert,
__brunoTestResults: __brunoTestResults
};
const vm = new NodeVM({
sandbox: context,
require: {
context: 'sandbox',
external: true,
root: [collectionPath]
}
});
console.log(__brunoTestResults);
vm.run(testsFile, path.join(collectionPath, 'vm.js'));
return {
request,
response,
environment,
collectionVariables,
results: __brunoTestResults.getResults()
};
}
}
module.exports = {
TestRuntime
};