class OpenapiValidator::Validator

Attributes

additional_schemas[R]
api_base_path[R]
api_doc[R]
unvalidated_requests[R]

Public Class Methods

new(doc, additional_schemas: [], api_base_path: "") click to toggle source

@param [Hash] doc parsed openapi documentation @param [Array<String>] additional_schemas paths to custom schemas

# File lib/openapi_validator/validator.rb, line 32
def initialize(doc, additional_schemas: [], api_base_path: "")
  @api_doc = doc
  @api_base_path = api_base_path
  @additional_schemas = additional_schemas
  @unvalidated_requests = build_unvalidated_requests
end

Public Instance Methods

remove_validated_path(request) click to toggle source

@param [Array] request

# File lib/openapi_validator/validator.rb, line 22
def remove_validated_path(request)
  @unvalidated_requests.delete(request)
end
validate_documentation() click to toggle source

@return [DocumentationValidator] validation result

# File lib/openapi_validator/validator.rb, line 12
def validate_documentation
  DocumentationValidator.call(api_doc, additional_schemas: additional_schemas)
end
validate_request(**params) click to toggle source

@return [Object] RequestValidator

# File lib/openapi_validator/validator.rb, line 17
def validate_request(**params)
  RequestValidator.call(request: Request.call(**params), validator: self)
end

Private Instance Methods

build_unvalidated_requests() click to toggle source

@return [Array]

# File lib/openapi_validator/validator.rb, line 40
def build_unvalidated_requests
  http_methods = %w[get put post delete options head patch trace]
  requests = []

  api_doc["paths"]&.each do |path, methods|
    methods.each do |method, values|
      next unless http_methods.include?(method)

      values["responses"]&.each_key do |code|
        requests << [path, method, code]
      end
    end
  end
  requests
end