class EventMachine::MockHttpRequest

Protected Instance Methods

real_send_request(&blk) click to toggle source
Alias for: send_request
send_request(&blk) click to toggle source
# File lib/em-http/mock.rb, line 121
def send_request(&blk)
  query = "#{@req.uri.scheme}://#{@req.uri.host}:#{@req.uri.port}#{encode_query(@req.uri, @req.options[:query])}"
  headers = @req.options[:head]
  if self.class.registered?(query, @req.method, headers)
    self.class.increment_access(query, @req.method, headers)
    client = FakeHttpClient.new(nil)
    content = self.class.registered_content(query, @req.method, headers)
    client.setup(content, @req.uri)
    client
  elsif @@pass_through_requests
    real_send_request
  else
    raise "this request #{query} for method #{@req.method} with the headers #{@req.options[:head].inspect} isn't registered, and pass_through_requests is current set to false"
  end
end
Also aliased as: real_send_request

Public Class Methods

activate!() click to toggle source
# File lib/em-http/mock.rb, line 46
def self.activate!
  EventMachine.send(:remove_const, :HttpRequest)
  EventMachine.send(:const_set, :HttpRequest, MockHttpRequest)
end
count(url, method, headers = {}) click to toggle source
# File lib/em-http/mock.rb, line 102
def self.count(url, method, headers = {})
  @@registry_count[RegisteredRequest.build(url, method, headers)]
end
deactivate!() click to toggle source
# File lib/em-http/mock.rb, line 51
def self.deactivate!
  EventMachine.send(:remove_const, :HttpRequest)
  EventMachine.send(:const_set, :HttpRequest, OriginalHttpRequest)
end
increment_access(url, method, headers = {}) click to toggle source
# File lib/em-http/mock.rb, line 114
def self.increment_access(url, method, headers = {})
  @@registry_count[RegisteredRequest.build(url, method, headers)] += 1
end
parse_register_args(args, &proc) click to toggle source
# File lib/em-http/mock.rb, line 74
def self.parse_register_args(args, &proc)
  args << proc{|client| proc.call(client); ''} if proc
  headers, data = case args.size
  when 3
    args[2].is_a?(Hash) ?
      [args[2][:headers], args[2][:data]] :
      [{}, args[2]]
  when 4
    [args[2], args[3]]
  else
    raise
  end

  url = args[0]
  method = args[1]
  [headers, url, method, data]
end
pass_through_requests() click to toggle source
# File lib/em-http/mock.rb, line 70
def self.pass_through_requests
  @@pass_through_requests
end
pass_through_requests=(pass_through_requests) click to toggle source
# File lib/em-http/mock.rb, line 66
def self.pass_through_requests=(pass_through_requests)
  @@pass_through_requests = pass_through_requests
end
register(*args, &proc) click to toggle source
# File lib/em-http/mock.rb, line 92
def self.register(*args, &proc)
  headers, url, method, data = parse_register_args(args, &proc)
  @@registry[RegisteredRequest.build(url, method, headers)] = data
end
register_file(*args) click to toggle source
# File lib/em-http/mock.rb, line 97
def self.register_file(*args)
  headers, url, method, data = parse_register_args(args)
  @@registry[RegisteredRequest.build(url, method, headers)] = File.read(data)
end
registered?(url, method, headers = {}) click to toggle source
# File lib/em-http/mock.rb, line 106
def self.registered?(url, method, headers = {})
  @@registry.key?(RegisteredRequest.build(url, method, headers))
end
registered_content(url, method, headers = {}) click to toggle source
# File lib/em-http/mock.rb, line 110
def self.registered_content(url, method, headers = {})
  @@registry[RegisteredRequest.build(url, method, headers)]
end
reset_counts!() click to toggle source
# File lib/em-http/mock.rb, line 56
def self.reset_counts!
  @@registry_count.clear
end
reset_registry!() click to toggle source
# File lib/em-http/mock.rb, line 60
def self.reset_registry!
  @@registry.clear
end
use() { || ... } click to toggle source
# File lib/em-http/mock.rb, line 39
def self.use
  activate!
  yield
ensure
  deactivate!
end