wamp_client 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,200 @@
1
+ require 'spec_helper'
2
+ require "rspec/em"
3
+ require 'websocket-eventmachine-client'
4
+ require 'faye/websocket'
5
+
6
+ describe WampClient::Transport do
7
+ describe WampClient::Transport::EventMachineBase do
8
+ it '#start/stop' do
9
+ value = 0
10
+ described_class.start_event_machine do
11
+ EM.tick_loop do
12
+ value += 1
13
+ described_class.stop_event_machine if value == 10
14
+ end
15
+ end
16
+
17
+ expect(value).to eq(10)
18
+ end
19
+
20
+ context '#add_timer' do
21
+ include RSpec::EM::FakeClock
22
+
23
+ before { clock.stub }
24
+ after { clock.reset }
25
+
26
+ it 'adds a timer with the class method' do
27
+ value = 0
28
+ described_class.add_timer(3000) do
29
+ value = 1
30
+ end
31
+
32
+ expect(value).to eq(0)
33
+ clock.tick(1)
34
+ expect(value).to eq(0)
35
+ clock.tick(1)
36
+ expect(value).to eq(0)
37
+ clock.tick(1)
38
+ expect(value).to eq(1)
39
+ end
40
+
41
+ it 'adds a timer with the instance method' do
42
+ transport = described_class.new({})
43
+
44
+ value = 0
45
+ transport.add_timer(2000) do
46
+ value = 1
47
+ end
48
+
49
+ expect(value).to eq(0)
50
+ clock.tick(1)
51
+ expect(value).to eq(0)
52
+ clock.tick(1)
53
+ expect(value).to eq(1)
54
+ end
55
+ end
56
+ end
57
+
58
+ context 'transports' do
59
+ let(:test_uri) { 'wss://router.examples.com' }
60
+ let(:test_proxy) { 'http://proxy.examples.com' }
61
+ let(:options) {
62
+ {
63
+ uri: test_uri,
64
+ headers: {}
65
+ }
66
+ }
67
+
68
+ describe WampClient::Transport::WebSocketEventMachine do
69
+ include RSpec::EM::FakeClock
70
+ before { clock.stub }
71
+ after { clock.reset }
72
+
73
+ let(:transport) { described_class.new(options) }
74
+ let(:socket) { transport.socket }
75
+ before(:each) {
76
+ allow(WebSocket::EventMachine::Client).to receive(:connect) { |options|
77
+ SpecHelper::WebSocketEventMachineClientStub.new
78
+ }
79
+
80
+ transport.connect
81
+ clock.tick(1) # Simulate connecting
82
+ }
83
+
84
+ it 'initializes' do
85
+ expect(transport.uri).to eq(test_uri)
86
+ end
87
+
88
+ it 'connects to the router' do
89
+ expect(transport.connected?).to eq(true)
90
+ end
91
+
92
+ it 'disconnects from the router' do
93
+ value = false
94
+ transport.on(:close) do
95
+ value = true
96
+ end
97
+
98
+ transport.disconnect
99
+
100
+ expect(transport.connected?).to eq(false)
101
+ expect(value).to eq(true)
102
+ end
103
+
104
+ it 'sends a message' do
105
+ transport.send_message({test: 'value'})
106
+ expect(socket.last_message).to eq('{"test":"value"}')
107
+ end
108
+
109
+ it 'receives a message' do
110
+ message = nil
111
+ transport.on(:message) do |msg, type|
112
+ message = msg
113
+ end
114
+
115
+ socket.receive('{"test":"value"}')
116
+ expect(message).to eq({test: 'value'})
117
+ end
118
+
119
+ it 'raises exception if sending message when closed' do
120
+ transport.disconnect
121
+ expect {
122
+ transport.send_message({test: 'value'})
123
+ }.to raise_error(RuntimeError)
124
+ end
125
+
126
+ it 'raises exception if proxy is included' do
127
+ expect {
128
+ options[:proxy] = { origin: 'something', headers: 'something' }
129
+ described_class.new(options)
130
+ }.to raise_error(RuntimeError)
131
+ end
132
+ end
133
+
134
+ describe WampClient::Transport::FayeWebSocket do
135
+ include RSpec::EM::FakeClock
136
+ before { clock.stub }
137
+ after { clock.reset }
138
+
139
+ let(:transport) { described_class.new(options) }
140
+ let(:socket) { transport.socket }
141
+ before(:each) {
142
+ allow(Faye::WebSocket::Client).to receive(:new) { |uri, protocols, options|
143
+ SpecHelper::FayeWebSocketClientStub.new
144
+ }
145
+
146
+ transport.connect
147
+ clock.tick(1) # Simulate connecting
148
+ }
149
+
150
+ it 'initializes' do
151
+ expect(transport.uri).to eq(test_uri)
152
+ end
153
+
154
+ it 'connects to the router' do
155
+ expect(transport.connected?).to eq(true)
156
+ end
157
+
158
+ it 'disconnects from the router' do
159
+ value = false
160
+ transport.on(:close) do
161
+ value = true
162
+ end
163
+
164
+ transport.disconnect
165
+
166
+ expect(transport.connected?).to eq(false)
167
+ expect(value).to eq(true)
168
+ end
169
+
170
+ it 'sends a message' do
171
+ transport.send_message({test: 'value'})
172
+ expect(socket.last_message).to eq('{"test":"value"}')
173
+ end
174
+
175
+ it 'receives a message' do
176
+ message = nil
177
+ transport.on(:message) do |msg, type|
178
+ message = msg
179
+ end
180
+
181
+ socket.receive('{"test":"value"}')
182
+ expect(message).to eq({test: 'value'})
183
+ end
184
+
185
+ it 'raises exception if sending message when closed' do
186
+ transport.disconnect
187
+ expect {
188
+ transport.send_message({test: 'value'})
189
+ }.to raise_error(RuntimeError)
190
+ end
191
+
192
+ it 'does not raise exception if proxy is included' do
193
+ expect {
194
+ options[:proxy] = { origin: 'something', headers: 'something' }
195
+ described_class.new(options)
196
+ }.not_to raise_error
197
+ end
198
+ end
199
+ end
200
+ end
data/wamp_client.gemspec CHANGED
@@ -18,12 +18,15 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.7'
22
- spec.add_development_dependency 'rake', '~> 10.0'
23
- spec.add_development_dependency 'rspec'
21
+ spec.add_development_dependency 'bundler', '>= 1.7'
22
+ spec.add_development_dependency 'rake', '>= 10.0'
23
+ spec.add_development_dependency 'rspec', '>= 3.5.0'
24
+ spec.add_development_dependency 'rspec-eventmachine', '>= 0.2.0'
24
25
  spec.add_development_dependency 'simplecov'
