diff --git a/src/core/common/mockProcessor.ts b/src/core/common/mockProcessor.ts index 5aa27a8..3cdeb0f 100644 --- a/src/core/common/mockProcessor.ts +++ b/src/core/common/mockProcessor.ts @@ -7,6 +7,7 @@ import { validatePassword } from "../utils/mockProcessor"; import { getServerMockResponse } from "../utils/mockServerResponseHelper"; import pathMatcher from "../utils/pathMatcher"; import { renderTemplate } from "../utils/templating"; +import { getPostData } from "../utils/harFormatter"; class MockProcessor { static process = async ( @@ -35,6 +36,7 @@ class MockProcessor { statusCode: responseTemplate.statusCode, urlParams, headers: request.headers as Record || {}, + data: getPostData(request) }; console.log({ contextParams }); diff --git a/src/core/utils/templating/helpers/requestHelpers.ts b/src/core/utils/templating/helpers/requestHelpers.ts index 075929d..a0e4efe 100644 --- a/src/core/utils/templating/helpers/requestHelpers.ts +++ b/src/core/utils/templating/helpers/requestHelpers.ts @@ -24,6 +24,20 @@ const requestHelpers = (params: MockContextParams) => { return params.headers[param?.toLowerCase()] || defaultValue; }, + body: (key: string) => { // passes key + const rawData = params.data + const defaultResponse = '' + if(rawData && rawData.text) { + try { + // fix-me: handle url encoded params and other operations on body later + const parsedData = JSON.parse(rawData.text) + return parsedData[key] ?? defaultResponse + } catch (error) { + /* NOOP */ + } + } + return defaultResponse + } }; return helpers; }; diff --git a/src/test/dummy/mock1.ts b/src/test/dummy/mock1.ts index 0692862..9d12ba2 100644 --- a/src/test/dummy/mock1.ts +++ b/src/test/dummy/mock1.ts @@ -18,7 +18,7 @@ export const dummyMock1: Mock = { foo: "bar", "content-type": "application/json", }, - body: '{"Hello":"There","mockId":"1", "statusCode": {{ statusCode }}, "method": "{{ method }}", "urlParams": "{{ urlParam \'userId\' }}", "header": "{{ header \'userid\' \'test\' }}" }}', + body: '{"Hello":"There","mockId":"1", "statusCode": {{ statusCode }}, "method": "{{ method }}", "urlParams": "{{ urlParam \'userId\' }}", "header": "{{ header \'userid\' \'test\' }}", body: "{{body \'test\'}}" }', }, ], }; diff --git a/src/types/internal.ts b/src/types/internal.ts index 376c61d..d2a3bdc 100644 --- a/src/types/internal.ts +++ b/src/types/internal.ts @@ -1,3 +1,4 @@ +import { Request } from "har-format"; import { RequestMethod } from "."; export interface MockContextParams { @@ -5,4 +6,5 @@ export interface MockContextParams { method: RequestMethod; statusCode: number; headers: Record; + data: Request["postData"] }