From 2385c4d5c194c53c13dd1362211e8b76f200115b Mon Sep 17 00:00:00 2001 From: Pragadesh-45 Date: Fri, 28 Feb 2025 16:58:39 +0530 Subject: [PATCH] feat: add `statusText` support to BrunoResponse on safe mode Enhance BrunoResponse with statusText functionality: - Added `getStatusText()` method to BrunoResponse class - Updated QuickJS shim to support statusText --- packages/bruno-js/src/bruno-response.js | 4 ++++ .../sandbox/quickjs/shims/bruno-response.js | 9 ++++++++ .../scripting/api/res/getStatusText.bru | 23 +++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 packages/bruno-tests/collection/scripting/api/res/getStatusText.bru diff --git a/packages/bruno-js/src/bruno-response.js b/packages/bruno-js/src/bruno-response.js index faa315235..0ad8eae2e 100644 --- a/packages/bruno-js/src/bruno-response.js +++ b/packages/bruno-js/src/bruno-response.js @@ -21,6 +21,10 @@ class BrunoResponse { return this.res ? this.res.status : null; } + getStatusText() { + return this.res ? this.res.statusText : null; + } + getHeader(name) { return this.res && this.res.headers ? this.res.headers[name] : null; } diff --git a/packages/bruno-js/src/sandbox/quickjs/shims/bruno-response.js b/packages/bruno-js/src/sandbox/quickjs/shims/bruno-response.js index fb2ae6888..6b9501876 100644 --- a/packages/bruno-js/src/sandbox/quickjs/shims/bruno-response.js +++ b/packages/bruno-js/src/sandbox/quickjs/shims/bruno-response.js @@ -6,11 +6,13 @@ const addBrunoResponseShimToContext = (vm, res) => { }); const status = marshallToVm(res?.status, vm); + const statusText = marshallToVm(res?.statusText, vm); const headers = marshallToVm(res?.headers, vm); const body = marshallToVm(res?.body, vm); const responseTime = marshallToVm(res?.responseTime, vm); vm.setProp(resFn, 'status', status); + vm.setProp(resFn, 'statusText', statusText); vm.setProp(resFn, 'headers', headers); vm.setProp(resFn, 'body', body); vm.setProp(resFn, 'responseTime', responseTime); @@ -19,6 +21,13 @@ const addBrunoResponseShimToContext = (vm, res) => { headers.dispose(); body.dispose(); responseTime.dispose(); + statusText.dispose(); + + let getStatusText = vm.newFunction('getStatusText', function () { + return marshallToVm(res.getStatusText(), vm); + }); + vm.setProp(resFn, 'getStatusText', getStatusText); + getStatusText.dispose(); let getStatus = vm.newFunction('getStatus', function () { return marshallToVm(res.getStatus(), vm); diff --git a/packages/bruno-tests/collection/scripting/api/res/getStatusText.bru b/packages/bruno-tests/collection/scripting/api/res/getStatusText.bru new file mode 100644 index 000000000..f023d217c --- /dev/null +++ b/packages/bruno-tests/collection/scripting/api/res/getStatusText.bru @@ -0,0 +1,23 @@ +meta { + name: getStatusText + type: http + seq: 6 +} + +get { + url: {{host}}/ping + body: none + auth: none +} + +assert { + res.statusText: eq OK + res.body: eq pong +} + +tests { + test("res.getStatusText()", function() { + const statusText = res.getStatusText() + expect(statusText).to.equal('OK'); + }); +}