Sha256: 2161a01af2c4023da935e8f37e498bdd8429c24660e786a30c27a9bb021006cf

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

# frozen_string_literal: true

require 'api-tester/util/supported_verbs'

module ApiTester
  # Check verbs not explicitly defined in contract
  module ExtraVerbs
    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

    def self.order
      3
    end
  end

  # Test template used for module
  class VerbClass < MethodCaseTest
    def initialize(response:, payload:, expected_response:, url:, verb:)
      super response: response,
            payload: payload,
            expected_response: expected_response,
            url: url,
            verb: verb,
            module_name: 'VerbModule'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
api-tester-1.1.1 lib/api-tester/modules/extra_verbs.rb