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.
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
|