@usebruno/js 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usebruno/js",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "license": "MIT",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -8,6 +8,7 @@ const zlib = require('zlib');
8
8
  const url = require('url');
9
9
  const punycode = require('punycode');
10
10
  const fs = require('fs');
11
+ const { get } = require('lodash');
11
12
  const Bru = require('../bru');
12
13
  const BrunoRequest = require('../bruno-request');
13
14
  const BrunoResponse = require('../bruno-response');
@@ -38,10 +39,23 @@ class ScriptRuntime {
38
39
  collectionPath,
39
40
  onConsoleLog,
40
41
  processEnvVars,
41
- allowScriptFilesystemAccess
42
+ scriptingConfig,
42
43
  ) {
43
44
  const bru = new Bru(envVariables, collectionVariables, processEnvVars, collectionPath);
44
45
  const req = new BrunoRequest(request);
46
+ const allowScriptFilesystemAccess = get(scriptingConfig, 'filesystemAccess.allow', false);
47
+ const moduleWhitelist = get(scriptingConfig, 'moduleWhitelist', []);
48
+
49
+ const whitelistedModules = {};
50
+
51
+ for(let module of moduleWhitelist) {
52
+ try {
53
+ whitelistedModules[module] = require(module);
54
+ } catch (e) {
55
+ // Ignore
56
+ console.warn(e);
57
+ }
58
+ }
45
59
 
46
60
  const context = {
47
61
  bru,
@@ -89,6 +103,7 @@ class ScriptRuntime {
89
103
  chai,
90
104
  'node-fetch': fetch,
91
105
  'crypto-js': CryptoJS,
106
+ ...whitelistedModules,
92
107
  fs: allowScriptFilesystemAccess ? fs : undefined
93
108
  }
94
109
  }
@@ -111,11 +126,24 @@ class ScriptRuntime {
111
126
  collectionPath,
112
127
  onConsoleLog,
113
128
  processEnvVars,
114
- allowScriptFilesystemAccess
129
+ scriptingConfig
115
130
  ) {
116
131
  const bru = new Bru(envVariables, collectionVariables, processEnvVars, collectionPath);
117
132
  const req = new BrunoRequest(request);
118
133
  const res = new BrunoResponse(response);
134
+ const allowScriptFilesystemAccess = get(scriptingConfig, 'filesystemAccess.allow', false);
135
+ const moduleWhitelist = get(scriptingConfig, 'moduleWhitelist', []);
136
+
137
+ const whitelistedModules = {};
138
+
139
+ for(let module of moduleWhitelist) {
140
+ try {
141
+ whitelistedModules[module] = require(module);
142
+ } catch (e) {
143
+ // Ignore
144
+ console.warn(e);
145
+ }
146
+ }
119
147
 
120
148
  const context = {
121
149
  bru,
@@ -163,7 +191,8 @@ class ScriptRuntime {
163
191
  axios,
164
192
  'node-fetch': fetch,
165
193
  'crypto-js': CryptoJS,
166
- fs: allowScriptFilesystemAccess ? fs : undefined
194
+ ...whitelistedModules,
195
+ fs: allowScriptFilesystemAccess ? fs : undefined,
167
196
  }
168
197
  }
169
198
  });
@@ -9,6 +9,7 @@ const zlib = require('zlib');
9
9
  const url = require('url');
10
10
  const punycode = require('punycode');
11
11
  const fs = require('fs');
12
+ const { get } = require('lodash');
12
13
  const Bru = require('../bru');
13
14
  const BrunoRequest = require('../bruno-request');
14
15
  const BrunoResponse = require('../bruno-response');
@@ -38,11 +39,24 @@ class TestRuntime {
38
39
  collectionPath,
39
40
  onConsoleLog,
40
41
  processEnvVars,
41
- allowScriptFilesystemAccess
42
+ scriptingConfig
42
43
  ) {
43
44
  const bru = new Bru(envVariables, collectionVariables, processEnvVars, collectionPath);
44
45
  const req = new BrunoRequest(request);
45
46
  const res = new BrunoResponse(response);
47
+ const allowScriptFilesystemAccess = get(scriptingConfig, 'filesystemAccess.allow', false);
48
+ const moduleWhitelist = get(scriptingConfig, 'moduleWhitelist', []);
49
+
50
+ const whitelistedModules = {};
51
+
52
+ for(let module of moduleWhitelist) {
53
+ try {
54
+ whitelistedModules[module] = require(module);
55
+ } catch (e) {
56
+ // Ignore
57
+ console.warn(e);
58
+ }
59
+ }
46
60
 
47
61
  const __brunoTestResults = new TestResults();
48
62
  const test = Test(__brunoTestResults, chai);
@@ -106,6 +120,7 @@ class TestRuntime {
106
120
  nanoid,
107
121
  chai,
108
122
  'crypto-js': CryptoJS,
123
+ ...whitelistedModules,
109
124
  fs: allowScriptFilesystemAccess ? fs : undefined
110
125
  }
111
126
  }