adhearsion 2.5.4 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/CHANGELOG.md +15 -0
- data/README.markdown +2 -1
- data/Rakefile +1 -6
- data/adhearsion.gemspec +4 -3
- data/features/cli_daemon.feature +2 -4
- data/features/cli_restart.feature +14 -5
- data/features/cli_start.feature +0 -2
- data/features/cli_stop.feature +15 -6
- data/lib/adhearsion.rb +21 -23
- data/lib/adhearsion/call.rb +49 -5
- data/lib/adhearsion/call_controller.rb +29 -11
- data/lib/adhearsion/call_controller/dial.rb +21 -9
- data/lib/adhearsion/call_controller/menu_dsl.rb +12 -12
- data/lib/adhearsion/call_controller/menu_dsl/array_match_calculator.rb +1 -1
- data/lib/adhearsion/call_controller/menu_dsl/fixnum_match_calculator.rb +1 -0
- data/lib/adhearsion/call_controller/menu_dsl/string_match_calculator.rb +1 -1
- data/lib/adhearsion/call_controller/output.rb +36 -7
- data/lib/adhearsion/call_controller/output/abstract_player.rb +4 -0
- data/lib/adhearsion/call_controller/record.rb +1 -0
- data/lib/adhearsion/cli_commands/ahn_command.rb +7 -4
- data/lib/adhearsion/cli_commands/plugin_command.rb +2 -0
- data/lib/adhearsion/generators.rb +2 -4
- data/lib/adhearsion/generators/app/templates/simon_game_spec.rb +20 -20
- data/lib/adhearsion/initializer.rb +2 -2
- data/lib/adhearsion/plugin.rb +6 -6
- data/lib/adhearsion/punchblock_plugin.rb +3 -4
- data/lib/adhearsion/punchblock_plugin/initializer.rb +2 -1
- data/lib/adhearsion/router.rb +7 -7
- data/lib/adhearsion/router/route.rb +10 -4
- data/lib/adhearsion/rspec.rb +2 -0
- data/lib/adhearsion/version.rb +1 -1
- data/spec/adhearsion/call_controller/dial_spec.rb +589 -557
- data/spec/adhearsion/call_controller/input_spec.rb +91 -91
- data/spec/adhearsion/call_controller/menu_dsl/array_match_calculator_spec.rb +29 -29
- data/spec/adhearsion/call_controller/menu_dsl/calculated_match_collection_spec.rb +6 -6
- data/spec/adhearsion/call_controller/menu_dsl/calculated_match_spec.rb +19 -19
- data/spec/adhearsion/call_controller/menu_dsl/fixnum_match_calculator_spec.rb +6 -6
- data/spec/adhearsion/call_controller/menu_dsl/match_calculator_spec.rb +1 -1
- data/spec/adhearsion/call_controller/menu_dsl/menu_builder_spec.rb +21 -17
- data/spec/adhearsion/call_controller/menu_dsl/menu_spec.rb +96 -83
- data/spec/adhearsion/call_controller/menu_dsl/range_match_calculator_spec.rb +5 -5
- data/spec/adhearsion/call_controller/menu_dsl/string_match_calculator_spec.rb +9 -9
- data/spec/adhearsion/call_controller/output/async_player_spec.rb +14 -4
- data/spec/adhearsion/call_controller/output/formatter_spec.rb +14 -14
- data/spec/adhearsion/call_controller/output/player_spec.rb +15 -5
- data/spec/adhearsion/call_controller/output_spec.rb +126 -78
- data/spec/adhearsion/call_controller/record_spec.rb +38 -26
- data/spec/adhearsion/call_controller/utility_spec.rb +11 -11
- data/spec/adhearsion/call_controller_spec.rb +176 -136
- data/spec/adhearsion/call_spec.rb +443 -218
- data/spec/adhearsion/calls_spec.rb +33 -33
- data/spec/adhearsion/configuration_spec.rb +61 -61
- data/spec/adhearsion/console_spec.rb +29 -29
- data/spec/adhearsion/events_spec.rb +14 -14
- data/spec/adhearsion/generators_spec.rb +1 -1
- data/spec/adhearsion/initializer_spec.rb +42 -42
- data/spec/adhearsion/logging_spec.rb +33 -33
- data/spec/adhearsion/outbound_call_spec.rb +69 -55
- data/spec/adhearsion/plugin_spec.rb +53 -44
- data/spec/adhearsion/process_spec.rb +21 -21
- data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +68 -52
- data/spec/adhearsion/punchblock_plugin_spec.rb +6 -6
- data/spec/adhearsion/router/evented_route_spec.rb +2 -2
- data/spec/adhearsion/router/openended_route_spec.rb +9 -9
- data/spec/adhearsion/router/route_spec.rb +61 -31
- data/spec/adhearsion/router/unaccepting_route_spec.rb +13 -13
- data/spec/adhearsion/router_spec.rb +47 -33
- data/spec/adhearsion/statistics/dump_spec.rb +6 -6
- data/spec/adhearsion/statistics_spec.rb +9 -9
- data/spec/adhearsion_spec.rb +23 -20
- data/spec/spec_helper.rb +3 -6
- data/spec/support/call_controller_test_helpers.rb +7 -7
- data/spec/support/initializer_stubs.rb +1 -1
- data/spec/support/punchblock_mocks.rb +1 -1
- metadata +22 -10
- data/features/support/utils.rb +0 -9
@@ -13,23 +13,23 @@ module Adhearsion
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'should trigger :stop_requested events on #shutdown' do
|
16
|
-
Events.
|
17
|
-
Events.
|
16
|
+
expect(Events).to receive(:trigger_immediately).once.with(:stop_requested).ordered
|
17
|
+
expect(Events).to receive(:trigger_immediately).once.with(:shutdown).ordered
|
18
18
|
Adhearsion::Process.booted
|
19
19
|
Adhearsion::Process.shutdown
|
20
20
|
sleep 0.2
|
21
21
|
end
|
22
22
|
|
23
23
|
it '#stop_when_zero_calls should wait until the list of active calls reaches 0' do
|
24
|
-
|
24
|
+
skip
|
25
25
|
calls = ThreadSafeArray.new
|
26
26
|
3.times do
|
27
27
|
fake_call = Object.new
|
28
|
-
fake_call.
|
28
|
+
expect(fake_call).to receive(:hangup).once
|
29
29
|
calls << fake_call
|
30
30
|
end
|
31
|
-
Adhearsion.
|
32
|
-
Adhearsion::Process.instance.
|
31
|
+
expect(Adhearsion).to receive(:active_calls).and_return calls
|
32
|
+
expect(Adhearsion::Process.instance).to receive(:final_shutdown).once
|
33
33
|
calls = []
|
34
34
|
3.times do
|
35
35
|
calls << Thread.new do
|
@@ -42,7 +42,7 @@ module Adhearsion
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'should terminate the process immediately on #force_stop' do
|
45
|
-
::Process.
|
45
|
+
expect(::Process).to receive(:exit).with(1).once.and_return true
|
46
46
|
Adhearsion::Process.force_stop
|
47
47
|
end
|
48
48
|
|
@@ -50,8 +50,8 @@ module Adhearsion
|
|
50
50
|
it "should hang up active calls" do
|
51
51
|
3.times do
|
52
52
|
fake_call = Call.new
|
53
|
-
fake_call.
|
54
|
-
fake_call.
|
53
|
+
allow(fake_call).to receive_messages :id => random_call_id
|
54
|
+
expect(fake_call).to receive(:hangup).once
|
55
55
|
Adhearsion.active_calls << fake_call
|
56
56
|
end
|
57
57
|
|
@@ -63,9 +63,9 @@ module Adhearsion
|
|
63
63
|
it "should trigger shutdown handlers synchronously" do
|
64
64
|
foo = lambda { |b| b }
|
65
65
|
|
66
|
-
foo.
|
67
|
-
foo.
|
68
|
-
foo.
|
66
|
+
expect(foo).to receive(:[]).once.with(:a).ordered
|
67
|
+
expect(foo).to receive(:[]).once.with(:b).ordered
|
68
|
+
expect(foo).to receive(:[]).once.with(:c).ordered
|
69
69
|
|
70
70
|
Events.shutdown { sleep 2; foo[:a] }
|
71
71
|
Events.shutdown { sleep 1; foo[:b] }
|
@@ -75,37 +75,37 @@ module Adhearsion
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should stop the console" do
|
78
|
-
Console.
|
78
|
+
expect(Console).to receive(:stop).once
|
79
79
|
Adhearsion::Process.final_shutdown
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'should handle subsequent :shutdown events in the correct order' do
|
84
84
|
Adhearsion::Process.booted
|
85
|
-
Adhearsion::Process.state_name.
|
85
|
+
expect(Adhearsion::Process.state_name).to be :running
|
86
86
|
Adhearsion::Process.shutdown
|
87
|
-
Adhearsion::Process.state_name.
|
87
|
+
expect(Adhearsion::Process.state_name).to be :stopping
|
88
88
|
Adhearsion::Process.shutdown
|
89
|
-
Adhearsion::Process.state_name.
|
89
|
+
expect(Adhearsion::Process.state_name).to be :rejecting
|
90
90
|
Adhearsion::Process.shutdown
|
91
|
-
Adhearsion::Process.state_name.
|
92
|
-
Adhearsion::Process.instance.
|
91
|
+
expect(Adhearsion::Process.state_name).to be :stopped
|
92
|
+
expect(Adhearsion::Process.instance).to receive(:die_now!).once
|
93
93
|
Adhearsion::Process.shutdown
|
94
94
|
sleep 0.2
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'should forcibly kill the Adhearsion process on :force_stop' do
|
98
|
-
::Process.
|
98
|
+
expect(::Process).to receive(:exit).once.with(1)
|
99
99
|
Adhearsion::Process.force_stop
|
100
100
|
end
|
101
101
|
|
102
102
|
describe "#fqdn" do
|
103
103
|
it "should be a string" do
|
104
|
-
Adhearsion::Process.fqdn.
|
104
|
+
expect(Adhearsion::Process.fqdn).to be_a String
|
105
105
|
end
|
106
106
|
|
107
107
|
context "when networking issues crop up" do
|
108
|
-
before { Socket.
|
108
|
+
before { allow(Socket).to receive(:gethostbyname).and_raise(SocketError) }
|
109
109
|
|
110
110
|
it "should raise SocketError" do
|
111
111
|
expect { Adhearsion::Process.fqdn }.to raise_error(SocketError)
|
@@ -23,7 +23,7 @@ module Adhearsion
|
|
23
23
|
|
24
24
|
def initialize_punchblock(options = {})
|
25
25
|
reset_default_config
|
26
|
-
Initializer.
|
26
|
+
allow(Initializer).to receive(:connect)
|
27
27
|
Adhearsion.config.punchblock do |config|
|
28
28
|
config.platform = options[:platform] if options.has_key?(:platform)
|
29
29
|
config.username = options[:username] if options.has_key?(:username)
|
@@ -47,71 +47,71 @@ module Adhearsion
|
|
47
47
|
let(:mock_client) { double 'Client' }
|
48
48
|
|
49
49
|
before do
|
50
|
-
mock_call.
|
50
|
+
allow(mock_call).to receive_messages :id => call_id
|
51
51
|
mock_client.as_null_object
|
52
|
-
mock_client.
|
52
|
+
allow(mock_client).to receive_messages :event_handler= => true
|
53
53
|
Events.refresh!
|
54
|
-
Adhearsion::Process.
|
55
|
-
::Process.
|
54
|
+
allow(Adhearsion::Process).to receive_messages :fqdn => 'hostname'
|
55
|
+
allow(::Process).to receive_messages :pid => 1234
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "starts the client with the default values" do
|
59
59
|
subject { initialize_punchblock }
|
60
60
|
|
61
61
|
it "should set properly the username value" do
|
62
|
-
subject.username.
|
62
|
+
expect(subject.username).to eq('usera@127.0.0.1')
|
63
63
|
end
|
64
64
|
|
65
65
|
it "should set properly the password value" do
|
66
|
-
subject.password.
|
66
|
+
expect(subject.password).to eq('1')
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should set properly the host value" do
|
70
|
-
subject.host.
|
70
|
+
expect(subject.host).to be_nil
|
71
71
|
end
|
72
72
|
|
73
73
|
it "should set properly the port value" do
|
74
|
-
subject.port.
|
74
|
+
expect(subject.port).to be_nil
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should set properly the certs_directory value" do
|
78
|
-
subject.certs_directory.
|
78
|
+
expect(subject.certs_directory).to be_nil
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should set properly the root_domain value" do
|
82
|
-
subject.root_domain.
|
82
|
+
expect(subject.root_domain).to be_nil
|
83
83
|
end
|
84
84
|
|
85
85
|
it "should properly set the reconnect_attempts value" do
|
86
|
-
subject.reconnect_attempts.
|
86
|
+
expect(subject.reconnect_attempts).to eq(1.0/0.0)
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should properly set the reconnect_timer value" do
|
90
|
-
subject.reconnect_timer.
|
90
|
+
expect(subject.reconnect_timer).to eq(5)
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
94
|
it "starts the client with the correct resource" do
|
95
95
|
username = "usera@127.0.0.1/hostname-1234"
|
96
96
|
|
97
|
-
Punchblock::Connection::XMPP.
|
97
|
+
expect(Punchblock::Connection::XMPP).to receive(:new).once.with(hash_including :username => username).and_return mock_client
|
98
98
|
initialize_punchblock
|
99
99
|
end
|
100
100
|
|
101
101
|
context "when the fqdn is not available" do
|
102
102
|
it "should use the local hostname instead" do
|
103
|
-
Adhearsion::Process.
|
104
|
-
Socket.
|
103
|
+
allow(Adhearsion::Process).to receive(:fqdn).and_raise SocketError
|
104
|
+
allow(Socket).to receive(:gethostname).and_return 'local_hostname'
|
105
105
|
|
106
106
|
username = "usera@127.0.0.1/local_hostname-1234"
|
107
107
|
|
108
|
-
Punchblock::Connection::XMPP.
|
108
|
+
expect(Punchblock::Connection::XMPP).to receive(:new).once.with(hash_including :username => username).and_return mock_client
|
109
109
|
initialize_punchblock
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
113
|
it "starts the client with any overridden settings" do
|
114
|
-
Punchblock::Connection::XMPP.
|
114
|
+
expect(Punchblock::Connection::XMPP).to receive(:new).once.with(username: 'userb@127.0.0.1/foo', password: '123', host: 'foo.bar.com', port: 200, certs: '/foo/bar', connection_timeout: 20, root_domain: 'foo.com').and_return mock_client
|
115
115
|
initialize_punchblock username: 'userb@127.0.0.1/foo', password: '123', host: 'foo.bar.com', port: 200, certs_directory: '/foo/bar', connection_timeout: 20, root_domain: 'foo.com'
|
116
116
|
end
|
117
117
|
|
@@ -119,12 +119,12 @@ module Adhearsion
|
|
119
119
|
it 'should block until the connection is established' do
|
120
120
|
reset_default_config
|
121
121
|
mock_connection = double :mock_connection
|
122
|
-
mock_connection.
|
123
|
-
Punchblock::Client.
|
124
|
-
mock_connection.
|
122
|
+
expect(mock_connection).to receive(:register_event_handler).once
|
123
|
+
expect(Punchblock::Client).to receive(:new).once.and_return mock_connection
|
124
|
+
expect(mock_connection).to receive(:run).once
|
125
125
|
t = Thread.new { Initializer.init; Initializer.run }
|
126
126
|
t.join 5
|
127
|
-
t.status.
|
127
|
+
expect(t.status).to eq("sleep")
|
128
128
|
Events.trigger_immediately :punchblock, Punchblock::Connection::Connected.new
|
129
129
|
t.join
|
130
130
|
end
|
@@ -135,8 +135,8 @@ module Adhearsion
|
|
135
135
|
Adhearsion::Process.reset
|
136
136
|
Initializer.config = reset_default_config
|
137
137
|
Initializer.config.reconnect_attempts = 1
|
138
|
-
Adhearsion::Logging.get_logger(Initializer).
|
139
|
-
Initializer.
|
138
|
+
expect(Adhearsion::Logging.get_logger(Initializer)).to receive(:fatal).at_most(:once)
|
139
|
+
allow(Initializer).to receive(:client).and_return mock_client
|
140
140
|
end
|
141
141
|
|
142
142
|
after :each do
|
@@ -145,29 +145,29 @@ module Adhearsion
|
|
145
145
|
|
146
146
|
it 'should reset the Adhearsion process state to "booting"' do
|
147
147
|
Adhearsion::Process.booted
|
148
|
-
Adhearsion::Process.state_name.
|
149
|
-
mock_client.
|
150
|
-
Adhearsion::Process.
|
148
|
+
expect(Adhearsion::Process.state_name).to eq(:running)
|
149
|
+
allow(mock_client).to receive(:run).and_raise Punchblock::DisconnectedError
|
150
|
+
expect(Adhearsion::Process).to receive(:reset).at_least(:once)
|
151
151
|
Initializer.connect_to_server
|
152
152
|
end
|
153
153
|
|
154
154
|
it 'should retry the connection the specified number of times' do
|
155
155
|
Initializer.config.reconnect_attempts = 3
|
156
|
-
mock_client.
|
156
|
+
allow(mock_client).to receive(:run).and_raise Punchblock::DisconnectedError
|
157
157
|
Initializer.connect_to_server
|
158
|
-
Initializer.attempts.
|
158
|
+
expect(Initializer.attempts).to eq(3)
|
159
159
|
end
|
160
160
|
|
161
161
|
it 'should preserve a Punchblock::ProtocolError exception and give up' do
|
162
|
-
mock_client.
|
162
|
+
allow(mock_client).to receive(:run).and_raise Punchblock::ProtocolError
|
163
163
|
expect { Initializer.connect_to_server }.to raise_error Punchblock::ProtocolError
|
164
164
|
end
|
165
165
|
|
166
166
|
it 'should not attempt to reconnect if Adhearsion is shutting down' do
|
167
167
|
Adhearsion::Process.booted
|
168
168
|
Adhearsion::Process.shutdown
|
169
|
-
mock_client.
|
170
|
-
Initializer.
|
169
|
+
allow(mock_client).to receive(:run).and_raise Punchblock::DisconnectedError
|
170
|
+
expect { Initializer.connect_to_server }.not_to raise_error
|
171
171
|
end
|
172
172
|
end
|
173
173
|
|
@@ -175,7 +175,7 @@ module Adhearsion
|
|
175
175
|
let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :certs => nil, :connection_timeout => 20, :root_domain => 'foo.com'} }
|
176
176
|
|
177
177
|
it 'should start an Asterisk PB connection' do
|
178
|
-
Punchblock::Connection::Asterisk.
|
178
|
+
expect(Punchblock::Connection::Asterisk).to receive(:new).once.with(overrides).and_return mock_client
|
179
179
|
initialize_punchblock overrides.merge(:platform => :asterisk)
|
180
180
|
end
|
181
181
|
end
|
@@ -184,13 +184,13 @@ module Adhearsion
|
|
184
184
|
let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :certs => nil, :connection_timeout => 20, :root_domain => 'foo.com'} }
|
185
185
|
|
186
186
|
it 'should start a FreeSWITCH PB connection' do
|
187
|
-
Punchblock::Connection::Freeswitch.
|
187
|
+
expect(Punchblock::Connection::Freeswitch).to receive(:new).once.with(overrides).and_return mock_client
|
188
188
|
initialize_punchblock overrides.merge(:platform => :freeswitch)
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
192
|
it 'should place events from Punchblock into the event handler' do
|
193
|
-
Events.instance.
|
193
|
+
expect(Events.instance).to receive(:trigger).once.with(:punchblock, offer)
|
194
194
|
initialize_punchblock
|
195
195
|
Initializer.client.handle_event offer
|
196
196
|
end
|
@@ -198,15 +198,15 @@ module Adhearsion
|
|
198
198
|
describe "dispatching an offer" do
|
199
199
|
before do
|
200
200
|
initialize_punchblock
|
201
|
-
Adhearsion::Process.
|
202
|
-
Adhearsion::Call.
|
201
|
+
expect(Adhearsion::Process).to receive(:state_name).once.and_return process_state
|
202
|
+
expect(Adhearsion::Call).to receive(:new).once.and_return mock_call
|
203
203
|
end
|
204
204
|
|
205
205
|
context "when the Adhearsion::Process is :booting" do
|
206
206
|
let(:process_state) { :booting }
|
207
207
|
|
208
208
|
it 'should reject a call with cause :declined' do
|
209
|
-
mock_call.
|
209
|
+
expect(mock_call).to receive(:reject).once.with(:decline)
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
@@ -218,7 +218,7 @@ module Adhearsion
|
|
218
218
|
Adhearsion.router do
|
219
219
|
route 'foobar', Class.new
|
220
220
|
end
|
221
|
-
Adhearsion.router.
|
221
|
+
expect(Adhearsion.router).to receive(:handle).once.with mock_call
|
222
222
|
end
|
223
223
|
end
|
224
224
|
end
|
@@ -227,7 +227,7 @@ module Adhearsion
|
|
227
227
|
let(:process_state) { :rejecting }
|
228
228
|
|
229
229
|
it 'should reject a call with cause :declined' do
|
230
|
-
mock_call.
|
230
|
+
expect(mock_call).to receive(:reject).once.with(:decline)
|
231
231
|
end
|
232
232
|
end
|
233
233
|
|
@@ -235,7 +235,7 @@ module Adhearsion
|
|
235
235
|
let(:process_state) { :foobar }
|
236
236
|
|
237
237
|
it 'should reject a call with cause :error' do
|
238
|
-
mock_call.
|
238
|
+
expect(mock_call).to receive(:reject).once.with(:error)
|
239
239
|
end
|
240
240
|
end
|
241
241
|
|
@@ -246,14 +246,14 @@ module Adhearsion
|
|
246
246
|
let(:component) { double 'ComponentNode' }
|
247
247
|
let(:mock_event) { double 'Event' }
|
248
248
|
|
249
|
-
before { mock_event.
|
249
|
+
before { allow(mock_event).to receive_messages target_call_id: call_id, source: component }
|
250
250
|
|
251
251
|
before do
|
252
252
|
initialize_punchblock
|
253
253
|
end
|
254
254
|
|
255
255
|
it "should place the event in the call's inbox" do
|
256
|
-
component.
|
256
|
+
expect(component).to receive(:trigger_event_handler).once.with mock_event
|
257
257
|
Events.trigger_immediately :punchblock, mock_event
|
258
258
|
end
|
259
259
|
end
|
@@ -261,7 +261,7 @@ module Adhearsion
|
|
261
261
|
describe "dispatching a call event" do
|
262
262
|
let(:mock_event) { double 'Event' }
|
263
263
|
|
264
|
-
before { mock_event.
|
264
|
+
before { allow(mock_event).to receive_messages target_call_id: call_id }
|
265
265
|
|
266
266
|
describe "with an active call" do
|
267
267
|
before do
|
@@ -269,15 +269,31 @@ module Adhearsion
|
|
269
269
|
Adhearsion.active_calls << mock_call
|
270
270
|
end
|
271
271
|
|
272
|
-
it "should
|
273
|
-
|
272
|
+
it "should forward the event to the call actor" do
|
273
|
+
events = []
|
274
|
+
mock_call.register_event_handler do |event|
|
275
|
+
events << event
|
276
|
+
end
|
277
|
+
Initializer.dispatch_call_event mock_event
|
278
|
+
sleep 0.5
|
279
|
+
expect(events).to eql([mock_event])
|
280
|
+
end
|
281
|
+
|
282
|
+
it "should not block on the call handling the event" do
|
283
|
+
|
284
|
+
mock_call.register_event_handler do |event|
|
285
|
+
sleep 5
|
286
|
+
end
|
287
|
+
start_time = Time.now
|
274
288
|
Initializer.dispatch_call_event mock_event
|
289
|
+
sleep 0.5
|
290
|
+
expect(Time.now - start_time).to be < 1
|
275
291
|
end
|
276
292
|
end
|
277
293
|
|
278
294
|
describe "with an inactive call" do
|
279
295
|
it "should log a warning" do
|
280
|
-
Adhearsion::Logging.get_logger(Initializer).
|
296
|
+
expect(Adhearsion::Logging.get_logger(Initializer)).to receive(:warn).once.with("Event received for inactive call #{call_id}: #{mock_event.inspect}")
|
281
297
|
Initializer.dispatch_call_event mock_event
|
282
298
|
end
|
283
299
|
end
|
@@ -289,7 +305,7 @@ module Adhearsion
|
|
289
305
|
end
|
290
306
|
|
291
307
|
it "should log a warning" do
|
292
|
-
Adhearsion::Logging.get_logger(Initializer).
|
308
|
+
expect(Adhearsion::Logging.get_logger(Initializer)).to receive(:warn).once.with("Event received for inactive call #{call_id}: #{mock_event.inspect}")
|
293
309
|
Initializer.dispatch_call_event mock_event
|
294
310
|
end
|
295
311
|
end
|
@@ -309,11 +325,11 @@ module Adhearsion
|
|
309
325
|
end
|
310
326
|
|
311
327
|
it "should set properly the username value" do
|
312
|
-
subject.username.
|
328
|
+
expect(subject.username).to eq('userb@127.0.0.1')
|
313
329
|
end
|
314
330
|
|
315
331
|
it "should set properly the password value" do
|
316
|
-
subject.password.
|
332
|
+
expect(subject.password).to eq('abc123')
|
317
333
|
end
|
318
334
|
end
|
319
335
|
end
|
@@ -332,8 +348,8 @@ module Adhearsion
|
|
332
348
|
|
333
349
|
Initializer.handle_event ami_event
|
334
350
|
|
335
|
-
latch.wait(1).
|
336
|
-
result.
|
351
|
+
expect(latch.wait(1)).to be true
|
352
|
+
expect(result).to be ami_event
|
337
353
|
end
|
338
354
|
end
|
339
355
|
end
|
@@ -6,7 +6,7 @@ module Adhearsion
|
|
6
6
|
describe PunchblockPlugin do
|
7
7
|
it "should make the client accessible from the Initializer" do
|
8
8
|
PunchblockPlugin::Initializer.client = :foo
|
9
|
-
PunchblockPlugin.client.
|
9
|
+
expect(PunchblockPlugin.client).to be :foo
|
10
10
|
PunchblockPlugin::Initializer.client = nil
|
11
11
|
end
|
12
12
|
|
@@ -15,11 +15,11 @@ module Adhearsion
|
|
15
15
|
let(:response) { :foo }
|
16
16
|
let(:mock_client) { double 'Client' }
|
17
17
|
|
18
|
-
let(:execute_expectation) { PunchblockPlugin.client.
|
18
|
+
let(:execute_expectation) { expect(PunchblockPlugin.client).to receive(:execute_command).once }
|
19
19
|
|
20
20
|
before do
|
21
21
|
PunchblockPlugin::Initializer.client = mock_client
|
22
|
-
message.
|
22
|
+
allow(message).to receive_messages :execute! => true
|
23
23
|
message.response = response
|
24
24
|
execute_expectation
|
25
25
|
end
|
@@ -38,12 +38,12 @@ module Adhearsion
|
|
38
38
|
slow_command.response = response
|
39
39
|
end
|
40
40
|
PunchblockPlugin.execute_component slow_command
|
41
|
-
(Time.now - starting_time).
|
41
|
+
expect(Time.now - starting_time).to be >= 0.4
|
42
42
|
end
|
43
43
|
|
44
44
|
describe "with a successful response" do
|
45
45
|
it "returns the executed command" do
|
46
|
-
PunchblockPlugin.execute_component(message).
|
46
|
+
expect(PunchblockPlugin.execute_component(message)).to be message
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
@@ -51,7 +51,7 @@ module Adhearsion
|
|
51
51
|
let(:response) { Exception.new }
|
52
52
|
|
53
53
|
it "raises the error" do
|
54
|
-
|
54
|
+
expect { PunchblockPlugin.execute_component message }.to raise_error Exception
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|