class ApiTester::MethodCaseTest

Class for testing methods

Attributes

expected_response[RW]
module_name[RW]
payload[RW]
reports[RW]
response[RW]
url[RW]

Public Class Methods

new(response:, payload:, expected_response:, url:, verb:, module_name:) click to toggle source
# File lib/api-tester/method_case_test.rb, line 15
def initialize(response:, payload:, expected_response:, url:, verb:, module_name:)
  self.payload = payload
  self.response = response
  self.expected_response = expected_response
  self.reports = []
  self.url = "#{verb} #{url}"
  self.module_name = module_name
end

Public Instance Methods

check() click to toggle source
# File lib/api-tester/method_case_test.rb, line 54
def check
  if check_response_code
    evaluator = ApiTester::ResponseEvaluator.new actual_body: json_parse(response.body),
                                                 expected_fields: expected_response
    evaluator.missing_fields.map { |field| missing_field_report(field) }
    evaluator.extra_fields.map { |field| extra_field_report(field) }
    increment_fields evaluator.seen_fields
  end
  reports
end
check_response_code() click to toggle source
# File lib/api-tester/method_case_test.rb, line 65
def check_response_code
  if response.code != expected_response.code
    response_code_report
    return false
  end
  true
end
extra_field_report(field) click to toggle source
# File lib/api-tester/method_case_test.rb, line 44
def extra_field_report(field)
  report = Report.new description: "#{module_name} - Found extra field #{field}",
                      url: url,
                      request: payload,
                      expected_response: expected_response,
                      actual_response: response
  reports << report
  nil
end
increment_fields(seen_fields) click to toggle source
# File lib/api-tester/method_case_test.rb, line 73
def increment_fields(seen_fields)
  seen_fields.each(&:seen)
end
json_parse(body) click to toggle source
# File lib/api-tester/method_case_test.rb, line 77
def json_parse(body)
  JSON.parse!(body)
rescue JSON::ParserError
  body
end
missing_field_report(field) click to toggle source
# File lib/api-tester/method_case_test.rb, line 34
def missing_field_report(field)
  report = Report.new description: "#{module_name} - Missing field #{field}",
                      url: url,
                      request: payload,
                      expected_response: expected_response,
                      actual_response: response
  reports << report
  nil
end
response_code_report() click to toggle source
# File lib/api-tester/method_case_test.rb, line 24
def response_code_report
  report = StatusCodeReport.new description: "#{module_name} - Incorrect response code",
                                url: url,
                                request: payload,
                                expected_status_code: expected_response.code,
                                actual_status_code: "#{response.code} : #{response.body}"
  reports << report
  nil
end