module ApiTester::RequiredFields
Ensures the fields marked as required in contract are guarded
Public Class Methods
go(contract)
click to toggle source
# 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
order()
click to toggle source
# File lib/api-tester/modules/required_fields.rb, line 35 def self.order 5 end