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.



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

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.



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

def fields
  @fields
end

#header_fieldsObject

Returns the value of attribute header_fields.



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

def header_fields
  @header_fields
end

#query_paramsObject

Returns the value of attribute query_params.



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

def query_params
  @query_params
end

Instance Method Details

#add_field(new_field) ⇒ Object



16
17
18
19
# File 'lib/api-tester/definition/request.rb', line 16

def add_field(new_field)
  fields << new_field
  self
end

#add_header_field(new_header) ⇒ Object



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

def add_header_field(new_header)
  header_fields << new_header
  self
end

#add_query_param(new_query_param) ⇒ Object



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

def add_query_param(new_query_param)
  query_params << new_query_param
  self
end

#altered_payload(field_name:, value:) ⇒ Object



79
80
81
82
83
# File 'lib/api-tester/definition/request.rb', line 79

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

#altered_payload_with(fields) ⇒ Object



85
86
87
88
89
90
91
# File 'lib/api-tester/definition/request.rb', line 85

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

#casesObject



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

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



49
50
51
52
53
54
55
# File 'lib/api-tester/definition/request.rb', line 49

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

#default_payloadObject



45
46
47
# File 'lib/api-tester/definition/request.rb', line 45

def default_payload
  payload
end

#default_queryObject



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

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

#headersObject



57
58
59
60
61
62
63
# File 'lib/api-tester/definition/request.rb', line 57

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

#payloadObject



35
36
37
38
39
40
41
42
43
# File 'lib/api-tester/definition/request.rb', line 35

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