module ApiTester::ExtraVerbs

Check verbs not explicitly defined in contract

Public Class Methods

go(contract) click to toggle source
# File lib/api-tester/modules/extra_verbs.rb, line 8
def self.go(contract)
  reports = []

  contract.endpoints.each do |endpoint|
    extras = ApiTester::SupportedVerbs.all - endpoint.verbs
    headers = endpoint.methods[0].request.default_headers
    extras.each do |verb|
      verb_case = BoundaryCase.new description: "Verb check with #{verb} for #{endpoint.name}",
                                   payload: {},
                                   headers: headers
      method = ApiTester::Method.new verb: verb,
                                     response: ApiTester::Response.new,
                                     request: ApiTester::Request.new
      response = endpoint.call base_url: contract.base_url,
                               method: method,
                               payload: verb_case.payload,
                               headers: verb_case.headers
      test = VerbClass.new response: response,
                           payload: verb_case.payload,
                           expected_response: endpoint.not_allowed_response,
                           url: endpoint.url,
                           verb: verb
      reports.concat test.check
    end
  end

  reports
end
order() click to toggle source
# File lib/api-tester/modules/extra_verbs.rb, line 37
def self.order
  3
end