vines 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/README +1 -1
  2. data/Rakefile +10 -10
  3. data/conf/certs/ca-bundle.crt +112 -378
  4. data/conf/config.rb +18 -9
  5. data/lib/vines.rb +8 -1
  6. data/lib/vines/command/cert.rb +2 -1
  7. data/lib/vines/command/init.rb +11 -0
  8. data/lib/vines/command/ldap.rb +6 -3
  9. data/lib/vines/command/schema.rb +1 -1
  10. data/lib/vines/config.rb +57 -146
  11. data/lib/vines/config/host.rb +85 -0
  12. data/lib/vines/config/port.rb +111 -0
  13. data/lib/vines/contact.rb +1 -1
  14. data/lib/vines/jid.rb +26 -4
  15. data/lib/vines/kit.rb +6 -0
  16. data/lib/vines/log.rb +24 -0
  17. data/lib/vines/router.rb +70 -38
  18. data/lib/vines/stanza.rb +45 -8
  19. data/lib/vines/stanza/iq.rb +3 -3
  20. data/lib/vines/stanza/iq/disco_info.rb +5 -1
  21. data/lib/vines/stanza/iq/disco_items.rb +3 -0
  22. data/lib/vines/stanza/iq/private_storage.rb +9 -5
  23. data/lib/vines/stanza/iq/roster.rb +11 -12
  24. data/lib/vines/stanza/iq/vcard.rb +4 -4
  25. data/lib/vines/stanza/iq/version.rb +25 -0
  26. data/lib/vines/stanza/message.rb +4 -5
  27. data/lib/vines/stanza/presence.rb +20 -18
  28. data/lib/vines/stanza/presence/probe.rb +3 -4
  29. data/lib/vines/stanza/presence/subscribe.rb +4 -3
  30. data/lib/vines/stanza/presence/subscribed.rb +6 -5
  31. data/lib/vines/stanza/presence/unsubscribe.rb +4 -4
  32. data/lib/vines/stanza/presence/unsubscribed.rb +4 -3
  33. data/lib/vines/storage/couchdb.rb +3 -3
  34. data/lib/vines/storage/ldap.rb +19 -8
  35. data/lib/vines/storage/local.rb +23 -12
  36. data/lib/vines/storage/redis.rb +3 -3
  37. data/lib/vines/storage/sql.rb +5 -5
  38. data/lib/vines/stream.rb +40 -6
  39. data/lib/vines/stream/client.rb +5 -6
  40. data/lib/vines/stream/client/auth.rb +3 -2
  41. data/lib/vines/stream/client/bind.rb +2 -2
  42. data/lib/vines/stream/client/bind_restart.rb +1 -2
  43. data/lib/vines/stream/client/ready.rb +2 -0
  44. data/lib/vines/stream/client/session.rb +13 -4
  45. data/lib/vines/stream/client/tls.rb +1 -0
  46. data/lib/vines/stream/component.rb +6 -5
  47. data/lib/vines/stream/component/ready.rb +5 -6
  48. data/lib/vines/stream/http.rb +10 -4
  49. data/lib/vines/stream/http/request.rb +23 -2
  50. data/lib/vines/stream/server.rb +13 -11
  51. data/lib/vines/stream/server/outbound/auth_result.rb +1 -0
  52. data/lib/vines/stream/server/outbound/tls_result.rb +1 -0
  53. data/lib/vines/stream/server/ready.rb +2 -2
  54. data/lib/vines/user.rb +2 -1
  55. data/lib/vines/version.rb +1 -1
  56. data/test/config/host_test.rb +292 -0
  57. data/test/config_test.rb +244 -103
  58. data/test/contact_test.rb +7 -1
  59. data/test/jid_test.rb +48 -0
  60. data/test/router_test.rb +16 -47
  61. data/test/stanza/iq/disco_info_test.rb +76 -0
  62. data/test/stanza/iq/disco_items_test.rb +47 -0
  63. data/test/stanza/iq/private_storage_test.rb +33 -10
  64. data/test/stanza/iq/roster_test.rb +15 -5
  65. data/test/stanza/iq/vcard_test.rb +8 -25
  66. data/test/stanza/iq/version_test.rb +62 -0
  67. data/test/stanza/iq_test.rb +13 -10
  68. data/test/stanza/message_test.rb +16 -24
  69. data/test/stanza/presence/probe_test.rb +52 -0
  70. data/test/stanza/presence/subscribe_test.rb +1 -5
  71. data/test/stanza_test.rb +77 -0
  72. data/test/stream/client/auth_test.rb +1 -0
  73. data/test/stream/client/ready_test.rb +2 -0
  74. data/test/stream/client/session_test.rb +7 -2
  75. data/test/stream/component/ready_test.rb +19 -36
  76. data/test/stream/http/request_test.rb +22 -2
  77. data/test/stream/server/ready_test.rb +14 -21
  78. data/web/404.html +9 -3
  79. data/web/chat/index.html +2 -2
  80. data/web/chat/javascripts/app.js +1 -1
  81. data/web/chat/stylesheets/chat.css +4 -9
  82. data/web/lib/coffeescripts/layout.coffee +2 -2
  83. data/web/{chat → lib}/coffeescripts/logout.coffee +0 -0
  84. data/web/lib/coffeescripts/notification.coffee +14 -0
  85. data/web/lib/coffeescripts/session.coffee +28 -24
  86. data/web/lib/coffeescripts/transfer.coffee +37 -34
  87. data/web/lib/javascripts/base.js +8 -8
  88. data/web/lib/javascripts/icons.js +3 -0
  89. data/web/lib/javascripts/jquery.js +4 -18
  90. data/web/lib/javascripts/layout.js +2 -2
  91. data/web/{chat → lib}/javascripts/logout.js +0 -0
  92. data/web/lib/javascripts/notification.js +26 -0
  93. data/web/lib/javascripts/session.js +20 -16
  94. data/web/lib/javascripts/transfer.js +45 -55
  95. data/web/lib/stylesheets/base.css +45 -9
  96. metadata +31 -15
