class OpenapiValidator::RequestValidator
Attributes
api_doc[R]
errors[R]
path_validator[R]
request[R]
validator[R]
Public Class Methods
call(**params)
click to toggle source
# File lib/openapi_validator/request_validator.rb, line 13 def self.call(**params) new(**params).call end
new(request:, validator:)
click to toggle source
# File lib/openapi_validator/request_validator.rb, line 44 def initialize(request:, validator:) @validator = validator @request = request @errors = [] end
Public Instance Methods
call()
click to toggle source
# File lib/openapi_validator/request_validator.rb, line 17 def call validate_path self end
valid?()
click to toggle source
# File lib/openapi_validator/request_validator.rb, line 9 def valid? errors.empty? end
validate_response(body:, code:, media_type: request.media_type)
click to toggle source
# File lib/openapi_validator/request_validator.rb, line 22 def validate_response(body:, code:, media_type: request.media_type) if request.code != code.to_s @errors << "Path #{request.path} did not respond with expected status code. Expected #{request.code} got #{code}" end if path_validator.empty_schema? @errors << "Path #{request.path} should return empty response." unless body.empty? else @errors += OpenapiValidator::ResponseValidator.call( request: request, schema: validator.api_doc, data: body, media_type: media_type, fragment: path_validator.fragment(media_type: media_type), response: true ).errors end validator.remove_validated_path(path_validator.path) if @errors.empty? self end
Private Instance Methods
validate_path()
click to toggle source
# File lib/openapi_validator/request_validator.rb, line 50 def validate_path @path_validator = PathValidator.call(request: request, api_doc: validator.api_doc) rescue PathValidator::Error => e @errors << e.message end