public async validateLiveRequestResponse()

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,
    };
  }