diaspora-vines 0.1.26 → 0.1.27

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/conf/config.rb +1 -0
  3. data/lib/vines.rb +12 -5
  4. data/lib/vines/config/host.rb +9 -0
  5. data/lib/vines/kit.rb +7 -0
  6. data/lib/vines/node.rb +31 -0
  7. data/lib/vines/router.rb +5 -0
  8. data/lib/vines/stanza/presence.rb +16 -1
  9. data/lib/vines/storage.rb +10 -1
  10. data/lib/vines/storage/sql.rb +18 -5
  11. data/lib/vines/stream.rb +12 -10
  12. data/lib/vines/stream/client/bind_restart.rb +6 -0
  13. data/lib/vines/stream/http.rb +13 -11
  14. data/lib/vines/stream/server.rb +46 -13
  15. data/lib/vines/stream/server/auth_method.rb +78 -0
  16. data/lib/vines/stream/server/auth_restart.rb +27 -1
  17. data/lib/vines/stream/server/outbound/auth.rb +43 -9
  18. data/lib/vines/stream/server/outbound/auth_dialback_result.rb +39 -0
  19. data/lib/vines/stream/server/outbound/auth_external.rb +33 -0
  20. data/lib/vines/stream/server/outbound/{auth_result.rb → auth_external_result.rb} +1 -1
  21. data/lib/vines/stream/server/outbound/auth_restart.rb +8 -1
  22. data/lib/vines/stream/server/outbound/authoritative.rb +48 -0
  23. data/lib/vines/stream/server/outbound/start.rb +1 -1
  24. data/lib/vines/stream/server/start.rb +29 -2
  25. data/lib/vines/stream/state.rb +3 -17
  26. data/lib/vines/version.rb +1 -1
  27. data/test/storage/sql_test.rb +16 -0
  28. data/test/store_test.rb +3 -1
  29. data/test/stream/server/auth_method_test.rb +101 -0
  30. data/test/stream/server/outbound/auth_dialback_result_test.rb +37 -0
  31. data/test/stream/server/outbound/auth_external_test.rb +75 -0
  32. data/test/stream/server/outbound/auth_restart_test.rb +53 -0
  33. data/test/stream/server/outbound/auth_test.rb +59 -43
  34. data/test/stream/server/outbound/authoritative_test.rb +66 -0
  35. data/test/stream/server/outbound/start_test.rb +33 -0
  36. data/test/stream/server/start_test.rb +70 -0
  37. metadata +33 -10
  38. data/lib/vines/stream/server/outbound/tls.rb +0 -30
  39. data/lib/vines/stream/server/tls.rb +0 -13
