class Mountebank::Imposter
Constants
- CREATE_PARAMS_HTTP
- CREATE_PARAMS_HTTPS
- CREATE_PARAMS_SMTP
- CREATE_PARAMS_TCP
- PROTOCOLS
- PROTOCOL_HTTP
- PROTOCOL_HTTPS
- PROTOCOL_SMTP
- PROTOCOL_TCP
Attributes
matches[R]
mode[R]
name[R]
port[R]
protocol[R]
requests[R]
stubs[R]
Public Class Methods
build(port, protocol=PROTOCOL_HTTP, options={})
click to toggle source
# File lib/mountebank/imposter.rb, line 26 def self.build(port, protocol=PROTOCOL_HTTP, options={}) raise 'Invalid port number' unless port.is_a? Integer raise 'Invalid protocol' unless PROTOCOLS.include?(protocol) data = {port: port, protocol: protocol}.merge(options) Mountebank::Imposter.new(data) end
create(port, protocol=PROTOCOL_HTTP, options={})
click to toggle source
# File lib/mountebank/imposter.rb, line 42 def self.create(port, protocol=PROTOCOL_HTTP, options={}) self.build(port, protocol, options).save! end
delete(port)
click to toggle source
# File lib/mountebank/imposter.rb, line 53 def self.delete(port) response = Network.delete("/imposters/#{port}") response.success? && !response.body.empty? end
find(port)
click to toggle source
# File lib/mountebank/imposter.rb, line 46 def self.find(port) imposter_data = Imposter.get_imposter_config(port) return Mountebank::Imposter.new(imposter_data) unless imposter_data.empty? false end
new(data={})
click to toggle source
# File lib/mountebank/imposter.rb, line 22 def initialize(data={}) set_attributes(data) end
Private Class Methods
get_imposter_config(port)
click to toggle source
# File lib/mountebank/imposter.rb, line 111 def self.get_imposter_config(port) response = Network.get("/imposters/#{port}") response.success? ? response.body : [] end
Public Instance Methods
add_stub(response=nil, predicate=nil)
click to toggle source
# File lib/mountebank/imposter.rb, line 69 def add_stub(response=nil, predicate=nil) responses, predicates = [], [] if response.is_a? Array responses + response elsif response.is_a? Mountebank::Stub::Response responses << response end if predicate.is_a? Array predicates + predicate elsif predicate.is_a? Mountebank::Stub::Predicate predicates << predicate end @stubs << Mountebank::Stub.create(responses, predicates) end
delete!()
click to toggle source
# File lib/mountebank/imposter.rb, line 58 def delete! Imposter.delete(@port) end
reload()
click to toggle source
# File lib/mountebank/imposter.rb, line 62 def reload data = Imposter.get_imposter_config(@port) set_attributes(data) unless data.empty? self end
replayable_data()
click to toggle source
# File lib/mountebank/imposter.rb, line 87 def replayable_data data = serializable_hash data.delete(:requests) data.delete(:matches) data end
save!()
click to toggle source
# File lib/mountebank/imposter.rb, line 34 def save! delete! response = Network.post('/imposters', replayable_data) return reload if response.success? false end
to_json(*args)
click to toggle source
# File lib/mountebank/imposter.rb, line 95 def to_json(*args) serializable_hash.to_json(*args) end
Private Instance Methods
serializable_hash()
click to toggle source
# File lib/mountebank/imposter.rb, line 101 def serializable_hash data = {port: @port, protocol: @protocol, name: @name} data[:stubs] = @stubs unless @stubs.empty? data[:requests] = @requests unless @requests.empty? data[:matches] = @matches unless @matches.empty? data[:mode] = @mode unless @mode.nil? data end
set_attributes(data)
click to toggle source
# File lib/mountebank/imposter.rb, line 116 def set_attributes(data) @port = data[:port] @protocol = data[:protocol] @name = data[:name] || "imposter_#{@port}" @stubs = [] if data[:stubs].respond_to?(:each) data[:stubs].each do |stub| stub = Mountebank::Stub.new(stub) unless stub.is_a? Mountebank::Stub @stubs << stub end end @requests = data[:requests] || [] @matches = data[:matches] || [] @mode = data[:mode] || nil end