vines 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +1 -1
- data/Rakefile +12 -2
- data/conf/config.rb +1 -0
- data/lib/vines/config.rb +8 -0
- data/lib/vines/contact.rb +2 -4
- data/lib/vines/error.rb +1 -1
- data/lib/vines/router.rb +26 -18
- data/lib/vines/stanza/presence.rb +3 -1
- data/lib/vines/stanza.rb +8 -1
- data/lib/vines/stream/client/bind.rb +9 -1
- data/lib/vines/stream/client/session.rb +146 -0
- data/lib/vines/stream/client.rb +19 -78
- data/lib/vines/stream/component.rb +6 -2
- data/lib/vines/stream/http/auth.rb +22 -0
- data/lib/vines/stream/http/bind.rb +32 -0
- data/lib/vines/stream/http/bind_restart.rb +36 -0
- data/lib/vines/stream/http/ready.rb +25 -0
- data/lib/vines/stream/http/request.rb +33 -0
- data/lib/vines/stream/http/session.rb +116 -0
- data/lib/vines/stream/http/sessions.rb +65 -0
- data/lib/vines/stream/http/start.rb +23 -0
- data/lib/vines/stream/http.rb +119 -77
- data/lib/vines/stream/server.rb +8 -3
- data/lib/vines/stream/state.rb +6 -1
- data/lib/vines/stream.rb +31 -19
- data/lib/vines/user.rb +2 -4
- data/lib/vines/version.rb +1 -1
- data/lib/vines.rb +10 -4
- data/test/config_test.rb +34 -33
- data/test/contact_test.rb +42 -0
- data/test/error_test.rb +2 -2
- data/test/jid_test.rb +7 -7
- data/test/kit_test.rb +10 -10
- data/test/rake_test_loader.rb +9 -0
- data/test/router_test.rb +4 -3
- data/test/stanza/iq/roster_test.rb +8 -10
- data/test/stanza/iq/session_test.rb +2 -3
- data/test/stanza/iq/vcard_test.rb +4 -5
- data/test/stanza/message_test.rb +17 -11
- data/test/stanza/presence/subscribe_test.rb +3 -4
- data/test/storage/couchdb_test.rb +9 -10
- data/test/storage/ldap_test.rb +30 -37
- data/test/storage/local_test.rb +6 -6
- data/test/storage/redis_test.rb +6 -6
- data/test/storage/sql_test.rb +5 -5
- data/test/storage/storage_tests.rb +11 -11
- data/test/storage_test.rb +4 -5
- data/test/stream/client/auth_test.rb +15 -16
- data/test/stream/client/ready_test.rb +4 -5
- data/test/stream/client/session_test.rb +21 -0
- data/test/stream/component/handshake_test.rb +6 -7
- data/test/stream/component/ready_test.rb +9 -10
- data/test/stream/component/start_test.rb +6 -7
- data/test/stream/http/auth_test.rb +68 -0
- data/test/stream/http/ready_test.rb +56 -0
- data/test/stream/http/sessions_test.rb +50 -0
- data/test/stream/http/start_test.rb +51 -0
- data/test/stream/parser_test.rb +5 -5
- data/test/stream/server/outbound/auth_test.rb +12 -13
- data/test/stream/server/ready_test.rb +10 -11
- data/test/token_bucket_test.rb +7 -7
- data/test/user_test.rb +8 -6
- metadata +45 -14
- data/lib/vines/stream/http/http_request.rb +0 -22
- data/lib/vines/stream/http/http_state.rb +0 -139
- data/lib/vines/stream/http/http_states.rb +0 -53
data/test/config_test.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
require 'vines'
|
4
|
-
require '
|
4
|
+
require 'minitest/autorun'
|
5
5
|
|
6
|
-
class ConfigTest <
|
6
|
+
class ConfigTest < MiniTest::Unit::TestCase
|
7
7
|
def test_missing_host
|
8
|
-
|
8
|
+
assert_raises(RuntimeError) do
|
9
9
|
Vines::Config.new do
|
10
10
|
# missing hosts
|
11
11
|
end
|
@@ -13,7 +13,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_duplicate_host
|
16
|
-
|
16
|
+
assert_raises(RuntimeError) do
|
17
17
|
Vines::Config.new do
|
18
18
|
host 'wonderland.lit' do
|
19
19
|
storage 'fs' do
|
@@ -30,7 +30,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_duplicate_host_in_one_call
|
33
|
-
|
33
|
+
assert_raises(RuntimeError) do
|
34
34
|
Vines::Config.new do
|
35
35
|
host 'wonderland.lit', 'wonderland.lit' do
|
36
36
|
storage 'fs' do
|
@@ -42,7 +42,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_missing_storage
|
45
|
-
|
45
|
+
assert_raises(RuntimeError) do
|
46
46
|
Vines::Config.new do
|
47
47
|
host 'wonderland.lit' do
|
48
48
|
# missing storage
|
@@ -52,7 +52,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_bad_storage
|
55
|
-
|
55
|
+
assert_raises(RuntimeError) do
|
56
56
|
Vines::Config.new do
|
57
57
|
host 'wonderland.lit' do
|
58
58
|
storage 'bogus' do
|
@@ -64,7 +64,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def test_duplicate_storage
|
67
|
-
|
67
|
+
assert_raises(RuntimeError) do
|
68
68
|
Vines::Config.new do
|
69
69
|
host 'wonderland.lit' do
|
70
70
|
storage('fs') { dir '.' }
|
@@ -74,13 +74,11 @@ class ConfigTest < Test::Unit::TestCase
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
def
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
dir '.'
|
83
|
-
end
|
77
|
+
def test_good_storage_raises_no_errors
|
78
|
+
Vines::Config.new do
|
79
|
+
host 'wonderland.lit' do
|
80
|
+
storage 'fs' do
|
81
|
+
dir '.'
|
84
82
|
end
|
85
83
|
end
|
86
84
|
end
|
@@ -117,7 +115,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
117
115
|
end
|
118
116
|
end
|
119
117
|
%w[wonderland.lit verona.lit].each do |domain|
|
120
|
-
|
118
|
+
refute_nil config.vhosts[domain].ldap
|
121
119
|
assert config.vhosts[domain].ldap?
|
122
120
|
end
|
123
121
|
end
|
@@ -130,7 +128,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
130
128
|
end
|
131
129
|
end
|
132
130
|
end
|
133
|
-
|
131
|
+
refute_nil config
|
134
132
|
assert_same config, Vines::Config.instance
|
135
133
|
end
|
136
134
|
|
@@ -152,13 +150,13 @@ class ConfigTest < Test::Unit::TestCase
|
|
152
150
|
end
|
153
151
|
client
|
154
152
|
end
|
155
|
-
|
156
|
-
|
157
|
-
|
153
|
+
refute_nil config[:client]
|
154
|
+
assert_raises(ArgumentError) { config[:server] }
|
155
|
+
assert_raises(ArgumentError) { config[:bogus] }
|
158
156
|
end
|
159
157
|
|
160
158
|
def test_duplicate_client
|
161
|
-
|
159
|
+
assert_raises(RuntimeError) do
|
162
160
|
Vines::Config.new do
|
163
161
|
client
|
164
162
|
client
|
@@ -167,7 +165,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
167
165
|
end
|
168
166
|
|
169
167
|
def test_duplicate_server
|
170
|
-
|
168
|
+
assert_raises(RuntimeError) do
|
171
169
|
Vines::Config.new do
|
172
170
|
server
|
173
171
|
server
|
@@ -176,7 +174,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
176
174
|
end
|
177
175
|
|
178
176
|
def test_duplicate_http
|
179
|
-
|
177
|
+
assert_raises(RuntimeError) do
|
180
178
|
Vines::Config.new do
|
181
179
|
http
|
182
180
|
http
|
@@ -185,7 +183,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
185
183
|
end
|
186
184
|
|
187
185
|
def test_duplicate_component
|
188
|
-
|
186
|
+
assert_raises(RuntimeError) do
|
189
187
|
Vines::Config.new do
|
190
188
|
component
|
191
189
|
component
|
@@ -201,7 +199,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
201
199
|
client
|
202
200
|
end
|
203
201
|
port = config.ports.first
|
204
|
-
|
202
|
+
refute_nil port
|
205
203
|
assert_equal Vines::Config::ClientPort, port.class
|
206
204
|
assert_equal '0.0.0.0', port.host
|
207
205
|
assert_equal 5222, port.port
|
@@ -223,7 +221,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
223
221
|
end
|
224
222
|
end
|
225
223
|
port = config.ports.first
|
226
|
-
|
224
|
+
refute_nil port
|
227
225
|
assert_equal Vines::Config::ClientPort, port.class
|
228
226
|
assert_equal '0.0.0.1', port.host
|
229
227
|
assert_equal 42, port.port
|
@@ -254,7 +252,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
254
252
|
server
|
255
253
|
end
|
256
254
|
port = config.ports.first
|
257
|
-
|
255
|
+
refute_nil port
|
258
256
|
assert !config.s2s?('verona.lit')
|
259
257
|
assert_equal Vines::Config::ServerPort, port.class
|
260
258
|
assert_equal '0.0.0.0', port.host
|
@@ -276,7 +274,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
276
274
|
end
|
277
275
|
end
|
278
276
|
port = config.ports.first
|
279
|
-
|
277
|
+
refute_nil port
|
280
278
|
assert config.s2s?('verona.lit')
|
281
279
|
assert config.s2s?('denmark.lit')
|
282
280
|
assert !config.s2s?('bogus')
|
@@ -297,11 +295,12 @@ class ConfigTest < Test::Unit::TestCase
|
|
297
295
|
http
|
298
296
|
end
|
299
297
|
port = config.ports.first
|
300
|
-
|
298
|
+
refute_nil port
|
301
299
|
assert_equal Vines::Config::HttpPort, port.class
|
302
300
|
assert_equal '0.0.0.0', port.host
|
303
301
|
assert_equal 5280, port.port
|
304
302
|
assert_equal 131_072, port.max_stanza_size
|
303
|
+
assert_equal 5, port.max_resources_per_account
|
305
304
|
assert_equal Vines::Stream::Http, port.stream
|
306
305
|
assert_same config, port.config
|
307
306
|
assert_equal 1, config.ports.size
|
@@ -314,14 +313,16 @@ class ConfigTest < Test::Unit::TestCase
|
|
314
313
|
end
|
315
314
|
http '0.0.0.1', 42 do
|
316
315
|
max_stanza_size 60_000
|
316
|
+
max_resources_per_account 1
|
317
317
|
end
|
318
318
|
end
|
319
319
|
port = config.ports.first
|
320
|
-
|
320
|
+
refute_nil port
|
321
321
|
assert_equal Vines::Config::HttpPort, port.class
|
322
322
|
assert_equal '0.0.0.1', port.host
|
323
323
|
assert_equal 42, port.port
|
324
324
|
assert_equal 60_000, port.max_stanza_size
|
325
|
+
assert_equal 1, port.max_resources_per_account
|
325
326
|
assert_equal Vines::Stream::Http, port.stream
|
326
327
|
assert_same config, port.config
|
327
328
|
assert_equal 1, config.ports.size
|
@@ -335,7 +336,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
335
336
|
component
|
336
337
|
end
|
337
338
|
port = config.ports.first
|
338
|
-
|
339
|
+
refute_nil port
|
339
340
|
assert port.components.empty?
|
340
341
|
assert_nil port.password('bogus')
|
341
342
|
assert_equal Vines::Config::ComponentPort, port.class
|
@@ -359,7 +360,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
359
360
|
end
|
360
361
|
end
|
361
362
|
port = config.ports.first
|
362
|
-
|
363
|
+
refute_nil port
|
363
364
|
assert_equal 2, port.components.size
|
364
365
|
assert_equal 'secr3t', port.password('tea.wonderland.lit')
|
365
366
|
assert_equal 'passw0rd', port.password('cake.wonderland.lit')
|
@@ -374,7 +375,7 @@ class ConfigTest < Test::Unit::TestCase
|
|
374
375
|
end
|
375
376
|
|
376
377
|
def test_invalid_log_level
|
377
|
-
|
378
|
+
assert_raises(RuntimeError) do
|
378
379
|
config = Vines::Config.new do
|
379
380
|
log 'bogus'
|
380
381
|
host 'wonderland.lit' do
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'vines'
|
4
|
+
require 'minitest/autorun'
|
5
|
+
|
6
|
+
class ContactTest < MiniTest::Unit::TestCase
|
7
|
+
def test_equality
|
8
|
+
alice = Vines::Contact.new(:jid => 'alice@wonderland.lit')
|
9
|
+
alice2 = Vines::Contact.new(:jid => 'alice@wonderland.lit')
|
10
|
+
hatter = Vines::Contact.new(:jid => 'hatter@wonderland.lit')
|
11
|
+
|
12
|
+
assert_nil alice <=> 42
|
13
|
+
|
14
|
+
assert alice == alice2
|
15
|
+
assert alice.eql?(alice2)
|
16
|
+
assert alice.hash == alice2.hash
|
17
|
+
|
18
|
+
refute alice == hatter
|
19
|
+
refute alice.eql?(hatter)
|
20
|
+
refute alice.hash == hatter.hash
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_initialize_missing_jid
|
24
|
+
assert_raises(ArgumentError) { Vines::Contact.new }
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_to_roster_xml_sorts_groups
|
28
|
+
contact = Vines::Contact.new(
|
29
|
+
:jid => 'a@wonderland.lit',
|
30
|
+
:name => "Contact 1",
|
31
|
+
:groups => %w[B A])
|
32
|
+
|
33
|
+
expected = %q{
|
34
|
+
<item jid="a@wonderland.lit" name="Contact 1" subscription="none">
|
35
|
+
<group>A</group>
|
36
|
+
<group>B</group>
|
37
|
+
</item>
|
38
|
+
}.strip.gsub(/\n/, '').gsub(/\s{2,}/, '')
|
39
|
+
|
40
|
+
assert_equal expected, contact.to_roster_xml.to_xml(:indent => 0).gsub(/\n/, '')
|
41
|
+
end
|
42
|
+
end
|
data/test/error_test.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
require 'vines'
|
4
|
-
require '
|
4
|
+
require 'minitest/autorun'
|
5
5
|
|
6
|
-
class ErrorTest <
|
6
|
+
class ErrorTest < MiniTest::Unit::TestCase
|
7
7
|
def test_sasl_error_without_text
|
8
8
|
expected = %q{<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><temporary-auth-failure/></failure>}
|
9
9
|
assert_equal expected, Vines::SaslErrors::TemporaryAuthFailure.new.to_xml
|
data/test/jid_test.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
require 'vines'
|
4
|
-
require '
|
4
|
+
require 'minitest/autorun'
|
5
5
|
|
6
|
-
class JidTest <
|
6
|
+
class JidTest < MiniTest::Unit::TestCase
|
7
7
|
def test_nil_and_empty_jids
|
8
8
|
[nil, ''].each do |text|
|
9
|
-
|
9
|
+
Vines::JID.new(text) # shouldn't raise an error
|
10
10
|
jid = Vines::JID.new(text)
|
11
11
|
assert_nil jid.node
|
12
12
|
assert_nil jid.resource
|
@@ -17,11 +17,11 @@ class JidTest < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_jid_too_long_error
|
20
|
-
|
20
|
+
Vines::JID.new('n' * 1023) # shouldn't raise an error
|
21
21
|
assert_raises(ArgumentError) { Vines::JID.new('n' * 1024) }
|
22
22
|
assert_raises(ArgumentError) { Vines::JID.new('n', 'd' * 1024) }
|
23
23
|
assert_raises(ArgumentError) { Vines::JID.new('n', 'd', 'r' * 1024) }
|
24
|
-
|
24
|
+
Vines::JID.new('n' * 1023, 'd' * 1023, 'r' * 1023) # shouldn't raise an error
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_domain_only
|
@@ -57,7 +57,7 @@ class JidTest < Test::Unit::TestCase
|
|
57
57
|
assert_equal 'wonderland.lit', jid.domain
|
58
58
|
assert_equal 'alice', jid.node
|
59
59
|
assert_equal 'tea', jid.resource
|
60
|
-
|
60
|
+
refute_equal jid, jid.bare
|
61
61
|
end
|
62
62
|
|
63
63
|
def test_parsed_full_jid
|
@@ -66,6 +66,6 @@ class JidTest < Test::Unit::TestCase
|
|
66
66
|
assert_equal 'wonderland.lit', jid.domain
|
67
67
|
assert_equal 'alice', jid.node
|
68
68
|
assert_equal 'tea', jid.resource
|
69
|
-
|
69
|
+
refute_equal jid, jid.bare
|
70
70
|
end
|
71
71
|
end
|
data/test/kit_test.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
require 'vines'
|
4
|
-
require '
|
4
|
+
require 'minitest/autorun'
|
5
5
|
|
6
|
-
class KitTest <
|
6
|
+
class KitTest < MiniTest::Unit::TestCase
|
7
7
|
def test_hmac
|
8
|
-
assert_equal
|
9
|
-
assert_equal
|
10
|
-
|
11
|
-
|
8
|
+
assert_equal 128, Vines::Kit.hmac('secret', 'username').length
|
9
|
+
assert_equal Vines::Kit.hmac('s1', 'u1'), Vines::Kit.hmac('s1', 'u1')
|
10
|
+
refute_equal Vines::Kit.hmac('s1', 'u1'), Vines::Kit.hmac('s2', 'u1')
|
11
|
+
refute_equal Vines::Kit.hmac('s1', 'u1'), Vines::Kit.hmac('s1', 'u2')
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_uuid
|
15
15
|
ids = Array.new(1000) { Vines::Kit.uuid }
|
16
|
-
assert
|
17
|
-
assert
|
18
|
-
assert
|
19
|
-
assert_equal
|
16
|
+
assert ids.all? {|id| !id.nil? }
|
17
|
+
assert ids.all? {|id| id.length == 36 }
|
18
|
+
assert ids.all? {|id| id.match(/\w{8}-\w{4}-[4]\w{3}-[89ab]\w{3}-\w{12}/) }
|
19
|
+
assert_equal ids.length, ids.uniq.length
|
20
20
|
end
|
21
21
|
end
|
data/test/router_test.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
require 'vines'
|
4
|
-
require 'minitest/
|
5
|
-
require 'test/unit'
|
4
|
+
require 'minitest/autorun'
|
6
5
|
|
7
|
-
class RouterTest <
|
6
|
+
class RouterTest < MiniTest::Unit::TestCase
|
8
7
|
def setup
|
9
8
|
@router = Vines::Router.new
|
10
9
|
end
|
@@ -29,6 +28,7 @@ class RouterTest < Test::Unit::TestCase
|
|
29
28
|
config.expect(:vhost?, true, ['wonderland.lit'])
|
30
29
|
stream = MiniTest::Mock.new
|
31
30
|
stream.expect(:config, config)
|
31
|
+
stream.expect(:stream_type, :client)
|
32
32
|
@router << stream
|
33
33
|
|
34
34
|
stanza = MiniTest::Mock.new
|
@@ -46,6 +46,7 @@ class RouterTest < Test::Unit::TestCase
|
|
46
46
|
config.expect(:vhost?, false, ['wonderland.lit'])
|
47
47
|
stream = MiniTest::Mock.new
|
48
48
|
stream.expect(:config, config)
|
49
|
+
stream.expect(:stream_type, :client)
|
49
50
|
@router << stream
|
50
51
|
|
51
52
|
stanza = MiniTest::Mock.new
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'vines'
|
4
4
|
require 'ext/nokogiri'
|
5
|
-
require 'minitest/
|
6
|
-
require 'test/unit'
|
5
|
+
require 'minitest/autorun'
|
7
6
|
|
8
|
-
class RosterTest <
|
7
|
+
class RosterTest < MiniTest::Unit::TestCase
|
9
8
|
def setup
|
10
9
|
@stream = MiniTest::Mock.new
|
11
10
|
end
|
@@ -59,7 +58,7 @@ class RosterTest < Test::Unit::TestCase
|
|
59
58
|
</iq>}.strip.gsub(/\n|\s{2,}/, ''))
|
60
59
|
|
61
60
|
stanza = Vines::Stanza::Iq::Roster.new(node, @stream)
|
62
|
-
|
61
|
+
assert_raises(Vines::StanzaErrors::Forbidden) { stanza.process }
|
63
62
|
assert @stream.verify
|
64
63
|
end
|
65
64
|
|
@@ -70,7 +69,7 @@ class RosterTest < Test::Unit::TestCase
|
|
70
69
|
</iq>}.strip.gsub(/\n|\s{2,}/, ''))
|
71
70
|
|
72
71
|
stanza = Vines::Stanza::Iq::Roster.new(node, @stream)
|
73
|
-
|
72
|
+
assert_raises(Vines::StanzaErrors::BadRequest) { stanza.process }
|
74
73
|
assert @stream.verify
|
75
74
|
end
|
76
75
|
|
@@ -84,7 +83,7 @@ class RosterTest < Test::Unit::TestCase
|
|
84
83
|
</iq>}.strip.gsub(/\n|\s{2,}/, ''))
|
85
84
|
|
86
85
|
stanza = Vines::Stanza::Iq::Roster.new(node, @stream)
|
87
|
-
|
86
|
+
assert_raises(Vines::StanzaErrors::BadRequest) { stanza.process }
|
88
87
|
assert @stream.verify
|
89
88
|
end
|
90
89
|
|
@@ -97,7 +96,7 @@ class RosterTest < Test::Unit::TestCase
|
|
97
96
|
</iq>}.strip.gsub(/\n|\s{2,}/, ''))
|
98
97
|
|
99
98
|
stanza = Vines::Stanza::Iq::Roster.new(node, @stream)
|
100
|
-
|
99
|
+
assert_raises(Vines::StanzaErrors::BadRequest) { stanza.process }
|
101
100
|
assert @stream.verify
|
102
101
|
end
|
103
102
|
|
@@ -116,7 +115,7 @@ class RosterTest < Test::Unit::TestCase
|
|
116
115
|
</iq>}.strip.gsub(/\n|\s{2,}/, ''))
|
117
116
|
|
118
117
|
stanza = Vines::Stanza::Iq::Roster.new(node, @stream)
|
119
|
-
|
118
|
+
assert_raises(Vines::StanzaErrors::BadRequest) { stanza.process }
|
120
119
|
assert @stream.verify
|
121
120
|
end
|
122
121
|
|
@@ -134,7 +133,7 @@ class RosterTest < Test::Unit::TestCase
|
|
134
133
|
</iq>}.strip.gsub(/\n|\s{2,}/, ''))
|
135
134
|
|
136
135
|
stanza = Vines::Stanza::Iq::Roster.new(node, @stream)
|
137
|
-
|
136
|
+
assert_raises(Vines::StanzaErrors::NotAcceptable) { stanza.process }
|
138
137
|
assert @stream.verify
|
139
138
|
end
|
140
139
|
|
@@ -173,7 +172,6 @@ class RosterTest < Test::Unit::TestCase
|
|
173
172
|
|
174
173
|
stanza = Vines::Stanza::Iq::Roster.new(node, @stream)
|
175
174
|
stanza.process
|
176
|
-
assert_nothing_raised { stanza.process }
|
177
175
|
assert @stream.verify
|
178
176
|
assert storage.verify
|
179
177
|
assert router.verify
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'vines'
|
4
4
|
require 'ext/nokogiri'
|
5
|
-
require 'minitest/
|
6
|
-
require 'test/unit'
|
5
|
+
require 'minitest/autorun'
|
7
6
|
|
8
|
-
class SessionTest <
|
7
|
+
class SessionTest < MiniTest::Unit::TestCase
|
9
8
|
def test_session
|
10
9
|
stream = MiniTest::Mock.new
|
11
10
|
stream.expect(:domain, 'wonderland.lit')
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'vines'
|
4
4
|
require 'ext/nokogiri'
|
5
|
-
require 'minitest/
|
6
|
-
require 'test/unit'
|
5
|
+
require 'minitest/autorun'
|
7
6
|
|
8
|
-
class VcardTest <
|
7
|
+
class VcardTest < MiniTest::Unit::TestCase
|
9
8
|
def setup
|
10
9
|
@stream = MiniTest::Mock.new
|
11
10
|
end
|
@@ -105,7 +104,7 @@ class VcardTest < Test::Unit::TestCase
|
|
105
104
|
@stream.expect(:storage, storage, ['wonderland.lit'])
|
106
105
|
|
107
106
|
stanza = Vines::Stanza::Iq::Vcard.new(node, @stream)
|
108
|
-
|
107
|
+
assert_raises(Vines::StanzaErrors::ItemNotFound) { stanza.process }
|
109
108
|
assert @stream.verify
|
110
109
|
assert router.verify
|
111
110
|
assert storage.verify
|
@@ -122,7 +121,7 @@ class VcardTest < Test::Unit::TestCase
|
|
122
121
|
@stream.expect(:router, router)
|
123
122
|
|
124
123
|
stanza = Vines::Stanza::Iq::Vcard.new(node, @stream)
|
125
|
-
|
124
|
+
assert_raises(Vines::StanzaErrors::Forbidden) { stanza.process }
|
126
125
|
assert @stream.verify
|
127
126
|
end
|
128
127
|
|
data/test/stanza/message_test.rb
CHANGED
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'vines'
|
4
4
|
require 'ext/nokogiri'
|
5
|
-
require 'minitest/
|
6
|
-
require 'test/unit'
|
5
|
+
require 'minitest/autorun'
|
7
6
|
|
8
|
-
class MessageTest <
|
7
|
+
class MessageTest < MiniTest::Unit::TestCase
|
9
8
|
def setup
|
10
9
|
@stream = MiniTest::Mock.new
|
11
10
|
end
|
@@ -13,7 +12,7 @@ class MessageTest < Test::Unit::TestCase
|
|
13
12
|
def test_bad_type_returns_error
|
14
13
|
node = node('<message type="bogus">hello!</message>')
|
15
14
|
stanza = Vines::Stanza::Message.new(node, @stream)
|
16
|
-
|
15
|
+
assert_raises(Vines::StanzaErrors::BadRequest) { stanza.process }
|
17
16
|
end
|
18
17
|
|
19
18
|
def test_missing_to_address_is_sent_to_sender
|
@@ -21,16 +20,18 @@ class MessageTest < Test::Unit::TestCase
|
|
21
20
|
node = node('<message>hello!</message>')
|
22
21
|
|
23
22
|
recipient = MiniTest::Mock.new
|
23
|
+
recipient.expect(:user, alice)
|
24
|
+
recipient.expect(:write, nil, [node])
|
25
|
+
|
24
26
|
router = MiniTest::Mock.new
|
25
27
|
router.expect(:local?, true, [node])
|
26
28
|
router.expect(:connected_resources, [recipient], [alice.jid.bare])
|
27
29
|
|
28
30
|
@stream.expect(:router, router)
|
29
31
|
@stream.expect(:user, alice)
|
30
|
-
@stream.expect(:broadcast, nil, [node, [recipient]])
|
31
32
|
|
32
33
|
stanza = Vines::Stanza::Message.new(node, @stream)
|
33
|
-
|
34
|
+
stanza.process
|
34
35
|
assert @stream.verify
|
35
36
|
assert router.verify
|
36
37
|
assert recipient.verify
|
@@ -51,7 +52,7 @@ class MessageTest < Test::Unit::TestCase
|
|
51
52
|
@stream.expect(:storage, storage, [bogus.domain])
|
52
53
|
|
53
54
|
stanza = Vines::Stanza::Message.new(node, @stream)
|
54
|
-
|
55
|
+
stanza.process
|
55
56
|
assert @stream.verify
|
56
57
|
assert router.verify
|
57
58
|
assert storage.verify
|
@@ -72,26 +73,31 @@ class MessageTest < Test::Unit::TestCase
|
|
72
73
|
@stream.expect(:storage, storage, [hatter.jid.domain])
|
73
74
|
|
74
75
|
stanza = Vines::Stanza::Message.new(node, @stream)
|
75
|
-
|
76
|
+
assert_raises(Vines::StanzaErrors::ServiceUnavailable) { stanza.process }
|
76
77
|
assert @stream.verify
|
77
78
|
assert router.verify
|
78
79
|
assert storage.verify
|
79
80
|
end
|
80
81
|
|
81
82
|
def test_message_to_local_user_in_different_domain_is_delivered
|
83
|
+
alice = Vines::User.new(:jid => 'alice@wonderland.lit/tea')
|
82
84
|
romeo = Vines::User.new(:jid => 'romeo@verona.lit/balcony')
|
83
85
|
node = node(%Q{<message to="#{romeo.jid}">hello!</message>})
|
86
|
+
expected = node(%Q{<message to="#{romeo.jid}" from="#{alice.jid}">hello!</message>})
|
84
87
|
|
85
88
|
recipient = MiniTest::Mock.new
|
89
|
+
recipient.expect(:user, romeo)
|
90
|
+
recipient.expect(:write, nil, [expected])
|
91
|
+
|
86
92
|
router = MiniTest::Mock.new
|
87
93
|
router.expect(:local?, true, [node])
|
88
94
|
router.expect(:connected_resources, [recipient], [romeo.jid])
|
89
95
|
|
90
96
|
@stream.expect(:router, router)
|
91
|
-
@stream.expect(:
|
97
|
+
@stream.expect(:user, alice)
|
92
98
|
|
93
99
|
stanza = Vines::Stanza::Message.new(node, @stream)
|
94
|
-
|
100
|
+
stanza.process
|
95
101
|
assert @stream.verify
|
96
102
|
assert router.verify
|
97
103
|
assert recipient.verify
|
@@ -111,7 +117,7 @@ class MessageTest < Test::Unit::TestCase
|
|
111
117
|
@stream.expect(:user, alice)
|
112
118
|
|
113
119
|
stanza = Vines::Stanza::Message.new(node, @stream)
|
114
|
-
|
120
|
+
stanza.process
|
115
121
|
assert @stream.verify
|
116
122
|
assert router.verify
|
117
123
|
end
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'vines'
|
4
4
|
require 'ext/nokogiri'
|
5
|
-
require 'minitest/
|
6
|
-
require 'test/unit'
|
5
|
+
require 'minitest/autorun'
|
7
6
|
|
8
|
-
class SubscribeTest <
|
7
|
+
class SubscribeTest < MiniTest::Unit::TestCase
|
9
8
|
def test_outbound_subscribe_to_local_jid_but_missing_contact
|
10
9
|
alice = Vines::JID.new('alice@wonderland.lit/tea')
|
11
10
|
hatter = Vines::JID.new('hatter@wonderland.lit')
|
@@ -22,7 +21,7 @@ class SubscribeTest < Test::Unit::TestCase
|
|
22
21
|
storage.expect(:find_user, nil, [hatter])
|
23
22
|
|
24
23
|
recipient = MiniTest::Mock.new
|
25
|
-
recipient.expect(:user,
|
24
|
+
recipient.expect(:user, user)
|
26
25
|
def recipient.nodes; @nodes; end
|
27
26
|
def recipient.write(node)
|
28
27
|
@nodes ||= []
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'storage_tests'
|
4
4
|
require 'vines'
|
5
|
-
require '
|
5
|
+
require 'minitest/autorun'
|
6
6
|
|
7
|
-
class CouchDBTest <
|
7
|
+
class CouchDBTest < MiniTest::Unit::TestCase
|
8
8
|
include StorageTests
|
9
9
|
|
10
10
|
URL = 'http://localhost:5984/xmpp_testcase'.freeze
|
@@ -88,14 +88,13 @@ class CouchDBTest < Test::Unit::TestCase
|
|
88
88
|
|
89
89
|
def test_init
|
90
90
|
EMLoop.new do
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
end
|
91
|
+
assert_raises(RuntimeError) { Vines::Storage::CouchDB.new {} }
|
92
|
+
assert_raises(RuntimeError) { Vines::Storage::CouchDB.new { host 'localhost' } }
|
93
|
+
# shouldn't raise an error
|
94
|
+
Vines::Storage::CouchDB.new do
|
95
|
+
host 'localhost'
|
96
|
+
port '5984'
|
97
|
+
database 'test'
|
99
98
|
end
|
100
99
|
end
|
101
100
|
end
|