UNPKG

@serenity-js/rest

Version:

Serenity/JS Screenplay Pattern library for interacting with REST and other HTTP-based services, supporting comprehensive API testing and blended testing scenarios

40 lines 1.44 kB
import { Duration } from '@serenity-js/core'; import axios, { Axios } from 'axios'; import { axiosProxyOverridesFor } from './proxy.js'; /** * Creates an Axios instance with desired configuration and proxy support. * * @param axiosInstanceOrConfig */ export function createAxios(axiosInstanceOrConfig = {}) { const axiosInstanceGiven = isAxiosInstance(axiosInstanceOrConfig); const axiosInstance = axiosInstanceGiven ? axiosInstanceOrConfig : axios.create({ timeout: Duration.ofSeconds(10).inMilliseconds(), ...omit(axiosInstanceOrConfig, 'proxy'), }); const proxyConfig = axiosInstanceGiven ? axiosInstanceOrConfig.defaults.proxy : axiosInstanceOrConfig.proxy; const proxyOverrides = axiosProxyOverridesFor({ ...axiosInstance.defaults, proxy: proxyConfig || undefined, }); return withOverrides(axiosInstance, proxyOverrides); } function isAxiosInstance(axiosInstanceOrConfig) { return axiosInstanceOrConfig && (axiosInstanceOrConfig instanceof Axios || axiosInstanceOrConfig.defaults); } function withOverrides(axiosInstance, overrides) { for (const [key, override] of Object.entries(overrides)) { axiosInstance.defaults[key] = override; } return axiosInstance; } function omit(record, key) { const { [key]: omitted_, ...rest } = record; return rest; } //# sourceMappingURL=createAxios.js.map