data/test/contact_test.rb CHANGED
@@ -21,8 +21,14 @@ class ContactTest < MiniTest::Unit::TestCase
21
21
  refute alice.hash == hatter.hash
22
22
  end
23
23
 
24
- def test_initialize_missing_jid
24
+ def test_initialize_missing_jid_raises
25
25
  assert_raises(ArgumentError) { Vines::Contact.new }
26
+ assert_raises(ArgumentError) { Vines::Contact.new(:jid => '') }
27
+ end
28
+
29
+ def test_initialize_domain_only_jid_does_not_raise
30
+ contact = Vines::Contact.new(:jid => 'tea.wonderland.lit')
31
+ assert_equal 'tea.wonderland.lit', contact.jid.to_s
26
32
  end
27
33
 
28
34
  def test_to_roster_xml_sorts_groups
data/test/jid_test.rb CHANGED
@@ -13,6 +13,7 @@ class JidTest < MiniTest::Unit::TestCase
13
13
  assert_equal '', jid.domain
14
14
  assert_equal '', jid.to_s
15
15
  assert_equal '', jid.bare.to_s
16
+ assert jid.empty?
16
17
  end
17
18
  end
18
19
 
@@ -31,6 +32,7 @@ class JidTest < MiniTest::Unit::TestCase
31
32
  assert_nil jid.node
32
33
  assert_nil jid.resource
33
34
  assert_equal jid, jid.bare
35
+ refute jid.empty?
34
36
  end
35
37
 
36
38
  def test_bare_jid
@@ -40,6 +42,7 @@ class JidTest < MiniTest::Unit::TestCase
40
42
  assert_equal 'alice', jid.node
41
43
  assert_nil jid.resource
42
44
  assert_equal jid, jid.bare
45
+ refute jid.empty?
43
46
  end
44
47
 
