in index.js [134:205]
function buildConnectionClass (mocker) {
class MockConnection extends BaseConnection {
request (params, options) {
const abortListener = () => {
aborted = true
}
let aborted = false
if (options.signal != null) {
options.signal.addEventListener('abort', abortListener, { once: true })
}
return new Promise((resolve, reject) => {
normalizeParams(params, prepareResponse)
function prepareResponse (error, params) {
/* istanbul ignore next */
if (options.signal != null) {
if ('removeEventListener' in options.signal) {
options.signal.removeEventListener('abort', abortListener)
} else {
options.signal.removeListener('abort', abortListener)
}
}
/* istanbul ignore next */
if (aborted) {
return reject(new RequestAbortedError())
}
/* istanbul ignore next */
if (error) {
return reject(new ConnectionError(error.message))
}
const response = {}
let payload = ''
let statusCode = 200
const resolver = mocker.get(params)
if (resolver === null) {
payload = { error: 'Mock not found', params }
statusCode = 404
} else {
payload = resolver(params)
if (payload instanceof ResponseError) {
statusCode = payload.statusCode
payload = payload.body
} else if (payload instanceof ElasticsearchClientError) {
return reject(payload)
}
}
response.body = typeof payload === 'string' ? payload : JSON.stringify(payload)
response.statusCode = statusCode
response.headers = {
'content-type': typeof payload === 'string'
? 'text/plain;utf=8'
: 'application/json;utf=8',
date: new Date().toISOString(),
connection: 'keep-alive',
'x-elastic-product': 'Elasticsearch',
'content-length': Buffer.byteLength(
typeof payload === 'string' ? payload : JSON.stringify(payload)
)
}
resolve(response)
}
})
}
}
return MockConnection
}