From 46eb7d6786241d4d3bf3e282d94576caa905a762 Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Thu, 26 Aug 2021 13:04:06 +0530 Subject: [PATCH] fix: test scripts response respects the old api and the new structure --- helpers/RequestRunner.ts | 6 ++++-- helpers/postwomanTesting.ts | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/helpers/RequestRunner.ts b/helpers/RequestRunner.ts index 5175850bb..c87c63225 100644 --- a/helpers/RequestRunner.ts +++ b/helpers/RequestRunner.ts @@ -4,7 +4,9 @@ import getEnvironmentVariablesFromScript from "./preRequest" import { getEffectiveRESTRequest } from "./utils/EffectiveURL" import { HoppRESTResponse } from "./types/HoppRESTResponse" import { createRESTNetworkRequestStream } from "./network" -import runTestScriptWithVariables from "./postwomanTesting" +import runTestScriptWithVariables, { + transformResponseForTesting, +} from "./postwomanTesting" import { HoppTestData, HoppTestResult } from "./types/HoppTestResult" import { getRESTRequest, setRESTTestResults } from "~/newstore/RESTSession" @@ -50,7 +52,7 @@ export function runRESTRequest$(): Observable { > errors: [] // ¯\_(ツ)_/¯ } = runTestScriptWithVariables(effectiveRequest.testScript, { - response: res, + response: transformResponseForTesting(res), }) as any setRESTTestResults(translateToNewTestResults(testReport)) diff --git a/helpers/postwomanTesting.ts b/helpers/postwomanTesting.ts index c51ef417a..efd442a00 100644 --- a/helpers/postwomanTesting.ts +++ b/helpers/postwomanTesting.ts @@ -6,8 +6,16 @@ const styles = { ERROR: { icon: "close", class: "cl-error-response" }, } +type TestScriptResponse = { + body: any + headers: any[] + status: number + + __newRes: HoppRESTResponse +} + type TestScriptVariables = { - response: HoppRESTResponse + response: TestScriptResponse } type TestReportStartBlock = { @@ -284,3 +292,30 @@ class Expectation { ) } } + +export function transformResponseForTesting( + response: HoppRESTResponse +): TestScriptResponse { + if (response.type === "loading") { + throw new Error("Cannot transform loading responses") + } + + if (response.type === "network_fail") { + throw new Error("Cannot transform failed responses") + } + + let body: any = new TextDecoder("utf-8").decode(response.body) + + // Try parsing to JSON + try { + body = JSON.parse(body) + } catch (_) {} + + return { + body, + headers: response.headers, + status: response.statusCode, + + __newRes: response, + } +}