Module: ApiTester::RequiredFields

Defined in:
lib/api-tester/modules/required_fields.rb

Overview

Ensures the fields marked as required in contract are guarded

Class Method Summary collapse

Class Method Details

.go(contract) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/api-tester/modules/required_fields.rb', line 6

def self.go(contract)
  reports = []
  contract.endpoints.each do |endpoint|
    endpoint.methods.each do |method|
      request_def = method.request
      required_fields = request_def.fields.keep_if(&:required)
      combinations = (1..required_fields.size).flat_map { |size| required_fields.combination(size).to_a }
      combinations.each do |remove_fields|
        fields = remove_fields.map do |field|
          { name: field.name, value: nil }
        end
        payload = request_def.altered_payload_with fields
        response = endpoint.call base_url: contract.base_url,
                                 method: method,
                                 payload: payload,
                                 headers: request_def.default_headers
        test = RequiredFieldsTest.new response: response,
                                      payload: payload,
                                      expected_response: endpoint.bad_request_response,
                                      url: endpoint.url,
                                      verb: method.verb
        reports.concat test.check
      end
    end
  end

  reports
end

.orderObject



35
36
37
# File 'lib/api-tester/modules/required_fields.rb', line 35

def self.order
  5
end