mirror of
https://github.com/usebruno/bruno.git
synced 2025-08-16 16:02:00 +02:00
feat: making request and response scripts work
This commit is contained in:
@ -1,40 +1,10 @@
|
||||
|
||||
// Inbuilt Library Support
|
||||
const atob = require('atob');
|
||||
const btoa = require('btoa');
|
||||
const _ = require('lodash');
|
||||
const moment = require('moment');
|
||||
const uuid = require('uuid');
|
||||
const nanoid = require('nanoid');
|
||||
const CryptoJS = require('crypto-js');
|
||||
|
||||
class Bru {
|
||||
constructor(environment, collectionVariables) {
|
||||
this._environment = environment;
|
||||
this._collectionVariables = collectionVariables;
|
||||
}
|
||||
|
||||
require(module) {
|
||||
switch(module) {
|
||||
case 'atob':
|
||||
return atob;
|
||||
case 'btoa':
|
||||
return btoa;
|
||||
case 'lodash':
|
||||
return _;
|
||||
case 'moment':
|
||||
return moment;
|
||||
case 'uuid':
|
||||
return uuid;
|
||||
case 'nanoid':
|
||||
return nanoid;
|
||||
case 'crypto-js':
|
||||
return CryptoJS;
|
||||
default:
|
||||
throw new Error(`Module ${module} is not supported`);
|
||||
}
|
||||
}
|
||||
|
||||
getEnvVar(key) {
|
||||
return this._environment[key];
|
||||
}
|
||||
|
@ -35,11 +35,11 @@ class BrunoRequest {
|
||||
this._request.headers[name] = value;
|
||||
}
|
||||
|
||||
getData() {
|
||||
getBody() {
|
||||
return this._request.data;
|
||||
}
|
||||
|
||||
setData(data) {
|
||||
setBody(data) {
|
||||
this._request.data = data;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,10 @@
|
||||
class BrunoResponse {
|
||||
constructor(response) {
|
||||
this._response = response;
|
||||
this.status = response.status;
|
||||
this.statusText = response.statusText;
|
||||
this.headers = response.headers;
|
||||
this.body = response.data;
|
||||
}
|
||||
|
||||
getStatus() {
|
||||
@ -15,7 +19,7 @@ class BrunoResponse {
|
||||
return this._response.headers;
|
||||
}
|
||||
|
||||
getData() {
|
||||
getBody() {
|
||||
return this._response.data;
|
||||
}
|
||||
}
|
||||
|
@ -4,24 +4,42 @@ const Bru = require('./bru');
|
||||
const BrunoRequest = require('./bruno-request');
|
||||
const BrunoResponse = require('./bruno-response');
|
||||
|
||||
// Inbuilt Library Support
|
||||
const atob = require('atob');
|
||||
const btoa = require('btoa');
|
||||
const lodash = require('lodash');
|
||||
const moment = require('moment');
|
||||
const uuid = require('uuid');
|
||||
const nanoid = require('nanoid');
|
||||
const CryptoJS = require('crypto-js');
|
||||
|
||||
class ScriptRuntime {
|
||||
constructor() {
|
||||
}
|
||||
|
||||
runRequestScript(script, request, environment, collectionVariables, collectionPath) {
|
||||
const bru = new Bru(environment, collectionVariables);
|
||||
const __brunoRequest = new BrunoRequest(request);
|
||||
const $bru = new Bru(environment, collectionVariables);
|
||||
const $req = new BrunoRequest(request);
|
||||
|
||||
const context = {
|
||||
bru,
|
||||
__brunoRequest
|
||||
$bru,
|
||||
$req
|
||||
};
|
||||
const vm = new NodeVM({
|
||||
sandbox: context,
|
||||
require: {
|
||||
context: 'sandbox',
|
||||
external: true,
|
||||
root: [collectionPath]
|
||||
root: [collectionPath],
|
||||
mock: {
|
||||
atob,
|
||||
btoa,
|
||||
lodash,
|
||||
moment,
|
||||
uuid,
|
||||
nanoid,
|
||||
'crypto-js': CryptoJS
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -35,19 +53,28 @@ class ScriptRuntime {
|
||||
}
|
||||
|
||||
runResponseScript(script, response, environment, collectionVariables, collectionPath) {
|
||||
const bru = new Bru(environment, collectionVariables);
|
||||
const __brunoResponse = new BrunoResponse(response);
|
||||
const $bru = new Bru(environment, collectionVariables);
|
||||
const $res = new BrunoResponse(response);
|
||||
|
||||
const context = {
|
||||
bru,
|
||||
__brunoResponse
|
||||
$bru,
|
||||
$res
|
||||
};
|
||||
const vm = new NodeVM({
|
||||
sandbox: context,
|
||||
require: {
|
||||
context: 'sandbox',
|
||||
external: true,
|
||||
root: [collectionPath]
|
||||
root: [collectionPath],
|
||||
mock: {
|
||||
atob,
|
||||
btoa,
|
||||
lodash,
|
||||
moment,
|
||||
uuid,
|
||||
nanoid,
|
||||
'crypto-js': CryptoJS
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -7,23 +7,32 @@ const BrunoResponse = require('./bruno-response');
|
||||
const Test = require('./test');
|
||||
const TestResults = require('./test-results');
|
||||
|
||||
// Inbuilt Library Support
|
||||
const atob = require('atob');
|
||||
const btoa = require('btoa');
|
||||
const lodash = require('lodash');
|
||||
const moment = require('moment');
|
||||
const uuid = require('uuid');
|
||||
const nanoid = require('nanoid');
|
||||
const CryptoJS = require('crypto-js');
|
||||
|
||||
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 $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,
|
||||
$bru,
|
||||
$req,
|
||||
$res,
|
||||
expect: chai.expect,
|
||||
assert: chai.assert,
|
||||
__brunoTestResults: __brunoTestResults
|
||||
@ -34,7 +43,16 @@ class TestRuntime {
|
||||
require: {
|
||||
context: 'sandbox',
|
||||
external: true,
|
||||
root: [collectionPath]
|
||||
root: [collectionPath],
|
||||
mock: {
|
||||
atob,
|
||||
btoa,
|
||||
lodash,
|
||||
moment,
|
||||
uuid,
|
||||
nanoid,
|
||||
'crypto-js': CryptoJS
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user