class ApiTester::Endpoint

Class for defining and interacting with endpoints in a contract

Attributes

bad_request_response[RW]
methods[RW]
name[RW]
not_allowed_response[RW]
not_found_response[RW]
path_params[RW]
relative_url[RW]
test_helper[RW]

Public Class Methods

new(name:, relative_url:) click to toggle source
# File lib/api-tester/definition/endpoint.rb, line 21
def initialize(name:, relative_url:)
  self.relative_url = relative_url
  self.name = name
  self.methods = []
  self.path_params = []
  self.test_helper = ApiTester::TestHelper.new
  self.bad_request_response = ApiTester::Response.new status_code: 400
  self.not_allowed_response = ApiTester::Response.new status_code: 415
  self.not_found_response = ApiTester::Response.new status_code: 404
end

Public Instance Methods

add_method(verb:, response:, request: Request.new) click to toggle source
# File lib/api-tester/definition/endpoint.rb, line 68
def add_method(verb:, response:, request: Request.new)
  methods << ApiTester::Method.new(verb: verb,
                                   response: response,
                                   request: request)
  self
end
add_path_param(param) click to toggle source
# File lib/api-tester/definition/endpoint.rb, line 75
def add_path_param(param)
  path_params << param
  self
end
call(base_url:, method:, query: '', payload: {}, headers: {}) click to toggle source
# File lib/api-tester/definition/endpoint.rb, line 53
def call(base_url:, method:, query: '', payload: {}, headers: {})
  test_helper.before
  url = query ? "#{base_url}#{self.url}?#{query}" : "#{base_url}#{self.url}"
  begin
    response = RestClient::Request.execute(method: method.verb,
                                           url: url,
                                           payload: payload.to_json,
                                           headers: headers)
  rescue RestClient::ExceptionWithResponse => e
    response = e.response
  end
  test_helper.after
  response
end
default_call(base_url) click to toggle source
# File lib/api-tester/definition/endpoint.rb, line 40
def default_call(base_url)
  test_helper.before
  method_defaults = methods[0].default_request
  method_defaults[:url] = "#{base_url}#{url}"
  begin
    response = RestClient::Request.execute(method_defaults)
  rescue RestClient::ExceptionWithResponse => e
    response = e.response
  end
  test_helper.after
  response
end
url() click to toggle source
# File lib/api-tester/definition/endpoint.rb, line 32
def url
  temp_url = relative_url
  path_params.each do |param|
    temp_url.sub! "{#{param}}", test_helper.retrieve_param(param)
  end
  temp_url
end
verbs() click to toggle source
# File lib/api-tester/definition/endpoint.rb, line 80
def verbs
  methods.map(&:verb)
end