Class: MockWebService::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/mock-web-service/server.rb

Constant Summary collapse

@@requests =
[]
@@responses =
{}

Instance Method Summary collapse

Instance Method Details

#add(response, opts = ResponseOptions.new) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/mock-web-service/server.rb', line 41

def add(response, opts = ResponseOptions.new)
  @@responses[opts.path] = response
  set_response(opts) do
    status(opts.status)
    content_type opts.content_type
    headers opts.headers
    @@requests.push(request)
    return @@responses[opts.path]
  end
end

#add_response(response) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/mock-web-service/server.rb', line 24

def add_response(response)
  warn "[DEPRECATION] `add_response` is no longer supported.  Please use `add` instead."
  Sinatra::Base.reset!
  Sinatra::Base.post '*/*' do
      content_type 'text/xml'
      @@requests.push(request.body.read)
      response
  end
end

#add_soap_response(response) ⇒ Object



34
35
36
37
38
39
# File 'lib/mock-web-service/server.rb', line 34

def add_soap_response(response)
  set_response(ResponseOptions.new {|opts| opts.path = '*/*'; opts.method = :post}) do
    content_type 'text/xml'
    response
  end
end

#clear_requestsObject



14
15
16
# File 'lib/mock-web-service/server.rb', line 14

def clear_requests
  @@requests = []
end

#get_all_requestsObject



10
11
12
# File 'lib/mock-web-service/server.rb', line 10

def get_all_requests
  @@requests
end

#get_latest_requestObject



6
7
8
# File 'lib/mock-web-service/server.rb', line 6

def get_latest_request
  @@requests.pop
end

#reset_serverObject



62
63
64
65
66
# File 'lib/mock-web-service/server.rb', line 62

def reset_server
  Sinatra::Base.reset!
  @@requests = []
  @@responses = {}
end

#set_response(opts, &block) ⇒ Object



68
69
70
# File 'lib/mock-web-service/server.rb', line 68

def set_response(opts, &block)
  Sinatra::Base.send(opts.method, opts.path, &block)
end

#start(overrides = {}) ⇒ Object



18
19
20
21
22
# File 'lib/mock-web-service/server.rb', line 18

def start(overrides = {})
  disable_logging = {AccessLog: []}
  options = {:bind => '0.0.0.0', :server_settings => disable_logging}.merge(overrides)
  Async.instance.run { Sinatra::Base.start!(options)}
end

#wait_for_next_request(timeout_seconds = 5, retry_interval = 0.5) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/mock-web-service/server.rb', line 52

def wait_for_next_request(timeout_seconds = 5, retry_interval = 0.5)
  start = Time.now
  current_requests_count = @@requests.length
  while (@@requests.length == current_requests_count)
    break if (Time.now - start).to_i >= timeout_seconds
    sleep(retry_interval)
  end
  @@requests.last
end