45
48
  def test_parsed_bare_jid
@@ -49,6 +52,7 @@ class JidTest < MiniTest::Unit::TestCase
49
52
  assert_equal 'alice', jid.node
50
53
  assert_nil jid.resource
51
54
  assert_equal jid, jid.bare
55
+ refute jid.empty?
52
56
  end
53
57
 
54
58
  def test_full_jid
@@ -58,6 +62,7 @@ class JidTest < MiniTest::Unit::TestCase
58
62
  assert_equal 'alice', jid.node
59
63
  assert_equal 'tea', jid.resource
60
64
  refute_equal jid, jid.bare
65
+ refute jid.empty?
61
66
  end
62
67
 
63
68
  def test_parsed_full_jid
@@ -67,5 +72,48 @@ class JidTest < MiniTest::Unit::TestCase
67
72
  assert_equal 'alice', jid.node
68
73
  assert_equal 'tea', jid.resource
69
74
  refute_equal jid, jid.bare
75
+ refute jid.empty?
76
+ end
77
+
78
+ def test_node_with_separators_in_resource
79
+ jid = Vines::JID.new('alice@wonderland.lit/foo/bar@blarg')
80
+ assert_equal 'alice', jid.node
81
+ assert_equal 'wonderland.lit', jid.domain
82
+ assert_equal 'foo/bar@blarg', jid.resource
83
+ end
84
+
85
+ def test_missing_node_with_separators_in_resource
86
+ jid = Vines::JID.new('wonderland.lit/foo/bar@blarg')
87
+ assert_nil jid.node
88
+ assert_equal 'wonderland.lit', jid.domain
89
+ assert_equal 'foo/bar@blarg', jid.resource
90
+ end
91
+
92
+ def test_empty_part_raises
93
+ assert_raises(ArgumentError) { Vines::JID.new('@wonderland.lit') }
94
+ assert_raises(ArgumentError) { Vines::JID.new('wonderland.lit/') }
95
+ assert_raises(ArgumentError) { Vines::JID.new('@') }
96
+ assert_raises(ArgumentError) { Vines::JID.new('alice@') }
97
+ assert_raises(ArgumentError) { Vines::JID.new('/') }
98
+ assert_raises(ArgumentError) { Vines::JID.new('/res') }
99
+ assert_raises(ArgumentError) { Vines::JID.new('@/') }
100
+ end
101
+
102
+ def test_invalid_characters
103
+ assert_raises(ArgumentError) { Vines::JID.new(%q{alice"s@wonderland.lit}) }
104
+ assert_raises(ArgumentError) { Vines::JID.new(%q{alice&s@wonderland.lit}) }
105
+ assert_raises(ArgumentError) { Vines::JID.new(%q{alice's@wonderland.lit}) }
106
+ assert_raises(ArgumentError) { Vines::JID.new(%q{alice:s@wonderland.lit}) }
107
+ assert_raises(ArgumentError) { Vines::JID.new(%q{alice<s@wonderland.lit}) }
108
+ assert_raises(ArgumentError) { Vines::JID.new(%q{alice>s@wonderland.lit}) }
109
+ assert_raises(ArgumentError) { Vines::JID.new("alice\u0000s@wonderland.lit") }
110
+ assert_raises(ArgumentError) { Vines::JID.new("alice\ts@wonderland.lit") }
111
+ assert_raises(ArgumentError) { Vines::JID.new(" alice@wonderland.lit") }
112
+ assert_raises(ArgumentError) { Vines::JID.new("alice@wonderland.lit ") }
113
+ assert_raises(ArgumentError) { Vines::JID.new("alice s@wonderland.lit") }
114
+ assert_raises(ArgumentError) { Vines::JID.new("alice@w onderland.lit") }
115
+ assert_raises(ArgumentError) { Vines::JID.new("alice@wonderland.lit/ res") }
116
+ assert_raises(ArgumentError) { Vines::JID.new("alice@w\u0000onderland.lit") }
117
+ assert_raises(ArgumentError) { Vines::JID.new("alice@wonderland.lit/\u0000res") }
70
118
  end
71
119
  end
data/test/router_test.rb CHANGED
@@ -5,57 +5,26 @@ require 'minitest/autorun'
5
5
 
6
6
  class RouterTest < MiniTest::Unit::TestCase
7
7
  def setup
8
+ @alice = Vines::JID.new('alice@wonderland.lit/tea')
9
+ @stream = MiniTest::Mock.new
8
10
  @router = Vines::Router.new
11
+ @config = Vines::Config.new do
12
+ host 'wonderland.lit' do
13
+ storage(:fs) { dir '.' }
14
+ end
15
+ end
9
16
  end
10
17
 
11
- def test_non_routable_stanza_is_local
12
- stanza = MiniTest::Mock.new
13
- stanza.expect(:name, 'auth')
14
- assert @router.local?(stanza)
15
- assert stanza.verify
16
- end
17
-
18
- def test_stanza_missing_to_is_local
19
- stanza = MiniTest::Mock.new
20
- stanza.expect(:name, 'message')
21
- stanza.expect(:[], nil, ['to'])
22
- assert @router.local?(stanza)
23
- assert stanza.verify
24
- end
25
-
26
- def test_stanza_with_local_jid_is_local
27
- config = MiniTest::Mock.new
28
- config.expect(:vhost?, true, ['wonderland.lit'])
29
- stream = MiniTest::Mock.new
30
- stream.expect(:config, config)
31
- stream.expect(:stream_type, :client)
32
- @router << stream
33
-
34
- stanza = MiniTest::Mock.new
35
- stanza.expect(:name, 'message')
36
- stanza.expect(:[], 'alice@wonderland.lit', ['to'])
37
- assert @router.local?(stanza)
38
-
39
- assert stanza.verify
40
- assert stream.verify
41
- assert config.verify
42
- end
43
-
44
- def test_stanza_with_remote_jid_is_not_local
45
- config = MiniTest::Mock.new
46
- config.expect(:vhost?, false, ['wonderland.lit'])
47
- stream = MiniTest::Mock.new
48
- stream.expect(:config, config)
49
- stream.expect(:stream_type, :client)
50
- @router << stream
18
+ def test_connected_resources
19
+ assert_equal 0, @router.connected_resources(@alice, @alice).size
51
20
 
52
- stanza = MiniTest::Mock.new
53
- stanza.expect(:name, 'message')
54
- stanza.expect(:[], 'alice@wonderland.lit', ['to'])
55
- assert !@router.local?(stanza)
21
+ @stream.expect(:config, @config)
22
+ @stream.expect(:stream_type, :client)
23
+ @stream.expect(:connected?, true)
24
+ @stream.expect(:user, Vines::User.new(jid: @alice))
25
+ @router << @stream
56
26
 
57
- assert stanza.verify
58
- assert stream.verify
59
- assert config.verify
27
+ assert_equal 1, @router.connected_resources(@alice, @alice).size
28
+ assert @stream.verify
60
29
  end
61
30
  end
@@ -0,0 +1,76 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'vines'
4
+ require 'ext/nokogiri'
5
+ require 'minitest/autorun'
6
+
7
+ class DiscoInfoTest < MiniTest::Unit::TestCase
8
+ ALICE = Vines::User.new(:jid => 'alice@wonderland.lit/home')
9
+
10
+ def setup
11
+ @config = MiniTest::Mock.new
12
+ @stream = MiniTest::Mock.new
13
+ @stream.expect(:user, ALICE)
14
+ @stream.expect(:domain, 'wonderland.lit')
15
+ @stream.expect(:config, @config)
16
+ end
17
+
18
+ def test_private_storage_disabled
19
+ query = %q{<query xmlns="http://jabber.org/protocol/disco#info"/>}
20
+ node = node(%Q{<iq id="42" to="wonderland.lit" type="get">#{query}</iq>})
21
+
22
+ expected = node(%Q{
23
+ <iq from="wonderland.lit" id="42" to="#{ALICE.jid}" type="result">
24
+ <query xmlns="http://jabber.org/protocol/disco#info">
25
+ <identity category="server" type="im"/>
26
+ <feature var="http://jabber.org/protocol/disco#info"/>
27
+ <feature var="http://jabber.org/protocol/disco#items"/>
28
+ <feature var="urn:xmpp:ping"/>
29
+ <feature var="vcard-temp"/>
30
+ <feature var="jabber:iq:version"/>
31
+ </query>
32
+ </iq>
33
+ }.strip.gsub(/\n|\s{2,}/, ''))
34
+
35
+ @config.expect(:private_storage?, false, ['wonderland.lit'])
36
+ @stream.expect(:write, nil, [expected])
37
+
38
+ stanza = Vines::Stanza::Iq::DiscoInfo.new(node, @stream)
39
+ stanza.process
40
+ assert @stream.verify
41
+ assert @config.verify
42
+ end
43
+
44
+ def test_private_storage_enabled
45
+ query = %q{<query xmlns="http://jabber.org/protocol/disco#info"/>}
46
+ node = node(%Q{<iq id="42" to="wonderland.lit" type="get">#{query}</iq>})
47
+
48
+ expected = node(%Q{
49
+ <iq from="wonderland.lit" id="42" to="#{ALICE.jid}" type="result">
50
+ <query xmlns="http://jabber.org/protocol/disco#info">
51
+ <identity category="server" type="im"/>
52
+ <feature var="http://jabber.org/protocol/disco#info"/>
53
+ <feature var="http://jabber.org/protocol/disco#items"/>
54
+ <feature var="urn:xmpp:ping"/>
55
+ <feature var="vcard-temp"/>
56
+ <feature var="jabber:iq:version"/>
57
+ <feature var="jabber:iq:private"/>
58
+ </query>
59
+ </iq>
60
+ }.strip.gsub(/\n|\s{2,}/, ''))
61
+
62
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
63
+ @stream.expect(:write, nil, [expected])
64
+
65
+ stanza = Vines::Stanza::Iq::DiscoInfo.new(node, @stream)
66
+ stanza.process
67
+ assert @stream.verify
68
+ assert @config.verify
69
+ end
70
+
71
+ private
72
+
73
+ def node(xml)
74
+ Nokogiri::XML(xml).root
75
+ end
76
+ end
@@ -0,0 +1,47 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'vines'
4
+ require 'ext/nokogiri'
5
+ require 'minitest/autorun'
6
+
7
+ class DiscoItemsTest < MiniTest::Unit::TestCase
8
+ def setup
9
+ @stream = MiniTest::Mock.new
10
+ end
11
+
12
+ def test_component_items
13
+ query = %q{<query xmlns="http://jabber.org/protocol/disco#items"/>}
14
+ node = node(%Q{<iq id="42" to="wonderland.lit" type="get">#{query}</iq>})
15
+
16
+ expected = node(%q{
17
+ <iq from="wonderland.lit" id="42" to="alice@wonderland.lit/home" type="result">
18
+ <query xmlns="http://jabber.org/protocol/disco#items">
19
+ <item jid="cake.wonderland.lit"/>
20
+ <item jid="tea.wonderland.lit"/>
21
+ </query>
22
+ </iq>
23
+ }.strip.gsub(/\n|\s{2,}/, ''))
24
+
25
+ config = Vines::Config.new do
26
+ host 'wonderland.lit' do
27
+ storage(:fs) { dir '.' }
28
+ components 'tea' => 'secr3t', 'cake' => 'passw0rd'
29
+ end
30
+ end
31
+
32
+ @stream.expect(:config, config)
33
+ @stream.expect(:user, Vines::User.new(:jid => 'alice@wonderland.lit/home'))
34
+ @stream.expect(:domain, 'wonderland.lit')
35
+ @stream.expect(:write, nil, [expected])
36
+
37
+ stanza = Vines::Stanza::Iq::DiscoItems.new(node, @stream)
38
+ stanza.process
39
+ assert @stream.verify
40
+ end
41
+
42
+ private
43
+
44
+ def node(xml)
45
+ Nokogiri::XML(xml).root
46
+ end
47
+ end
@@ -6,6 +6,7 @@ require 'minitest/autorun'
6
6
 
7
7
  class PrivateStorageTest < MiniTest::Unit::TestCase
8
8
  def setup
9
+ @config = MiniTest::Mock.new
9
10
  @stream = MiniTest::Mock.new
10
11
  end
11
12
 
@@ -13,11 +14,14 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
13
14
  query = %q{<query xmlns="jabber:iq:private"><one xmlns="a"/></query>}
14
15
  node = node(%Q{<iq id="42" type="get">#{query}</iq>})
15
16
 
16
- @stream.expect(:private_storage?, false)
17
+ @config.expect(:private_storage?, false, ['wonderland.lit'])
18
+ @stream.expect(:domain, 'wonderland.lit')
19
+ @stream.expect(:config, @config)
17
20
 
18
21
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
19
22
  assert_raises(Vines::StanzaErrors::ServiceUnavailable) { stanza.process }
20
23
  assert @stream.verify
24
+ assert @config.verify
21
25
  end
22
26
 
23
27
  def test_get_another_user_fragment_raises_error
@@ -25,7 +29,6 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
25
29
  query = %q{<query xmlns="jabber:iq:private"><one xmlns="a"/></query>}
26
30
  node = node(%Q{<iq id="42" to="hatter@wonderland.lit" type="get">#{query}</iq>})
27
31
 
28
- @stream.expect(:private_storage?, true)
29
32
  @stream.expect(:user, alice)
30
33
 
31
34
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
@@ -38,11 +41,14 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
38
41
  query = %q{<query xmlns="jabber:iq:private"></query>}
39
42
  node = node(%Q{<iq id="42" type="get">#{query}</iq>})
40
43
 
41
- @stream.expect(:private_storage?, true)
44
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
45
+ @stream.expect(:domain, 'wonderland.lit')
46
+ @stream.expect(:config, @config)
42
47
 
43
48
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
44
49
  assert_raises(Vines::StanzaErrors::NotAcceptable) { stanza.process }
45
50
  assert @stream.verify
51
+ assert @config.verify
46
52
  end
47
53
 
48
54
  def test_get_with_two_children_raises_error
@@ -50,11 +56,14 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
50
56
  query = %q{<query xmlns="jabber:iq:private"><one xmlns="a"/><two xmlns="b"/></query>}
51
57
  node = node(%Q{<iq id="42" type="get">#{query}</iq>})
52
58
 
53
- @stream.expect(:private_storage?, true)
59
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
60
+ @stream.expect(:domain, 'wonderland.lit')
61
+ @stream.expect(:config, @config)
54
62
 
55
63
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
56
64
  assert_raises(Vines::StanzaErrors::NotAcceptable) { stanza.process }
57
65
  assert @stream.verify
66
+ assert @config.verify
58
67
  end
59
68
 
60
69
  def test_set_with_zero_children_raises_error
@@ -62,11 +71,14 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
62
71
  query = %q{<query xmlns="jabber:iq:private"></query>}
63
72
  node = node(%Q{<iq id="42" type="set">#{query}</iq>})
64
73
 
65
- @stream.expect(:private_storage?, true)
74
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
75
+ @stream.expect(:domain, 'wonderland.lit')
76
+ @stream.expect(:config, @config)
66
77
 
67
78
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
68
79
  assert_raises(Vines::StanzaErrors::NotAcceptable) { stanza.process }
69
80
  assert @stream.verify
81
+ assert @config.verify
70
82
  end
71
83
 
72
84
  def test_get_without_namespace_raises_error
@@ -74,11 +86,14 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
74
86
  query = %q{<query xmlns="jabber:iq:private"><one/></query>}
75
87
  node = node(%Q{<iq id="42" type="get">#{query}</iq>})
76
88
 
77
- @stream.expect(:private_storage?, true)
89
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
90
+ @stream.expect(:domain, 'wonderland.lit')
91
+ @stream.expect(:config, @config)
78
92
 
79
93
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
80
94
  assert_raises(Vines::StanzaErrors::NotAcceptable) { stanza.process }
81
95
  assert @stream.verify
96
+ assert @config.verify
82
97
  end
83
98
 
84
99
  def test_get_missing_fragment_raises_error
@@ -89,14 +104,16 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
89
104
  storage = MiniTest::Mock.new
90
105
  storage.expect(:find_fragment, nil, [alice.jid, node.elements[0].elements[0]])
91
106
 
92
- @stream.expect(:private_storage?, true)
107
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
93
108
  @stream.expect(:domain, 'wonderland.lit')
109
+ @stream.expect(:config, @config)
94
110
  @stream.expect(:storage, storage, ['wonderland.lit'])
95
111
  @stream.expect(:user, alice)
96
112
 
97
113
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
98
114
  assert_raises(Vines::StanzaErrors::ItemNotFound) { stanza.process }
99
115
  assert @stream.verify
116
+ assert @config.verify
100
117
  assert storage.verify
101
118
  end
102
119
 
@@ -112,8 +129,9 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
112
129
  storage = MiniTest::Mock.new
113
130
  storage.expect(:find_fragment, node(data), [alice.jid, node.elements[0].elements[0]])
114
131
 
115
- @stream.expect(:private_storage?, true)
132
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
116
133
  @stream.expect(:domain, 'wonderland.lit')
134
+ @stream.expect(:config, @config)
117
135
  @stream.expect(:storage, storage, ['wonderland.lit'])
118
136
  @stream.expect(:user, alice)
119
137
  @stream.expect(:write, nil, [expected])
@@ -121,6 +139,7 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
121
139
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
122
140
  stanza.process
123
141
  assert @stream.verify
142
+ assert @config.verify
124
143
  assert storage.verify
125
144
  end
126
145
 
@@ -134,8 +153,9 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
134
153
 
135
154
  expected = node(%Q{<iq from="#{alice.jid}" id="42" to="#{alice.jid}" type="result"/>})
136
155
 
137
- @stream.expect(:private_storage?, true)
156
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
138
157
  @stream.expect(:domain, 'wonderland.lit')
158
+ @stream.expect(:config, @config)
139
159
  @stream.expect(:storage, storage, ['wonderland.lit'])
140
160
  @stream.expect(:user, alice)
141
161
  @stream.expect(:write, nil, [expected])
@@ -143,6 +163,7 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
143
163
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
144
164
  stanza.process
145
165
  assert @stream.verify
166
+ assert @config.verify
146
167
  assert storage.verify
147
168
  end
148
169
 
@@ -157,8 +178,9 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
157
178
 
158
179
  expected = node(%Q{<iq from="#{alice.jid}" id="42" to="#{alice.jid}" type="result"/>})
159
180
 
160
- @stream.expect(:private_storage?, true)
181
+ @config.expect(:private_storage?, true, ['wonderland.lit'])
161
182
  @stream.expect(:domain, 'wonderland.lit')
183
+ @stream.expect(:config, @config)
162
184
  @stream.expect(:storage, storage, ['wonderland.lit'])
163
185
  @stream.expect(:user, alice)
164
186
  @stream.expect(:write, nil, [expected])
@@ -166,6 +188,7 @@ class PrivateStorageTest < MiniTest::Unit::TestCase
166
188
  stanza = Vines::Stanza::Iq::PrivateStorage.new(node, @stream)
167
189
  stanza.process
168
190
  assert @stream.verify
191
+ assert @config.verify
169
192
  assert storage.verify
170
193
  end
171
194