class OpenapiRspec::RequestValidator
Attributes
response[R]
result[R]
Public Instance Methods
app()
click to toggle source
# File lib/openapi_rspec/request_validator.rb, line 22 def app OpenapiRspec.app end
description()
click to toggle source
# 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_message()
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
perform_request(doc)
click to toggle source
# File lib/openapi_rspec/request_validator.rb, line 62 def perform_request(doc) headers.each do |key, value| header key, value end request(request_uri(doc), method: method, **request_params) @response = last_response end
request_params()
click to toggle source
# File lib/openapi_rspec/request_validator.rb, line 70 def request_params { headers: headers, params: params, } end
request_uri(doc)
click to toggle source
# File lib/openapi_rspec/request_validator.rb, line 49 def request_uri(doc) path.scan(/\{([^\}]*)\}/).each do |param| key = param.first.to_sym if params && params[key] @path = path.gsub "{#{key}}", params.delete(key).to_s else raise URI::InvalidURIError, "No substitution data found for {#{key}}"\ " to test the path #{path}." end end "#{doc.api_base_path}#{path}?#{URI.encode_www_form(query)}" end