add: bru.collectionName api

This commit is contained in:
poojabela
2025-04-30 17:25:42 +05:30
parent ba9362ccb2
commit e0fb379511
9 changed files with 59 additions and 14 deletions

View File

@@ -81,6 +81,7 @@ if (!SERVER_RENDERED) {
'bru.getAssertionResults()',
'bru.getTestResults()',
'bru.sleep(ms)',
'bru.getCollectionName()',
'bru.getGlobalEnvVar(key)',
'bru.setGlobalEnvVar(key, value)',
'bru.runner',

View File

@@ -31,6 +31,7 @@ const prepareRequest = (item = {}, collection = {}) => {
method: request.method,
url: request.url,
headers: headers,
name: item.name,
pathParams: request?.params?.filter((param) => param.type === 'path'),
responseType: 'arraybuffer'
};

View File

@@ -60,6 +60,7 @@ const runSingleRequest = async function (
// run pre request script
const requestScriptFile = get(request, 'script.req');
const collectionName = collection?.brunoConfig?.name
if (requestScriptFile?.length) {
const scriptRuntime = new ScriptRuntime({ runtime: scriptingConfig?.runtime });
const result = await scriptRuntime.runRequestScript(
@@ -71,7 +72,8 @@ const runSingleRequest = async function (
onConsoleLog,
processEnvVars,
scriptingConfig,
runSingleRequestByPathname
runSingleRequestByPathname,
collectionName
);
if (result?.nextRequestName !== undefined) {
nextRequestName = result.nextRequestName;
@@ -425,7 +427,8 @@ const runSingleRequest = async function (
null,
processEnvVars,
scriptingConfig,
runSingleRequestByPathname
runSingleRequestByPathname,
collectionName
);
if (result?.nextRequestName !== undefined) {
nextRequestName = result.nextRequestName;
@@ -475,7 +478,8 @@ const runSingleRequest = async function (
null,
processEnvVars,
scriptingConfig,
runSingleRequestByPathname
runSingleRequestByPathname,
collectionName
);
testResults = get(result, 'results', []);

View File

@@ -341,6 +341,7 @@ const registerNetworkIpc = (mainWindow) => {
) => {
// run pre-request script
let scriptResult;
const collectionName = collection?.name
const requestScript = get(request, 'script.req');
if (requestScript?.length) {
const scriptRuntime = new ScriptRuntime({ runtime: scriptingConfig?.runtime });
@@ -353,7 +354,8 @@ const registerNetworkIpc = (mainWindow) => {
onConsoleLog,
processEnvVars,
scriptingConfig,
runRequestByItemPathname
runRequestByItemPathname,
collectionName
);
mainWindow.webContents.send('main:script-environment-update', {
@@ -447,6 +449,7 @@ const registerNetworkIpc = (mainWindow) => {
// run post-response script
const responseScript = get(request, 'script.res');
let scriptResult;
const collectionName = collection?.name
if (responseScript?.length) {
const scriptRuntime = new ScriptRuntime({ runtime: scriptingConfig?.runtime });
scriptResult = await scriptRuntime.runResponseScript(
@@ -459,7 +462,8 @@ const registerNetworkIpc = (mainWindow) => {
onConsoleLog,
processEnvVars,
scriptingConfig,
runRequestByItemPathname
runRequestByItemPathname,
collectionName
);
mainWindow.webContents.send('main:script-environment-update', {
@@ -706,6 +710,7 @@ const registerNetworkIpc = (mainWindow) => {
}
const testFile = get(request, 'tests');
const collectionName = collection?.name
if (typeof testFile === 'string') {
const testRuntime = new TestRuntime({ runtime: scriptingConfig?.runtime });
const testResults = await testRuntime.runTests(
@@ -718,7 +723,8 @@ const registerNetworkIpc = (mainWindow) => {
onConsoleLog,
processEnvVars,
scriptingConfig,
runRequestByItemPathname
runRequestByItemPathname,
collectionName
);
!runInBackground && mainWindow.webContents.send('main:run-request-event', {
@@ -1171,6 +1177,7 @@ const registerNetworkIpc = (mainWindow) => {
}
const testFile = get(request, 'tests');
const collectionName = collection?.name
if (typeof testFile === 'string') {
const testRuntime = new TestRuntime({ runtime: scriptingConfig?.runtime });
const testResults = await testRuntime.runTests(
@@ -1183,7 +1190,8 @@ const registerNetworkIpc = (mainWindow) => {
onConsoleLog,
processEnvVars,
scriptingConfig,
runRequestByItemPathname
runRequestByItemPathname,
collectionName
);
if (testResults?.nextRequestName !== undefined) {

View File

@@ -4,7 +4,7 @@ const { interpolate } = require('@usebruno/common');
const variableNameRegex = /^[\w-.]*$/;
class Bru {
constructor(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables) {
constructor(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, collectionName) {
this.envVariables = envVariables || {};
this.runtimeVariables = runtimeVariables || {};
this.processEnvVars = cloneDeep(processEnvVars || {});
@@ -14,6 +14,7 @@ class Bru {
this.globalEnvironmentVariables = globalEnvironmentVariables || {};
this.oauth2CredentialVariables = oauth2CredentialVariables || {};
this.collectionPath = collectionPath;
this.collectionName = collectionName;
this.runner = {
skipRequest: () => {
this.skipRequest = true;
@@ -159,6 +160,10 @@ class Bru {
sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
getCollectionName() {
return this.collectionName;
}
}
module.exports = Bru;

View File

@@ -48,14 +48,15 @@ class ScriptRuntime {
onConsoleLog,
processEnvVars,
scriptingConfig,
runRequestByItemPathname
runRequestByItemPathname,
collectionName
) {
const globalEnvironmentVariables = request?.globalEnvironmentVariables || {};
const oauth2CredentialVariables = request?.oauth2CredentialVariables || {};
const collectionVariables = request?.collectionVariables || {};
const folderVariables = request?.folderVariables || {};
const requestVariables = request?.requestVariables || {};
const bru = new Bru(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables);
const bru = new Bru(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, collectionName);
const req = new BrunoRequest(request);
const allowScriptFilesystemAccess = get(scriptingConfig, 'filesystemAccess.allow', false);
const moduleWhitelist = get(scriptingConfig, 'moduleWhitelist', []);
@@ -181,14 +182,15 @@ class ScriptRuntime {
onConsoleLog,
processEnvVars,
scriptingConfig,
runRequestByItemPathname
runRequestByItemPathname,
collectionName
) {
const globalEnvironmentVariables = request?.globalEnvironmentVariables || {};
const oauth2CredentialVariables = request?.oauth2CredentialVariables || {};
const collectionVariables = request?.collectionVariables || {};
const folderVariables = request?.folderVariables || {};
const requestVariables = request?.requestVariables || {};
const bru = new Bru(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables);
const bru = new Bru(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, oauth2CredentialVariables, collectionName);
const req = new BrunoRequest(request);
const res = new BrunoResponse(response);
const allowScriptFilesystemAccess = get(scriptingConfig, 'filesystemAccess.allow', false);

View File

@@ -68,14 +68,15 @@ class TestRuntime {
onConsoleLog,
processEnvVars,
scriptingConfig,
runRequestByItemPathname
runRequestByItemPathname,
collectionName
) {
const globalEnvironmentVariables = request?.globalEnvironmentVariables || {};
const collectionVariables = request?.collectionVariables || {};
const folderVariables = request?.folderVariables || {};
const requestVariables = request?.requestVariables || {};
const assertionResults = request?.assertionResults || [];
const bru = new Bru(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables);
const bru = new Bru(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, {}, collectionName);
const req = new BrunoRequest(request);
const res = new BrunoResponse(response);
const allowScriptFilesystemAccess = get(scriptingConfig, 'filesystemAccess.allow', false);

View File

@@ -17,6 +17,12 @@ const addBruShimToContext = (vm, bru) => {
vm.setProp(bruObject, 'getEnvName', getEnvName);
getEnvName.dispose();
let getCollectionName = vm.newFunction('getCollectionName', function () {
return marshallToVm(bru.getCollectionName(), vm);
});
vm.setProp(bruObject, 'getCollectionName', getCollectionName);
getCollectionName.dispose();
let getProcessEnv = vm.newFunction('getProcessEnv', function (key) {
return marshallToVm(bru.getProcessEnv(vm.dump(key)), vm);
});

View File

@@ -0,0 +1,17 @@
meta {
name: getCollectionName
type: http
seq: 13
}
get {
url: {{host}}/ping
body: none
auth: inherit
}
tests {
test("Check if collection name is bruno-testbench", function () {
expect(bru.getCollectionName()).to.eql("bruno-testbench");
});
}