UNPKG

e2ed

Version:

E2E testing framework over Playwright

41 lines (40 loc) 2.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSetResponse = void 0; const node_async_hooks_1 = require("node:async_hooks"); const internal_1 = require("../../constants/internal"); const asserts_1 = require("../asserts"); const clone_1 = require("../clone"); const http_1 = require("../http"); const log_1 = require("../log"); const requestHooks_1 = require("../requestHooks"); /** * Get `setResponse` function for API mocks by `ApiMockState`. * @internal */ const getSetResponse = ({ optionsWithRouteByUrl, }) => node_async_hooks_1.AsyncLocalStorage.bind(async (playwrightRoute, playwrightRequest) => { const url = playwrightRequest.url(); const optionsWithRoute = optionsWithRouteByUrl[url]; const mainRequestOptions = (0, requestHooks_1.getMainRequestOptions)(playwrightRequest); (0, asserts_1.assertValueIsDefined)(optionsWithRoute, 'optionsWithRoute is defined', { mainRequestOptions }); const { apiMockFunction, skipLogs, route } = optionsWithRoute; const isRequestBodyInJsonFormat = route.getIsRequestBodyInJsonFormat(); const isResponseBodyInJsonFormat = route.getIsResponseBodyInJsonFormat(); const request = (0, requestHooks_1.getRequestFromPlaywrightRequest)(playwrightRequest, isRequestBodyInJsonFormat); const response = await apiMockFunction(route.routeParams, request); const { responseBody, responseHeaders, statusCode = internal_1.OK_STATUS_CODE } = response; const responseBodyAsString = (0, http_1.getBodyAsString)(responseBody, isResponseBodyInJsonFormat); const headers = (0, clone_1.cloneWithoutUndefinedProperties)({ ...(0, http_1.getContentJsonHeaders)(responseBodyAsString), ...responseHeaders, }); await playwrightRoute.fulfill({ body: responseBodyAsString, headers, status: statusCode, }); if (skipLogs !== true) { (0, log_1.log)(`A mock was applied to the API route "${route.constructor.name}"`, { apiMockFunction, request, response, route }, 8 /* LogEventType.InternalUtil */); } }); exports.getSetResponse = getSetResponse;