@@ -0,0 +1,33 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'test_helper'
4
+
5
+ describe Vines::Stream::Server::Outbound::Start do
6
+ before do
7
+ @stream = MiniTest::Mock.new
8
+ @state = Vines::Stream::Server::Outbound::Start.new(@stream)
9
+ end
10
+
11
+ def test_missing_namespace
12
+ node = node('<stream:stream/>')
13
+ assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
14
+ end
15
+
16
+ def test_invalid_namespace
17
+ node = node(%Q{<stream:stream xmlns="#{Vines::NAMESPACES[:stream]}"/>})
18
+ assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
19
+ end
20
+
21
+ def test_valid_stream
22
+ node = node(%Q{<stream:stream xmlns='jabber:client' xmlns:stream='#{Vines::NAMESPACES[:stream]}' xml:lang='en' id='1234' from='host.com' version='1.0'>})
23
+ @stream.expect(:advance, nil, [Vines::Stream::Server::Outbound::Auth])
24
+ @state.node(node)
25
+ assert @stream.verify
26
+ end
27
+
28
+ private
29
+
30
+ def node(xml)
31
+ Nokogiri::XML(xml).root
32
+ end
33
+ end
@@ -0,0 +1,70 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'test_helper'
4
+
5
+ class VhostWrapper
6
+ def initialize(force = false)
7
+ @force_s2s_encryption = force
8
+ end
9
+ def force_s2s_encryption?
10
+ @force_s2s_encryption
11
+ end
12
+ end
13
+
14
+ describe Vines::Stream::Server::AuthMethod do
15
+ before do
16
+ @stream = MiniTest::Mock.new
17
+ @state = Vines::Stream::Server::Start.new(@stream)
18
+ end
19
+
20
+ def test_missing_namespace
21
+ node = node('<stream:stream/>')
22
+ assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
23
+ end
24
+
25
+ def test_invalid_namespace
26
+ node = node(%Q{<stream:stream xmlns="#{Vines::NAMESPACES[:stream]}"/>})
27
+ assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
28
+ end
29
+
30
+ def test_valid_stream_tls_required
31
+ node = node(%Q{<stream:stream xmlns="jabber:client" xmlns:stream="#{Vines::NAMESPACES[:stream]}" to="host.com" version="1.0"/>})
32
+ features = node(%Q{<stream:features xmlns:stream="#{Vines::NAMESPACES[:stream]}"><starttls xmlns="#{Vines::NAMESPACES[:tls]}"/><dialback xmlns="#{Vines::NAMESPACES[:dialback]}"/></stream:features>})
33
+ @stream.expect(:start, nil, [node])
34
+ @stream.expect(:vhost, VhostWrapper.new(false))
35
+ @stream.expect(:advance, nil, [Vines::Stream::Server::AuthMethod])
36
+ @stream.expect(:dialback_retry?, false)
37
+ @stream.expect(:write, nil, [features])
38
+ @state.node(node)
39
+ assert @stream.verify
40
+ end
41
+
42
+ def test_valid_stream_with_dialback_flag
43
+ node = node(%Q{<stream:stream xmlns="jabber:client" xmlns:stream="#{Vines::NAMESPACES[:stream]}" to="host.com" version="1.0"/>})
44
+ features = node(%Q{<stream:features xmlns:stream="#{Vines::NAMESPACES[:stream]}"><dialback xmlns="#{Vines::NAMESPACES[:dialback]}"/></stream:features>})
45
+ @stream.expect(:start, nil, [node])
46
+ @stream.expect(:advance, nil, [Vines::Stream::Server::AuthMethod])
47
+ @stream.expect(:dialback_retry?, true)
48
+ @stream.expect(:write, nil, [features])
49
+ @state.node(node)
50
+ assert @stream.verify
51
+ end
52
+
53
+ def test_valid_stream
54
+ node = node(%Q{<stream:stream xmlns="jabber:client" xmlns:stream="#{Vines::NAMESPACES[:stream]}" to="host.com" version="1.0"/>})
55
+ features = node(%Q{<stream:features xmlns:stream="#{Vines::NAMESPACES[:stream]}"><starttls xmlns="#{Vines::NAMESPACES[:tls]}"><required/></starttls><dialback xmlns="#{Vines::NAMESPACES[:dialback]}"/></stream:features>})
56
+ @stream.expect(:start, nil, [node])
57
+ @stream.expect(:vhost, VhostWrapper.new(true))
58
+ @stream.expect(:advance, nil, [Vines::Stream::Server::AuthMethod])
59
+ @stream.expect(:dialback_retry?, false)
60
+ @stream.expect(:write, nil, [features])
61
+ @state.node(node)
62
+ assert @stream.verify
63
+ end
64
+
65
+ private
66
+
67
+ def node(xml)
68
+ Nokogiri::XML(xml).root
69
+ end
70
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diaspora-vines
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.26
4
+ version: 0.1.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Graham
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-28 00:00:00.000000000 Z
12
+ date: 2015-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bcrypt
@@ -43,16 +43,22 @@ dependencies:
43
43
  name: eventmachine
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 1.0.5
49
+ - - "<"
47
50
  - !ruby/object:Gem::Version
48
- version: '1.0'
51
+ version: '1.1'
49
52
  type: :runtime
50
53
  prerelease: false
51
54
  version_requirements: !ruby/object:Gem::Requirement
52
55
  requirements:
53
- - - "~>"
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: 1.0.5
59
+ - - "<"
54
60
  - !ruby/object:Gem::Version
55
- version: '1.0'
61
+ version: '1.1'
56
62
  - !ruby/object:Gem::Dependency
57
63
  name: http_parser.rb
58
64
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +198,7 @@ files:
192
198
  - lib/vines/jid.rb
193
199
  - lib/vines/kit.rb
194
200
  - lib/vines/log.rb
201
+ - lib/vines/node.rb
195
202
  - lib/vines/router.rb
196
203
  - lib/vines/stanza.rb
197
204
  - lib/vines/stanza/iq.rb
@@ -255,19 +262,21 @@ files:
255
262
  - lib/vines/stream/sasl.rb
256
263
  - lib/vines/stream/server.rb
257
264
  - lib/vines/stream/server/auth.rb
