fluentrest-ts
Version:
A lightweight, fluent TypeScript API testing library inspired by Java's RestAssured. Built on top of Axios, JSONPath, and Joi for powerful request handling and response validation.
53 lines (52 loc) • 2.01 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RequestExecutor = void 0;
const logger_1 = require("./logger");
const response_validator_1 = require("./response-validator");
const client_1 = __importDefault(require("../api/client"));
/**
* Responsible for executing HTTP requests using Axios,
* capturing both successful and failed responses,
* and wrapping the result in a ResponseValidator.
*/
class RequestExecutor {
constructor(config, logLevel, logToFile) {
this.config = config;
this.logLevel = logLevel;
this.logToFile = logToFile;
}
/**
* Sends the HTTP request using the provided method and endpoint.
* Ensures that no exception is thrown on non-2xx responses.
* Returns a ResponseValidator containing the response or error.
*
* @param method - HTTP method (e.g., "get", "post", etc.)
* @param endpoint - Target URL or path
*/
async send(method, endpoint, overrides) {
let response;
let error = null;
const fullConfig = {
...this.config,
...overrides,
method,
url: endpoint,
validateStatus: () => true // never throw on 4xx/5xx
};
try {
(0, logger_1.logRequest)(fullConfig, this.logLevel, this.logToFile);
response = await client_1.default.request(fullConfig);
(0, logger_1.logResponse)(response, this.logLevel, this.logToFile);
}
catch (err) {
error = err;
response = err?.response;
(0, logger_1.logError)(err, "Request Failed", this.logLevel, this.logToFile, response?.data);
}
return new response_validator_1.ResponseValidatorImpl(response, error, fullConfig, this.logLevel, this.logToFile);
}
}
exports.RequestExecutor = RequestExecutor;