import USER_ROLE, { hasApproverRole } from '../../../enum/userRole'; import envConfig from '../../../env/env-config'; import { retryWithCondition } from '../../../util/common'; import { HTTP_METHOD } from '../../../util/httpMethod'; import { makeAuthenticatedRequest } from '../../../util/loginUtil'; import scenarioContext from '../../../util/scenarioContext'; function checkValidTransactionId(response: { id: string }) { if (response.id == null) { return false; } const draftIdMatcher = /[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}/g; logger.info('Checking response id..'); return !response.id.match(draftIdMatcher); } export async function getUUIDFromSubmitResponse(role: string, scenario: string) { logger.debug('getUUIDFromSubmitResponse'); const requests = await browser.getRequests(); const matchedRequest = Array.from(requests).find((request) => { if (request.response.body['id'] != undefined) { return request.response; } }); const id = matchedRequest.response.body['id']; let linearIdEndpoint = 'draft/' + id; if (hasApproverRole.includes(role)) { const transactionIDObj = await retryWithCondition( 10, makeAuthenticatedRequest, [envConfig.scenario[scenario].applicant, 'maker', 'draft/execute/' + id + '/status', HTTP_METHOD.GET, null], checkValidTransactionId ); const transactionID = transactionIDObj.id; linearIdEndpoint = 'locapp/ref/' + transactionID + '(0)'; } const getLinearIdRes = await makeAuthenticatedRequest( envConfig.scenario[scenario].applicant, 'maker', linearIdEndpoint, HTTP_METHOD.GET, null ); logger.debug('getLinearIdRes'); role != USER_ROLE.ADMIN1 ? (scenarioContext().dc.uuid = getLinearIdRes._datas[0].linearId.id) : (scenarioContext().dc.uuid = getLinearIdRes._data.linearId.id); logger.debug(`scenarioContext.dc.uuid: ${scenarioContext().dc.uuid}`); }