265
+ - lib/vines/stream/server/auth_method.rb
258
266
  - lib/vines/stream/server/auth_restart.rb
259
267
  - lib/vines/stream/server/final_restart.rb
260
268
  - lib/vines/stream/server/outbound/auth.rb
269
+ - lib/vines/stream/server/outbound/auth_dialback_result.rb
270
+ - lib/vines/stream/server/outbound/auth_external.rb
271
+ - lib/vines/stream/server/outbound/auth_external_result.rb
261
272
  - lib/vines/stream/server/outbound/auth_restart.rb
262
- - lib/vines/stream/server/outbound/auth_result.rb
273
+ - lib/vines/stream/server/outbound/authoritative.rb
263
274
  - lib/vines/stream/server/outbound/final_features.rb
264
275
  - lib/vines/stream/server/outbound/final_restart.rb
265
276
  - lib/vines/stream/server/outbound/start.rb
266
- - lib/vines/stream/server/outbound/tls.rb
267
277
  - lib/vines/stream/server/outbound/tls_result.rb
268
278
  - lib/vines/stream/server/ready.rb
269
279
  - lib/vines/stream/server/start.rb
270
- - lib/vines/stream/server/tls.rb
271
280
  - lib/vines/stream/state.rb
272
281
  - lib/vines/token_bucket.rb
273
282
  - lib/vines/user.rb
@@ -322,9 +331,16 @@ files:
322
331
  - test/stream/http/start_test.rb
323
332
  - test/stream/parser_test.rb
324
333
  - test/stream/sasl_test.rb
334
+ - test/stream/server/auth_method_test.rb
325
335
  - test/stream/server/auth_test.rb
336
+ - test/stream/server/outbound/auth_dialback_result_test.rb
337
+ - test/stream/server/outbound/auth_external_test.rb
338
+ - test/stream/server/outbound/auth_restart_test.rb
326
339
  - test/stream/server/outbound/auth_test.rb
340
+ - test/stream/server/outbound/authoritative_test.rb
341
+ - test/stream/server/outbound/start_test.rb
327
342
  - test/stream/server/ready_test.rb
343
+ - test/stream/server/start_test.rb
328
344
  - test/test_helper.rb
329
345
  - test/token_bucket_test.rb
330
346
  - test/user_test.rb
@@ -348,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
364
  version: '0'
349
365
  requirements: []
350
366
  rubyforge_project:
351
- rubygems_version: 2.3.0
367
+ rubygems_version: 2.4.5
352
368
  signing_key:
353
369
  specification_version: 4
354
370
  summary: Diaspora-vines is a Vines fork build for diaspora integration.
@@ -381,9 +397,16 @@ test_files:
381
397
  - test/stream/component/start_test.rb
382
398
  - test/stream/component/ready_test.rb
383
399
  - test/stream/component/handshake_test.rb
400
+ - test/stream/server/start_test.rb
384
401
  - test/stream/server/ready_test.rb
385
402
  - test/stream/server/auth_test.rb
403
+ - test/stream/server/auth_method_test.rb
404
+ - test/stream/server/outbound/start_test.rb
405
+ - test/stream/server/outbound/auth_restart_test.rb
406
+ - test/stream/server/outbound/auth_external_test.rb
386
407
  - test/stream/server/outbound/auth_test.rb
408
+ - test/stream/server/outbound/auth_dialback_result_test.rb
409
+ - test/stream/server/outbound/authoritative_test.rb
387
410
  - test/token_bucket_test.rb
388
411
  - test/router_test.rb
389
412
  - test/user_test.rb
@@ -1,30 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module Vines
4
- class Stream
5
- class Server
6
- class Outbound
7
- class TLS < State
8
- NS = NAMESPACES[:tls]
9
-
10
- def initialize(stream, success=TLSResult)
11
- super
12
- end
13
-
14
- def node(node)
15
- raise StreamErrors::NotAuthorized unless tls?(node)
16
- stream.write("<starttls xmlns='#{NS}'/>")
17
- advance
18
- end
19
-
20
- private
21
-
22
- def tls?(node)
23
- tls = node.xpath('ns:starttls', 'ns' => NS).any?
24
- node.name == 'features' && namespace(node) == NAMESPACES[:stream] && tls
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,13 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module Vines
4
- class Stream
5
- class Server
6
- class TLS < Client::TLS
7
- def initialize(stream, success=AuthRestart)
8
- super
9
- end
10
- end
11
- end
12
- end
13
- end