e2ed
Version:
E2E testing framework over Playwright
41 lines (40 loc) • 2.11 kB
JavaScript
;
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;