Class: OpenapiRspec::RequestValidator

Inherits:
Object
  • Object
show all
Extended by:
Dry::Initializer
Includes:
Rack::Test::Methods
Defined in:
lib/openapi_rspec/request_validator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#responseObject (readonly)

Returns the value of attribute response.



20
21
22
# File 'lib/openapi_rspec/request_validator.rb', line 20

def response
  @response
end

#resultObject (readonly)

Returns the value of attribute result.



20
21
22
# File 'lib/openapi_rspec/request_validator.rb', line 20

def result
  @result
end

Instance Method Details

#appObject



22
23
24
# File 'lib/openapi_rspec/request_validator.rb', line 22

def app
  OpenapiRspec.app
end

#descriptionObject



35
36
37
# File 'lib/openapi_rspec/request_validator.rb', line 35

def description
  "return valid response with code #{code} on `#{method.to_s.upcase} #{path}`"
end

#failure_messageObject



39
40
41
42
43
44
45
# File 'lib/openapi_rspec/request_validator.rb', line 39

def failure_message
  if response
    (%W[Response: #{response.body}] + result.errors).join("\n")
  else
    result.errors.join("\n")
  end
end

#matches?(doc) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
30
31
32
33
# File 'lib/openapi_rspec/request_validator.rb', line 26

def matches?(doc)
  @result = doc.validate_request(path: path, method: method, code: code, media_type: media_type)
  return false unless result.valid?

  perform_request(doc)
  result.validate_response(body: response.body, code: response.status)
  result.valid?
end