UNPKG

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
"use strict"; 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;