Class: ApiTester::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/api-tester/definition/request.rb

Overview

Class for defining requests in a contract

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRequest

Returns a new instance of Request.



13
14
15
16
17
# File 'lib/api-tester/definition/request.rb', line 13

def initialize
  self.fields = []
  self.header_fields = []
  self.query_params = []
end

Instance Attribute Details

#definitionObject

Returns the value of attribute definition.



8
9
10
# File 'lib/api-tester/definition/request.rb', line 8

def definition
  @definition
end

#fieldsObject

Returns the value of attribute fields.



10
11
12
# File 'lib/api-tester/definition/request.rb', line 10

def fields
  @fields
end

#header_fieldsObject

Returns the value of attribute header_fields.



9
10
11
# File 'lib/api-tester/definition/request.rb', line 9

def header_fields
  @header_fields
end

#query_paramsObject

Returns the value of attribute query_params.



11
12
13
# File 'lib/api-tester/definition/request.rb', line 11

def query_params
  @query_params
end

Instance Method Details

#add_field(new_field) ⇒ Object



19
20
21
22
# File 'lib/api-tester/definition/request.rb', line 19

def add_field(new_field)
  fields << new_field
  self
end

#add_header_field(new_header) ⇒ Object



33
34
35
36
# File 'lib/api-tester/definition/request.rb', line 33

def add_header_field(new_header)
  header_fields << new_header
  self
end

#add_query_param(new_query_param) ⇒ Object



24
25
26
27
# File 'lib/api-tester/definition/request.rb', line 24

def add_query_param(new_query_param)
  query_params << new_query_param
  self
end

#altered_payload(field_name:, value:) ⇒ Object



82
83
84
85
86
# File 'lib/api-tester/definition/request.rb', line 82

def altered_payload(field_name:, value:)
  body = payload
  body[field_name] = value
  body
end

#altered_payload_with(fields) ⇒ Object



88
89
90
91
92
93
94
# File 'lib/api-tester/definition/request.rb', line 88

def altered_payload_with(fields)
  body = payload
  fields.each do |field|
    body[field[:name]] = field[:value]
  end
  body
end

#casesObject



68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/api-tester/definition/request.rb', line 68

def cases
  boundary_cases = []
  fields.each do |field|
    field.negative_boundary_values.each do |value|
      bcase = BoundaryCase.new description: "Setting #{field.name} to #{value}",
                               payload: altered_payload(field_name: field.name,
                                                        value: value),
                               headers: default_headers
      boundary_cases.push bcase
    end
  end
  boundary_cases
end

#default_headersObject



52
53
54
55
56
57
58
# File 'lib/api-tester/definition/request.rb', line 52

def default_headers
  if header_fields != []
    headers
  else
    { content_type: :json, accept: :json }
  end
end

#default_payloadObject



48
49
50
# File 'lib/api-tester/definition/request.rb', line 48

def default_payload
  payload
end

#default_queryObject



29
30
31
# File 'lib/api-tester/definition/request.rb', line 29

def default_query
  query_params.map { |param| "#{param.name}=#{param.default_value}" }.join('&')
end

#headersObject



60
61
62
63
64
65
66
# File 'lib/api-tester/definition/request.rb', line 60

def headers
  header_response = {}
  header_fields.each do |header_field|
    header_response[header_field.name] = header_field.default_value
  end
  header_response
end

#payloadObject



38
39
40
41
42
43
44
45
46
# File 'lib/api-tester/definition/request.rb', line 38

def payload
  response = {}
  fields.each do |field|
    if field.required == true
      response[field.name] = field.default_value
    end
  end
  response
end