25
26
  spec.add_development_dependency 'codecov'
27
+ spec.add_development_dependency 'faye-websocket', '>= 0.10.4'
28
+ spec.required_ruby_version = '>= 2.0'
26
29
 
27
- spec.add_dependency 'websocket-eventmachine-client'
30
+ spec.add_dependency 'websocket-eventmachine-client', '>= 1.1.0'
28
31
  spec.add_dependency 'json'
29
32
  end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wamp_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Chapman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-01 00:00:00.000000000 Z
11
+ date: 2018-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
@@ -44,14 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 3.5.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 3.5.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-eventmachine
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.2.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.2.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: simplecov
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +94,34 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: faye-websocket
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.10.4
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 0.10.4
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: websocket-eventmachine-client
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - ">="
88
116
  - !ruby/object:Gem::Version
89
- version: '0'
117
+ version: 1.1.0
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - ">="
95
123
  - !ruby/object:Gem::Version
96
- version: '0'
124
+ version: 1.1.0
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: json
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +144,7 @@ extensions: []
116
144
  extra_rdoc_files: []
117
145
  files:
118
146
  - ".gitignore"
147
+ - ".ruby-version"
119
148
  - Gemfile
120
149
  - LICENSE.txt
121
150
  - README.md
@@ -129,14 +158,19 @@ files:
129
158
  - lib/wamp_client/message.rb
130
159
  - lib/wamp_client/serializer.rb
131
160
  - lib/wamp_client/session.rb
132
- - lib/wamp_client/transport.rb
161
+ - lib/wamp_client/transport/base.rb
162
+ - lib/wamp_client/transport/event_machine_base.rb
163
+ - lib/wamp_client/transport/faye_web_socket.rb
164
+ - lib/wamp_client/transport/web_socket_event_machine.rb
133
165
  - lib/wamp_client/version.rb
134
166
  - scripts/gen_message.rb
135
167
  - spec/auth_spec.rb
136
168
  - spec/check_spec.rb
169
+ - spec/connection_spec.rb
137
170
  - spec/message_spec.rb
138
171
  - spec/session_spec.rb
139
172
  - spec/spec_helper.rb
173
+ - spec/transport_spec.rb
140
174
  - tasks/rspec.rake
141
175
  - wamp_client.gemspec
142
176
  homepage: https://github.com/ericchapman/ruby_wamp_client
@@ -151,7 +185,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
185
  requirements:
152
186
  - - ">="
153
187
  - !ruby/object:Gem::Version
154
- version: '0'
188
+ version: '2.0'
155
189
  required_rubygems_version: !ruby/object:Gem::Requirement
156
190
  requirements:
157
191
  - - ">="
@@ -166,6 +200,8 @@ summary: Web Application Messaging Protocol Client
166
200
  test_files:
167
201
  - spec/auth_spec.rb
168
202
  - spec/check_spec.rb
203
+ - spec/connection_spec.rb
169
204
  - spec/message_spec.rb
170
205
  - spec/session_spec.rb
171
206
  - spec/spec_helper.rb
207
+ - spec/transport_spec.rb