# 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
# File lib/em-http/mock.rb, line 46 def self.activate! EventMachine.send(:remove_const, :HttpRequest) EventMachine.send(:const_set, :HttpRequest, MockHttpRequest) end
# File lib/em-http/mock.rb, line 102 def self.count(url, method, headers = {}) @@registry_count[RegisteredRequest.build(url, method, headers)] end
# File lib/em-http/mock.rb, line 51 def self.deactivate! EventMachine.send(:remove_const, :HttpRequest) EventMachine.send(:const_set, :HttpRequest, OriginalHttpRequest) end
# File lib/em-http/mock.rb, line 114 def self.increment_access(url, method, headers = {}) @@registry_count[RegisteredRequest.build(url, method, headers)] += 1 end
# 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
# File lib/em-http/mock.rb, line 70 def self.pass_through_requests @@pass_through_requests end
# File lib/em-http/mock.rb, line 66 def self.pass_through_requests=(pass_through_requests) @@pass_through_requests = pass_through_requests end
# 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
# 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
# File lib/em-http/mock.rb, line 106 def self.registered?(url, method, headers = {}) @@registry.key?(RegisteredRequest.build(url, method, headers)) end
# File lib/em-http/mock.rb, line 110 def self.registered_content(url, method, headers = {}) @@registry[RegisteredRequest.build(url, method, headers)] end
# File lib/em-http/mock.rb, line 56 def self.reset_counts! @@registry_count.clear end
# File lib/em-http/mock.rb, line 60 def self.reset_registry! @@registry.clear end
# File lib/em-http/mock.rb, line 39 def self.use activate! yield ensure deactivate! end