Class: HTTPStub

Inherits:
Object
  • Object
show all
Defined in:
lib/httpstub.rb

Constant Summary collapse

@@server_list =
{}
@@thread_group =
nil
@@disable_logging =
true

Class Method Summary collapse

Class Method Details

.build_server(url) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/httpstub.rb', line 33

def self.build_server(url)
  uri = URI.parse(url)
  server = HTTPStubServer.new(uri.port, uri.scheme == "https")
  @@server_list[uri.port] = server

  Thread.start do
    server.start
  end
end

.clear_responsesObject



56
57
58
59
60
# File 'lib/httpstub.rb', line 56

def self.clear_responses
  @@server_list.values.each do |server|
    server.servlet.clear_responses
  end
end

.delete(url, metadata, body) ⇒ Object



75
76
77
# File 'lib/httpstub.rb', line 75

def self.delete(url, , body)
  stub(:delete, url, , body)
end

.disable_logging=(value) ⇒ Object



13
14
15
# File 'lib/httpstub.rb', line 13

def self.disable_logging=(value)
  @@disable_logging = value
end

.disable_logging?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/httpstub.rb', line 17

def self.disable_logging?
  @@disable_logging
end

.get(url, metadata, body) ⇒ Object



63
64
65
# File 'lib/httpstub.rb', line 63

def self.get(url, , body)
  stub(:get, url, , body)
end

.listen_on(urls) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/httpstub.rb', line 22

def self.listen_on(urls)
  clear_responses if @@thread_group

  unless @@thread_group
    @@thread_group = ThreadGroup.new
    [urls].flatten.each do |url|
      @@thread_group.add build_server(url)
    end
  end
end

.post(url, metadata, body) ⇒ Object



67
68
69
# File 'lib/httpstub.rb', line 67

def self.post(url, , body)
  stub(:post, url, , body)
end

.put(url, metadata, body) ⇒ Object



71
72
73
# File 'lib/httpstub.rb', line 71

def self.put(url, , body)
  stub(:put, url, , body)
end

.stop_serverObject



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/httpstub.rb', line 43

def self.stop_server
  if @@thread_group
    @@server_list.values.each do |server|
      server.servlet.clear_responses
      server.shutdown
    end

    @@thread_group.list.each { |th| th.join }
    @@thread_group = nil
    @@server_list.clear
  end
end

.stub(method, url, metadata, body) ⇒ Object



80
81
82
83
84
85
86
87
88
89
# File 'lib/httpstub.rb', line 80

def self.stub(method, url, , body)
  parsed_url = URI.parse(url)
  server = @@server_list[parsed_url.port]
  path = if parsed_url.query.nil? or parsed_url.query == ""
           parsed_url.path
         else
           "#{parsed_url.path}?#{parsed_url.query}"
         end
  server.servlet.send("stub_#{method}", path, , body)
end