Sha256: cb462864da5a9ca9e1c07a8c3c136f1ea0f9f69ea3e31c3812a7853b1c900f15
Contents?: true
Size: 1.77 KB
Versions: 3
Compression:
Stored size: 1.77 KB
Contents
# frozen_string_literal: true module ApiTester # Ensures the fields marked as required in contract are guarded module RequiredFields 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 def self.order 5 end end # Test layout used for RequiredFieldsModule class RequiredFieldsTest < MethodCaseTest def initialize(response:, payload:, expected_response:, url:, verb:) super response: response, payload: payload, expected_response: expected_response, url: url, verb: verb, module_name: 'RequiredFieldsModule' end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
api-tester-1.1.3 | lib/api-tester/modules/required_fields.rb |
api-tester-1.1.2 | lib/api-tester/modules/required_fields.rb |
api-tester-1.1.1 | lib/api-tester/modules/required_fields.rb |