@ply-ct/ply
Version:
REST API Automated Testing
84 lines • 3.77 kB
JavaScript
;
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