Class: Factor::Connector::ServiceInstance

Inherits:
Instance
  • Object
show all
Includes:
RSpec
Defined in:
lib/factor-connector-api/test.rb,
lib/instances/service_instance.rb

Instance Attribute Summary collapse

Attributes inherited from Instance

#instance_id

Instance Method Summary collapse

Methods inherited from Instance

#debug, #error, #id, #info, #log, #respond, #warn

Constructor Details

#initialize(options = {}) ⇒ ServiceInstance

Returns a new instance of ServiceInstance.



22
23
24
25
26
27
# File 'lib/instances/service_instance.rb', line 22

def initialize(options = {})
  @listener_instances = {}
  @action_instances   = {}
  @instance_id        = SecureRandom.hex
  super(options)
end

Instance Attribute Details

#action_instances ⇒ Object

Returns the value of attribute action_instances.



20
21
22
# File 'lib/instances/service_instance.rb', line 20

def action_instances
  @action_instances
end

#callback ⇒ Object

Returns the value of attribute callback.



20
21
22
# File 'lib/instances/service_instance.rb', line 20

def callback
  @callback
end

#definition ⇒ Object

Returns the value of attribute definition.



20
21
22
# File 'lib/instances/service_instance.rb', line 20

def definition
  @definition
end

#listener_instances ⇒ Object

Returns the value of attribute listener_instances.



20
21
22
# File 'lib/instances/service_instance.rb', line 20

def listener_instances
  @listener_instances
end

#step_data ⇒ Object

Returns the value of attribute step_data.



20
21
22
# File 'lib/instances/service_instance.rb', line 20

def step_data
  @step_data
end

Instance Method Details

#call_action(action_id, params) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/instances/service_instance.rb', line 34

def call_action(action_id,params)
  action_instance = ActionInstance.new
  action_instance.service_id  = self.id
  action_instance.instance_id = @instance_id
  action_instance.definition  = @definition.actions[action_id]
  action_instance.callback    = @callback
  action_instances[action_id] = action_instance
  action_instance.async.start(params)
end

#call_hook(listener_id, hook_id, data, request, response) ⇒ Object



29
30
31
32
# File 'lib/instances/service_instance.rb', line 29

def call_hook(listener_id,hook_id,data,request,response)
  listener_instance = @listener_instances[listener_id]
  listener_instance.async.call_web_hook(hook_id,data,request,response)
end

#expect_error(options = {}) ⇒ Object



49
50
51
52
53
54
# File 'lib/factor-connector-api/test.rb', line 49

def expect_error(options={})
  expect_response(options) do |log|
    logs_present = log[:type]=='log' && log[:status]=='error'
    options[:message] ? log[:message] == options[:message] : logs_present
  end
end

#expect_fail(options = {}) ⇒ Object



29
30
31
32
33
# File 'lib/factor-connector-api/test.rb', line 29

def expect_fail(options={})
  expect_response(options) do |log|
    log[:type]=='fail'
  end
end

#expect_info(options = {}) ⇒ Object



35
36
37
38
39
40
# File 'lib/factor-connector-api/test.rb', line 35

def expect_info(options={})
  expect_response(options) do |log|
    logs_present = log[:type]=='log' && log[:status]=='info'
    options[:message] ? log[:message] == options[:message] : logs_present
  end
end

#expect_response(options = {}, &block) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/factor-connector-api/test.rb', line 15

def expect_response(options={}, &block)
  Wrong::eventually options do
    @logs.any? do |log|
      block.call(log)
    end
  end
end

#expect_return(options = {}) ⇒ Object



23
24
25
26
27
# File 'lib/factor-connector-api/test.rb', line 23

def expect_return(options={})
  expect_response(options) do |log|
    log[:type]=='return' && log[:payload]
  end
end

#expect_warn(options = {}) ⇒ Object



42
43
44
45
46
47
# File 'lib/factor-connector-api/test.rb', line 42

def expect_warn(options={})
  expect_response(options) do |log|
    logs_present = log[:type]=='log' && log[:status]=='warn'
    options[:message] ? log[:message] == options[:message] : logs_present
  end
end

#has_action?(action_id) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/instances/service_instance.rb', line 72

def has_action?(action_id)
  @definition.actions.include?(action_id)
end

#has_listener?(listener_id) ⇒ Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/instances/service_instance.rb', line 76

def has_listener?(listener_id)
  @definition.listeners.include?(listener_id)
end

#start_listener(listener_id, params) ⇒ Object



44
45
46
47
48
49
50
51
52
# File 'lib/instances/service_instance.rb', line 44

def start_listener(listener_id,params)
  listener_instance = ListenerInstance.new
  listener_instance.service_id  = self.id
  listener_instance.instance_id = @instance_id
  listener_instance.definition  = @definition.listeners[listener_id]
  listener_instance.callback    = @callback
  @listener_instances[listener_id]=listener_instance
  listener_instance.async.start(params)
end

#stop_action(action_id) ⇒ Object



65
66
67
68
69
70
# File 'lib/instances/service_instance.rb', line 65

def stop_action(action_id)
  if @action_instances[action_id]
    @action_instances[action_id].terminate
    @action_instances.delete action_id
  end
end

#stop_listener(listener_id) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/instances/service_instance.rb', line 54

def stop_listener(listener_id)
  if !@listener_instances[listener_id]
    warn "Listener isn't running, no need to stop"
    respond type:'stopped'
  else
    @listener_instances[listener_id].stop
    @listener_instances[listener_id].terminate
    @listener_instances.delete listener_id
  end
end

#test_action(action_name, params = {}, &block) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/factor-connector-api/test.rb', line 56

def test_action(action_name, params={}, &block)

  @logs = []
  self.callback = proc do |action_response|
    @logs << action_response
  end
  call_action('list',params)

  instance_exec &block
end