UNPKG

@ply-ct/ply

Version:

REST API Automated Testing

84 lines 3.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RequestExec = void 0; const exec_1 = require("./exec"); const request_1 = require("../request"); const replace_1 = require("../replace"); class RequestExec extends exec_1.StepExec { async run(context) { var _a, _b, _c, _d; const url = context.getAttribute('url', { required: true }); const method = context.getAttribute('method', { required: true }); const headers = {}; if ((_a = context.step.attributes) === null || _a === void 0 ? void 0 : _a.headers) { const rows = JSON.parse(context.step.attributes.headers); for (const row of rows) { headers[row[0]] = (0, replace_1.replace)(row[1], context.values, { logger: context.logger, trusted: (_b = context.runOptions) === null || _b === void 0 ? void 0 : _b.trusted }); } } let body = context.getAttribute('body'); const requestObj = { name: context.name, type: 'request', url: url, method: method, headers, body, submitted: new Date(), submit: (_values) => { throw new Error('Not implemented'); } }; const request = new request_1.PlyRequest(context.name, requestObj, context.logger, context.runtime.retrieval); if (request.isGraphQl) { request.graphQl = body; body = JSON.stringify({ query: body }, null, (_c = context.runtime.options) === null || _c === void 0 ? void 0 : _c.prettyIndent); } request.stepName = context.step.name.replace(/\r?\n/g, ' '); context.stepInstance.data = { request: request.getRequest(context.values, context.runtime.options) }; if (((_d = context.step.attributes) === null || _d === void 0 ? void 0 : _d.submit) === 'true') { const response = await request.submit(context.values, context.runtime.options, { ...context.runOptions, submit: true }); context.stepInstance.data.response = response; } else { if (!context.requestSuite) { throw new Error(`Request suite not found for request: ${context.name}`); } context.requestSuite.tests[context.name] = request; const result = await context.requestSuite.run(context.name, context.values, context.runOptions, context.runNum, context.instNum); if (result.status !== 'Passed' && result.status !== 'Submitted') { context.stepInstance.status = result.status === 'Failed' ? 'Failed' : 'Errored'; context.stepInstance.message = result.message; } if (result.response) { let response = result.response; if (result.response.body) { // convert from object response = { ...result.response, body: JSON.stringify(result.response.body, null, context.runtime.options.prettyIndent) }; } context.stepInstance.data.response = response; } } if (context.stepInstance.status === 'In Progress') { // not overwritten by step execution context.stepInstance.status = 'Completed'; } return this.mapToExecResult(context.stepInstance, context.runOptions); } isTrustRequired() { return false; // expected results eval can work without trust } } exports.RequestExec = RequestExec; //# sourceMappingURL=request.js.map