@reportfy/tester
Version:
Lib para teste de integração usando serviço do reportfy
68 lines (54 loc) • 2.9 kB
JavaScript
const { listTestCase } = require('../helpers/equalTest')
const { getInterface } = require('../helpers/network')
const { getParamsServer, execTestAndMethod, mountedSenderReport } = require('./mountedRequest')
const { getConfigByKey, reportRequestSender } = require('../integration/request')
const { mountedErrorPassed, logError, logInitProgram, logReportTesteCase } = require('../helpers/logs')
const { replacementBody, replacementPath, replaceHeaders, replacementQuery, replacementQueryToPath, replaceAuthenticate } = require('../helpers/parseBody')
/**
* @function
* @param element
* @param result
* @returns {*}
*/
const replacement = (element, result) => {
element.body = JSON.parse(element.body)
element.header = replaceAuthenticate(element, result.ConfigIntegrations || [])
element.body = replacementBody(element, result.ConfigIntegrations || [], element.rules.keys || [])
element.query = replacementQuery(element, result.ConfigIntegrations || [], element.rules.keys || [])
element.rules.equal = replacementBody({ ...element, body: element.rules.equal || { } }, result.ConfigIntegrations || [], element.rules.keys || [])
element.header = { ...replaceHeaders(element, result.ConfigIntegrations, element.rules.keys || []), ...element.header }
element.path = replacementPath(element, result.ConfigIntegrations, element.rules.keys || [])
element.path = replacementQueryToPath(element.query, element.path)
return element
}
/**
* @function
* @param key
* @param server
* @returns {Promise<void>}
*/
exports.initTest = async ({ key, server, typeServer, accessKey, secretKey }) => {
try {
const network = getInterface()
const result = await getConfigByKey({ key, accessKey, secretKey })
const instance = await getParamsServer(server, typeServer)
logInitProgram(network)
for (let i = 0; i < result.ConfigIntegrations.length; i++) {
let element = replacement(result.ConfigIntegrations[i], result)
result.ConfigIntegrations[i].body = result.ConfigIntegrations[i].body
const { bodyResponse, passed } = await execTestAndMethod(element, instance)
result.ConfigIntegrations[i].bodyResponse = bodyResponse
result.ConfigIntegrations[i].report = passed
mountedErrorPassed(element, passed)
}
const { approved, reproved } = listTestCase(result.ConfigIntegrations)
const passed = (approved.length > 0 && reproved.length === 0)
const reportRequest = mountedSenderReport(result, network, 'local', passed)
logReportTesteCase(approved.length, reproved.length, result.ConfigIntegrations.length)
await reportRequestSender(reportRequest, { key, accessKey, secretKey })
process.exit(reproved.length > 0 ? 1 : 0)
} catch (err){
logError(err.message)
process.exit(1)
}
}