diff --git a/packages/bruno-js/src/bru.js b/packages/bruno-js/src/bru.js index eba40e799..ba630c0c8 100644 --- a/packages/bruno-js/src/bru.js +++ b/packages/bruno-js/src/bru.js @@ -8,26 +8,41 @@ const variableNameRegex = /^[\w-.]*$/; class Bru { /** - * @param {string} runtime - The runtime environment ('quickjs' or 'nodevm') - * @param {object} envVariables - Environment variables - * @param {object} runtimeVariables - Runtime variables - * @param {object} processEnvVars - Process environment variables - * @param {string} collectionPath - Path to the collection - * @param {object} collectionVariables - Collection-level variables - * @param {object} folderVariables - Folder-level variables - * @param {object} requestVariables - Request-level variables - * @param {object} globalEnvironmentVariables - Global environment variables - * @param {object} oauth2CredentialVariables - OAuth2 credential variables - * @param {string} collectionName - Name of the collection - * @param {object} promptVariables - Prompt variables - * @param {object} certsAndProxyConfig - Configuration for bru.sendRequest (proxy, certs, TLS) - * @param {string} certsAndProxyConfig.collectionPath - Path to the collection - * @param {object} certsAndProxyConfig.options - TLS and proxy options - * @param {object} [certsAndProxyConfig.clientCertificates] - Client certificate configuration - * @param {object} [certsAndProxyConfig.collectionLevelProxy] - Collection-level proxy settings - * @param {object} [certsAndProxyConfig.systemProxyConfig] - System proxy configuration + * @param {object} options - Single options object (destructured) + * @property {string} options.runtime - The runtime environment ('quickjs' or 'nodevm') + * @property {object} [options.envVariables={}] - Environment variables + * @property {object} [options.runtimeVariables={}] - Runtime variables + * @property {object} [options.processEnvVars={}] - Process environment variables (deep cloned) + * @property {string} [options.collectionPath] - Path to the collection + * @property {object} [options.collectionVariables={}] - Collection-level variables + * @property {object} [options.folderVariables={}] - Folder-level variables + * @property {object} [options.requestVariables={}] - Request-level variables + * @property {object} [options.globalEnvironmentVariables={}] - Global environment variables + * @property {object} [options.oauth2CredentialVariables={}] - OAuth2 credential variables + * @property {string} [options.collectionName] - Name of the collection + * @property {object} [options.promptVariables={}] - Prompt variables + * @property {object} [options.certsAndProxyConfig] - Configuration for bru.sendRequest (proxy, certs, TLS) + * @property {string} [options.certsAndProxyConfig.collectionPath] - Path to the collection + * @property {object} [options.certsAndProxyConfig.options] - TLS and proxy options + * @property {object} [options.certsAndProxyConfig.clientCertificates] - Client certificate configuration + * @property {object} [options.certsAndProxyConfig.collectionLevelProxy] - Collection-level proxy settings + * @property {object} [options.certsAndProxyConfig.systemProxyConfig] - System proxy configuration */ - constructor(runtime, envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, collectionName, promptVariables, certsAndProxyConfig) { + constructor({ + runtime, + envVariables, + runtimeVariables, + processEnvVars, + collectionPath, + collectionVariables, + folderVariables, + requestVariables, + globalEnvironmentVariables, + oauth2CredentialVariables, + collectionName, + promptVariables, + certsAndProxyConfig + }) { this.envVariables = envVariables || {}; this.runtimeVariables = runtimeVariables || {}; this.promptVariables = promptVariables || {}; diff --git a/packages/bruno-js/src/runtime/assert-runtime.js b/packages/bruno-js/src/runtime/assert-runtime.js index 3dd25f818..ff4566a85 100644 --- a/packages/bruno-js/src/runtime/assert-runtime.js +++ b/packages/bruno-js/src/runtime/assert-runtime.js @@ -262,21 +262,18 @@ class AssertRuntime { const promptVariables = request?.promptVariables || {}; const certsAndProxyConfig = request?.certsAndProxyConfig; - const bru = new Bru( - this.runtime, + const bru = new Bru({ + runtime: this.runtime, envVariables, runtimeVariables, processEnvVars, - undefined, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, - {}, - undefined, promptVariables, certsAndProxyConfig - ); + }); const req = new BrunoRequest(request); const res = createResponseParser(response); diff --git a/packages/bruno-js/src/runtime/script-runtime.js b/packages/bruno-js/src/runtime/script-runtime.js index 8cb0c7f64..2eb43c3ee 100644 --- a/packages/bruno-js/src/runtime/script-runtime.js +++ b/packages/bruno-js/src/runtime/script-runtime.js @@ -36,7 +36,21 @@ class ScriptRuntime { const assertionResults = request?.assertionResults || []; const certsAndProxyConfig = request?.certsAndProxyConfig; const scriptPath = request?.pathname; - const bru = new Bru(this.runtime, envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, collectionName, promptVariables, certsAndProxyConfig); + const bru = new Bru({ + runtime: this.runtime, + envVariables, + runtimeVariables, + processEnvVars, + collectionPath, + collectionVariables, + folderVariables, + requestVariables, + globalEnvironmentVariables, + oauth2CredentialVariables, + collectionName, + promptVariables, + certsAndProxyConfig + }); const req = new BrunoRequest(request); // extend bru with result getter methods @@ -155,7 +169,21 @@ class ScriptRuntime { const assertionResults = request?.assertionResults || {}; const certsAndProxyConfig = request?.certsAndProxyConfig; const scriptPath = request?.pathname; - const bru = new Bru(this.runtime, envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, collectionName, promptVariables, certsAndProxyConfig); + const bru = new Bru({ + runtime: this.runtime, + envVariables, + runtimeVariables, + processEnvVars, + collectionPath, + collectionVariables, + folderVariables, + requestVariables, + globalEnvironmentVariables, + oauth2CredentialVariables, + collectionName, + promptVariables, + certsAndProxyConfig + }); const req = new BrunoRequest(request); const res = new BrunoResponse(response); diff --git a/packages/bruno-js/src/runtime/test-runtime.js b/packages/bruno-js/src/runtime/test-runtime.js index 921e06fe6..91b15ffd1 100644 --- a/packages/bruno-js/src/runtime/test-runtime.js +++ b/packages/bruno-js/src/runtime/test-runtime.js @@ -36,7 +36,21 @@ class TestRuntime { const assertionResults = request?.assertionResults || []; const certsAndProxyConfig = request?.certsAndProxyConfig; const scriptPath = request?.pathname; - const bru = new Bru(this.runtime, envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, collectionName, promptVariables, certsAndProxyConfig); + const bru = new Bru({ + runtime: this.runtime, + envVariables, + runtimeVariables, + processEnvVars, + collectionPath, + collectionVariables, + folderVariables, + requestVariables, + globalEnvironmentVariables, + oauth2CredentialVariables, + collectionName, + promptVariables, + certsAndProxyConfig + }); const req = new BrunoRequest(request); const res = new BrunoResponse(response); diff --git a/packages/bruno-js/src/runtime/vars-runtime.js b/packages/bruno-js/src/runtime/vars-runtime.js index d74a9abf3..f46b6b188 100644 --- a/packages/bruno-js/src/runtime/vars-runtime.js +++ b/packages/bruno-js/src/runtime/vars-runtime.js @@ -37,7 +37,19 @@ class VarsRuntime { const promptVariables = request?.promptVariables || {}; const certsAndProxyConfig = request?.certsAndProxyConfig; - const bru = new Bru(this.runtime, envVariables, runtimeVariables, processEnvVars, undefined, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, undefined, promptVariables, certsAndProxyConfig); + const bru = new Bru({ + runtime: this.runtime, + envVariables, + runtimeVariables, + processEnvVars, + collectionVariables, + folderVariables, + requestVariables, + globalEnvironmentVariables, + oauth2CredentialVariables, + promptVariables, + certsAndProxyConfig + }); const req = new BrunoRequest(request); const res = createResponseParser(response); diff --git a/packages/bruno-js/tests/setEnvVar.spec.js b/packages/bruno-js/tests/setEnvVar.spec.js index 0f32e7e59..6f579ae64 100644 --- a/packages/bruno-js/tests/setEnvVar.spec.js +++ b/packages/bruno-js/tests/setEnvVar.spec.js @@ -2,23 +2,14 @@ const Bru = require('../src/bru'); describe('Bru.setEnvVar', () => { const makeBru = () => - new Bru( - /* runtime */ 'quickjs', - /* envVariables */ {}, - /* runtimeVariables */ {}, - /* processEnvVars */ {}, - /* collectionPath */ '/', - /* historyLogger */ undefined, - /* setVisualizations */ undefined, - /* secretVariables */ {}, - /* collectionVariables */ {}, - /* folderVariables */ {}, - /* requestVariables */ {}, - /* globalEnvironmentVariables */ {}, - /* oauth2CredentialVariables */ {}, - /* iterationDetails */ {}, - /* collectionName */ 'Test' - ); + new Bru({ + runtime: 'quickjs', + envVariables: {}, + runtimeVariables: {}, + processEnvVars: {}, + collectionPath: '/', + collectionName: 'Test' + }); test('updates envVariables and does not mark persistent when persist=false', () => { const bru = makeBru();