in lib/liveValidation/liveValidator.ts [561:632]
public async validateLiveRequestResponse(
requestResponseObj: RequestResponsePair,
options?: ValidateOptions
): Promise<RequestResponseLiveValidationResult> {
const validationResult = {
requestValidationResult: {
errors: [],
operationInfo: { apiVersion: C.unknownApiVersion, operationId: C.unknownOperationId },
},
responseValidationResult: {
errors: [],
operationInfo: { apiVersion: C.unknownApiVersion, operationId: C.unknownOperationId },
},
};
if (!requestResponseObj) {
const message =
'requestResponseObj cannot be null or undefined and must be of type "object".';
return {
...validationResult,
runtimeException: {
code: C.ErrorCodes.IncorrectInput.name,
message,
},
};
}
const errors = this.validateRequestResponsePair!({}, requestResponseObj);
if (errors.length > 0) {
const error = errors[0];
const message =
`Found errors "${error.message}" in the provided input in path ${error.jsonPathsInPayload[0]}:\n` +
`${util.inspect(requestResponseObj, { depth: null })}.`;
return {
...validationResult,
runtimeException: {
code: C.ErrorCodes.IncorrectInput.name,
message,
},
};
}
const request = requestResponseObj.liveRequest;
const response = requestResponseObj.liveResponse;
this.transformResponseStatusCode(response);
const requestValidationResult = await this.validateLiveRequest(request, {
...options,
includeOperationMatch: true,
});
const info = requestValidationResult.operationInfo;
const responseValidationResult =
requestValidationResult.isSuccessful === undefined &&
requestValidationResult.runtimeException === undefined
? requestValidationResult
: await this.validateLiveResponse(
response,
request,
{
...options,
includeOperationMatch: false,
},
info
);
delete info.validationRequest;
delete info.operationMatch;
return {
requestValidationResult,
responseValidationResult,
};
}