class Aranea::Failure

TODO: Look into moving whitelisting of consumer hostnames to here and allowing it to be configurable via the consuming application

Attributes

expiration_date[RW]

Public Class Methods

create(params) click to toggle source
# File lib/aranea/failure_repository.rb, line 13
def create(params)
  failure = retrieve_failure
  raise FailureFailure, "A failure is already in progress (#{failure})." if failure

  failure = new(params)
  Repository.store(failure, params[:minutes].minutes)
  failure
end
current() click to toggle source
# File lib/aranea/failure_repository.rb, line 9
def current
  retrieve_failure || NullFailure.new
end
new(params) click to toggle source
# File lib/aranea/failure_repository.rb, line 29
def initialize(params)
  @pattern = Regexp.new(params[:pattern])
  @response = params[:failure]
  @response_hash = params[:response_hash] || {}
  @response_headers_hash = params[:response_headers_hash] || {}
end
retrieve_failure() click to toggle source
# File lib/aranea/failure_repository.rb, line 22
def retrieve_failure
  Repository.get
end

Public Instance Methods

respond!() click to toggle source
# File lib/aranea/failure_repository.rb, line 40
def respond!
  case @response
  when "timeout"
    raise ::Faraday::TimeoutError, "Fake failure from Aranea"
  when "ssl_error"
    raise ::Faraday::SSLError, "Fake failure from Aranea"
  else
    ::Faraday::Response.new(
      status: @response.to_i,
      body: @response_hash.to_json,
      response_headers: @response_headers_hash
    )
  end
end
should_fail?(request_env, _app) click to toggle source
# File lib/aranea/failure_repository.rb, line 36
def should_fail?(request_env, _app)
  @pattern.match(request_env[:url].to_s)
end
to_s() click to toggle source
# File lib/aranea/failure_repository.rb, line 55
def to_s
  "Failure on #{@pattern.inspect} ending at approximately #{@expiration_date}"
end