blather 0.6.2 → 0.7.0
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/.rspec +3 -0
- data/.travis.yml +1 -8
- data/CHANGELOG.md +230 -0
- data/Guardfile +4 -4
- data/README.md +2 -8
- data/Rakefile +14 -27
- data/blather.gemspec +8 -18
- data/lib/blather.rb +1 -0
- data/lib/blather/client/client.rb +8 -0
- data/lib/blather/roster.rb +7 -0
- data/lib/blather/stanza/iq/roster.rb +1 -1
- data/lib/blather/stanza/message/muc_user.rb +2 -0
- data/lib/blather/stanza/muc/muc_user_base.rb +4 -3
- data/lib/blather/stanza/presence.rb +12 -14
- data/lib/blather/stanza/presence/c.rb +58 -62
- data/lib/blather/stanza/presence/muc.rb +14 -10
- data/lib/blather/stanza/presence/muc_user.rb +47 -36
- data/lib/blather/stanza/presence/status.rb +106 -101
- data/lib/blather/stanza/presence/subscription.rb +59 -60
- data/lib/blather/stream.rb +1 -3
- data/lib/blather/stream/features/resource.rb +0 -1
- data/lib/blather/version.rb +1 -2
- data/lib/blather/xmpp_node.rb +24 -3
- data/spec/blather/client/client_spec.rb +64 -64
- data/spec/blather/client/dsl/pubsub_spec.rb +127 -127
- data/spec/blather/client/dsl_spec.rb +11 -11
- data/spec/blather/errors/sasl_error_spec.rb +3 -3
- data/spec/blather/errors/stanza_error_spec.rb +26 -26
- data/spec/blather/errors/stream_error_spec.rb +22 -22
- data/spec/blather/errors_spec.rb +7 -7
- data/spec/blather/file_transfer_spec.rb +16 -18
- data/spec/blather/jid_spec.rb +29 -29
- data/spec/blather/roster_item_spec.rb +18 -18
- data/spec/blather/roster_spec.rb +18 -18
- data/spec/blather/stanza/discos/disco_info_spec.rb +56 -57
- data/spec/blather/stanza/discos/disco_items_spec.rb +33 -33
- data/spec/blather/stanza/iq/command_spec.rb +57 -57
- data/spec/blather/stanza/iq/ibb_spec.rb +27 -39
- data/spec/blather/stanza/iq/ping_spec.rb +13 -9
- data/spec/blather/stanza/iq/query_spec.rb +16 -16
- data/spec/blather/stanza/iq/roster_spec.rb +29 -30
- data/spec/blather/stanza/iq/s5b_spec.rb +10 -13
- data/spec/blather/stanza/iq/si_spec.rb +20 -23
- data/spec/blather/stanza/iq/vcard_spec.rb +22 -25
- data/spec/blather/stanza/iq_spec.rb +12 -12
- data/spec/blather/stanza/message/muc_user_spec.rb +36 -36
- data/spec/blather/stanza/message_spec.rb +56 -56
- data/spec/blather/stanza/presence/c_spec.rb +17 -7
- data/spec/blather/stanza/presence/muc_spec.rb +8 -8
- data/spec/blather/stanza/presence/muc_user_spec.rb +23 -23
- data/spec/blather/stanza/presence/status_spec.rb +42 -30
- data/spec/blather/stanza/presence/subscription_spec.rb +22 -23
- data/spec/blather/stanza/presence_spec.rb +72 -34
- data/spec/blather/stanza/pubsub/affiliations_spec.rb +12 -12
- data/spec/blather/stanza/pubsub/create_spec.rb +10 -10
- data/spec/blather/stanza/pubsub/event_spec.rb +31 -31
- data/spec/blather/stanza/pubsub/items_spec.rb +21 -21
- data/spec/blather/stanza/pubsub/publish_spec.rb +21 -21
- data/spec/blather/stanza/pubsub/retract_spec.rb +20 -20
- data/spec/blather/stanza/pubsub/subscribe_spec.rb +17 -17
- data/spec/blather/stanza/pubsub/subscription_spec.rb +28 -28
- data/spec/blather/stanza/pubsub/subscriptions_spec.rb +11 -11
- data/spec/blather/stanza/pubsub/unsubscribe_spec.rb +22 -22
- data/spec/blather/stanza/pubsub_owner/delete_spec.rb +9 -9
- data/spec/blather/stanza/pubsub_owner/purge_spec.rb +9 -9
- data/spec/blather/stanza/pubsub_owner_spec.rb +6 -6
- data/spec/blather/stanza/pubsub_spec.rb +16 -16
- data/spec/blather/stanza/x_spec.rb +53 -53
- data/spec/blather/stanza_spec.rb +39 -39
- data/spec/blather/stream/client_spec.rb +133 -133
- data/spec/blather/stream/component_spec.rb +7 -7
- data/spec/blather/stream/parser_spec.rb +24 -24
- data/spec/blather/stream/ssl_spec.rb +7 -7
- data/spec/blather/xmpp_node_spec.rb +17 -7
- data/spec/blather_spec.rb +4 -4
- data/spec/spec_helper.rb +6 -54
- metadata +53 -68
- data/CHANGELOG +0 -220
@@ -4,68 +4,68 @@ describe Blather::RosterItem do
|
|
4
4
|
it 'can be initialized with Blather::JID' do
|
5
5
|
jid = Blather::JID.new(jid)
|
6
6
|
i = Blather::RosterItem.new jid
|
7
|
-
i.jid.
|
7
|
+
i.jid.should == jid
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'can be initialized with an Iq::RosterItem' do
|
11
11
|
jid = 'n@d/r'
|
12
12
|
i = Blather::RosterItem.new Blather::Stanza::Iq::Roster::RosterItem.new(jid)
|
13
|
-
i.jid.
|
13
|
+
i.jid.should == Blather::JID.new(jid).stripped
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'can be initialized with a string' do
|
17
17
|
jid = 'n@d/r'
|
18
18
|
i = Blather::RosterItem.new jid
|
19
|
-
i.jid.
|
19
|
+
i.jid.should == Blather::JID.new(jid).stripped
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'returns the same object when intialized with a Blather::RosterItem' do
|
23
23
|
control = Blather::RosterItem.new 'n@d/r'
|
24
|
-
Blather::RosterItem.new(control).
|
24
|
+
Blather::RosterItem.new(control).should be control
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'has a Blather::JID setter that strips the Blather::JID' do
|
28
28
|
jid = Blather::JID.new('n@d/r')
|
29
29
|
i = Blather::RosterItem.new nil
|
30
30
|
i.jid = jid
|
31
|
-
i.jid.
|
31
|
+
i.jid.should == jid.stripped
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'has a subscription setter that forces a symbol' do
|
35
35
|
i = Blather::RosterItem.new nil
|
36
36
|
i.subscription = 'remove'
|
37
|
-
i.subscription.
|
37
|
+
i.subscription.should == :remove
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'forces the type of subscription' do
|
41
|
-
proc { Blather::RosterItem.new(nil).subscription = 'foo' }.
|
41
|
+
proc { Blather::RosterItem.new(nil).subscription = 'foo' }.should raise_error Blather::ArgumentError
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'returns :none if the subscription field is blank' do
|
45
|
-
Blather::RosterItem.new(nil).subscription.
|
45
|
+
Blather::RosterItem.new(nil).subscription.should == :none
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'ensure #ask is a symbol' do
|
49
49
|
i = Blather::RosterItem.new(nil)
|
50
50
|
i.ask = 'subscribe'
|
51
|
-
i.ask.
|
51
|
+
i.ask.should == :subscribe
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'forces #ask to be :subscribe or nothing at all' do
|
55
|
-
proc { Blather::RosterItem.new(nil).ask = 'foo' }.
|
55
|
+
proc { Blather::RosterItem.new(nil).ask = 'foo' }.should raise_error Blather::ArgumentError
|
56
56
|
end
|
57
57
|
|
58
58
|
it 'generates a stanza with #to_stanza' do
|
59
59
|
jid = Blather::JID.new('n@d/r')
|
60
60
|
i = Blather::RosterItem.new jid
|
61
61
|
s = i.to_stanza
|
62
|
-
s.
|
63
|
-
s.items.first.jid.
|
62
|
+
s.should be_kind_of Blather::Stanza::Iq::Roster
|
63
|
+
s.items.first.jid.should == jid.stripped
|
64
64
|
end
|
65
65
|
|
66
66
|
it 'returns status based on priority' do
|
67
67
|
setup_item_with_presences
|
68
|
-
@i.status.
|
68
|
+
@i.status.should == @p3
|
69
69
|
end
|
70
70
|
|
71
71
|
it 'returns status based on priority and state' do
|
@@ -77,12 +77,12 @@ describe Blather::RosterItem do
|
|
77
77
|
@p4.priority = 15
|
78
78
|
@i.status = @p4
|
79
79
|
|
80
|
-
@i.status.
|
80
|
+
@i.status.should == @p3
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'returns status based on resource' do
|
84
84
|
setup_item_with_presences
|
85
|
-
@i.status('a').
|
85
|
+
@i.status('a').should == @p
|
86
86
|
end
|
87
87
|
|
88
88
|
def setup_item_with_presences
|
@@ -116,12 +116,12 @@ describe Blather::RosterItem do
|
|
116
116
|
@i.status = p
|
117
117
|
end
|
118
118
|
|
119
|
-
@i.statuses.size.
|
119
|
+
@i.statuses.size.should == 4
|
120
120
|
end
|
121
121
|
|
122
122
|
it 'initializes groups to [nil] if the item is not part of a group' do
|
123
123
|
i = Blather::RosterItem.new 'n@d'
|
124
|
-
i.groups.
|
124
|
+
i.groups.should == [nil]
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'can determine equality' do
|
@@ -129,6 +129,6 @@ describe Blather::RosterItem do
|
|
129
129
|
item2 = Blather::RosterItem.new 'n@d'
|
130
130
|
item1.groups = %w[group1 group2]
|
131
131
|
item2.groups = %w[group1 group2]
|
132
|
-
(item1 == item2).
|
132
|
+
(item1 == item2).should == true
|
133
133
|
end
|
134
134
|
end
|
data/spec/blather/roster_spec.rb
CHANGED
@@ -13,31 +13,31 @@ describe Blather::Roster do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'initializes with items' do
|
16
|
-
@roster.items.map { |_,i| i.jid.to_s }.
|
16
|
+
@roster.items.map { |_,i| i.jid.to_s }.should == (@stanza.items.map { |i| i.stripped.to_s }.uniq)
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'processes @stanzas with remove requests' do
|
20
20
|
s = @roster['n@d/0r']
|
21
21
|
s.subscription = :remove
|
22
|
-
proc { @roster.process(s.to_stanza) }.
|
22
|
+
proc { @roster.process(s.to_stanza) }.should change(@roster, :length).by -1
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'processes @stanzas with add requests' do
|
26
26
|
s = Blather::Stanza::Iq::Roster::RosterItem.new('a@b/c').to_stanza
|
27
|
-
proc { @roster.process(s) }.
|
27
|
+
proc { @roster.process(s) }.should change(@roster, :length).by 1
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'allows a jid to be pushed' do
|
31
31
|
jid = 'a@b/c'
|
32
|
-
proc { @roster.push(jid) }.
|
33
|
-
@roster[jid].
|
32
|
+
proc { @roster.push(jid) }.should change(@roster, :length).by 1
|
33
|
+
@roster[jid].should_not be_nil
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'allows an item to be pushed' do
|
37
37
|
jid = 'a@b/c'
|
38
38
|
item = Blather::RosterItem.new(Blather::JID.new(jid))
|
39
|
-
proc { @roster.push(item) }.
|
40
|
-
@roster[jid].
|
39
|
+
proc { @roster.push(item) }.should change(@roster, :length).by 1
|
40
|
+
@roster[jid].should_not be_nil
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'aliases #<< to #push and returns self to allow for chaining' do
|
@@ -45,9 +45,9 @@ describe Blather::Roster do
|
|
45
45
|
item = Blather::RosterItem.new(Blather::JID.new(jid))
|
46
46
|
jid2 = 'd@e/f'
|
47
47
|
item2 = Blather::RosterItem.new(Blather::JID.new(jid2))
|
48
|
-
proc { @roster << item << item2 }.
|
49
|
-
@roster[jid].
|
50
|
-
@roster[jid2].
|
48
|
+
proc { @roster << item << item2 }.should change(@roster, :length).by 2
|
49
|
+
@roster[jid].should_not be_nil
|
50
|
+
@roster[jid2].should_not be_nil
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'sends a @roster addition over the wire' do
|
@@ -57,7 +57,7 @@ describe Blather::Roster do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it 'removes a Blather::JID' do
|
60
|
-
proc { @roster.delete 'n@d' }.
|
60
|
+
proc { @roster.delete 'n@d' }.should change(@roster, :length).by -1
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'sends a @roster removal over the wire' do
|
@@ -68,26 +68,26 @@ describe Blather::Roster do
|
|
68
68
|
|
69
69
|
it 'returns an item through []' do
|
70
70
|
item = @roster['n@d']
|
71
|
-
item.
|
72
|
-
item.jid.
|
71
|
+
item.should be_kind_of Blather::RosterItem
|
72
|
+
item.jid.should == Blather::JID.new('n@d')
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'responds to #each' do
|
76
|
-
@roster.
|
76
|
+
@roster.should respond_to :each
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'cycles through all the items using #each' do
|
80
|
-
@roster.map { |i| i }.sort.
|
80
|
+
@roster.map { |i| i }.sort.should ==(@roster.items.values.sort)
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'yields RosterItems from #each' do
|
84
|
-
@roster.map { |i| i.
|
84
|
+
@roster.map { |i| i.should be_kind_of Blather::RosterItem }
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'returns a duplicate of items through #items' do
|
88
88
|
items = @roster.items
|
89
89
|
items.delete 'n@d'
|
90
|
-
items.
|
90
|
+
items.should_not equal @roster.items
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'will group roster items' do
|
@@ -98,7 +98,7 @@ describe Blather::Roster do
|
|
98
98
|
item2.groups = ['group1', 'group3']
|
99
99
|
@roster << item1 << item2
|
100
100
|
|
101
|
-
@roster.grouped.
|
101
|
+
@roster.grouped.should ==({
|
102
102
|
'group1' => [item1, item2],
|
103
103
|
'group2' => [item1],
|
104
104
|
'group3' => [item2]
|
@@ -21,61 +21,60 @@ end
|
|
21
21
|
|
22
22
|
describe Blather::Stanza::Iq::DiscoInfo do
|
23
23
|
it 'registers itself' do
|
24
|
-
Blather::XMPPNode.class_from_registration(:query, 'http://jabber.org/protocol/disco#info').
|
24
|
+
Blather::XMPPNode.class_from_registration(:query, 'http://jabber.org/protocol/disco#info').should == Blather::Stanza::Iq::DiscoInfo
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'must be importable' do
|
28
|
-
|
29
|
-
Blather::XMPPNode.import(doc.root).must_be_instance_of Blather::Stanza::Iq::DiscoInfo
|
28
|
+
Blather::XMPPNode.parse(disco_info_xml).should be_instance_of Blather::Stanza::Iq::DiscoInfo
|
30
29
|
end
|
31
30
|
|
32
31
|
it 'has a node attribute' do
|
33
32
|
n = Blather::Stanza::Iq::DiscoInfo.new nil, 'music', [], []
|
34
|
-
n.node.
|
33
|
+
n.node.should == 'music'
|
35
34
|
n.node = :foo
|
36
|
-
n.node.
|
35
|
+
n.node.should == 'foo'
|
37
36
|
end
|
38
37
|
|
39
38
|
it 'inherits a list of identities' do
|
40
39
|
n = parse_stanza disco_info_xml
|
41
40
|
r = Blather::Stanza::Iq::DiscoInfo.new.inherit n.root
|
42
|
-
r.identities.size.
|
43
|
-
r.identities.map { |i| i.class }.uniq.
|
41
|
+
r.identities.size.should == 1
|
42
|
+
r.identities.map { |i| i.class }.uniq.should == [Blather::Stanza::Iq::DiscoInfo::Identity]
|
44
43
|
end
|
45
44
|
|
46
45
|
it 'inherits a list of features' do
|
47
46
|
n = parse_stanza disco_info_xml
|
48
47
|
r = Blather::Stanza::Iq::DiscoInfo.new.inherit n.root
|
49
|
-
r.features.size.
|
50
|
-
r.features.map { |i| i.class }.uniq.
|
48
|
+
r.features.size.should == 2
|
49
|
+
r.features.map { |i| i.class }.uniq.should == [Blather::Stanza::Iq::DiscoInfo::Feature]
|
51
50
|
end
|
52
51
|
|
53
52
|
it 'is constructed properly' do
|
54
53
|
n = Blather::Stanza::Iq::DiscoInfo.new :get, '/path/to/node'
|
55
54
|
n.to = 'to@jid.com'
|
56
|
-
n.find("/iq[@to='to@jid.com' and @type='get' and @id='#{n.id}']/ns:query[@node='/path/to/node']", :ns => Blather::Stanza::Iq::DiscoInfo.registered_ns).
|
55
|
+
n.find("/iq[@to='to@jid.com' and @type='get' and @id='#{n.id}']/ns:query[@node='/path/to/node']", :ns => Blather::Stanza::Iq::DiscoInfo.registered_ns).should_not be_empty
|
57
56
|
end
|
58
57
|
|
59
58
|
it 'allows adding of identities' do
|
60
59
|
di = Blather::Stanza::Iq::DiscoInfo.new
|
61
|
-
di.identities.size.
|
60
|
+
di.identities.size.should == 0
|
62
61
|
di.identities = [{:name => 'name', :type => 'type', :category => 'category'}]
|
63
|
-
di.identities.size.
|
62
|
+
di.identities.size.should == 1
|
64
63
|
di.identities += [Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category])]
|
65
|
-
di.identities.size.
|
64
|
+
di.identities.size.should == 2
|
66
65
|
di.identities = nil
|
67
|
-
di.identities.size.
|
66
|
+
di.identities.size.should == 0
|
68
67
|
end
|
69
68
|
|
70
69
|
it 'allows adding of features' do
|
71
70
|
di = Blather::Stanza::Iq::DiscoInfo.new
|
72
|
-
di.features.size.
|
71
|
+
di.features.size.should == 0
|
73
72
|
di.features = ["feature1"]
|
74
|
-
di.features.size.
|
73
|
+
di.features.size.should == 1
|
75
74
|
di.features += [Blather::Stanza::Iq::DiscoInfo::Feature.new("feature2")]
|
76
|
-
di.features.size.
|
75
|
+
di.features.size.should == 2
|
77
76
|
di.features = nil
|
78
|
-
di.features.size.
|
77
|
+
di.features.size.should == 0
|
79
78
|
end
|
80
79
|
|
81
80
|
end
|
@@ -91,8 +90,8 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
91
90
|
Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name1 type1 category1])]
|
92
91
|
|
93
92
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, ids
|
94
|
-
di.identities.size.
|
95
|
-
di.identities.each { |i| control.include?(i).
|
93
|
+
di.identities.size.should == 2
|
94
|
+
di.identities.each { |i| control.include?(i).should == true }
|
96
95
|
end
|
97
96
|
|
98
97
|
it 'takes a list of Identity objects as identities' do
|
@@ -100,24 +99,24 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
100
99
|
Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name1 type1 category1])]
|
101
100
|
|
102
101
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, control
|
103
|
-
di.identities.size.
|
104
|
-
di.identities.each { |i| control.include?(i).
|
102
|
+
di.identities.size.should == 2
|
103
|
+
di.identities.each { |i| control.include?(i).should == true }
|
105
104
|
end
|
106
105
|
|
107
106
|
it 'takes a single hash as identity' do
|
108
107
|
control = [Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category])]
|
109
108
|
|
110
109
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, {:name => 'name', :type => 'type', :category => 'category'}
|
111
|
-
di.identities.size.
|
112
|
-
di.identities.each { |i| control.include?(i).
|
110
|
+
di.identities.size.should == 1
|
111
|
+
di.identities.each { |i| control.include?(i).should == true }
|
113
112
|
end
|
114
113
|
|
115
114
|
it 'takes a single identity object as identity' do
|
116
115
|
control = [Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category])]
|
117
116
|
|
118
117
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, control.first
|
119
|
-
di.identities.size.
|
120
|
-
di.identities.each { |i| control.include?(i).
|
118
|
+
di.identities.size.should == 1
|
119
|
+
di.identities.each { |i| control.include?(i).should == true }
|
121
120
|
end
|
122
121
|
|
123
122
|
it 'takes a mix of hashes and identity objects as identities' do
|
@@ -130,8 +129,8 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
130
129
|
Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name1 type1 category1])]
|
131
130
|
|
132
131
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, ids
|
133
|
-
di.identities.size.
|
134
|
-
di.identities.each { |i| control.include?(i).
|
132
|
+
di.identities.size.should == 2
|
133
|
+
di.identities.each { |i| control.include?(i).should == true }
|
135
134
|
end
|
136
135
|
end
|
137
136
|
|
@@ -141,8 +140,8 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
141
140
|
control = features.map { |f| Blather::Stanza::Iq::DiscoInfo::Feature.new f }
|
142
141
|
|
143
142
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, [], features
|
144
|
-
di.features.size.
|
145
|
-
di.features.each { |f| control.include?(f).
|
143
|
+
di.features.size.should == 3
|
144
|
+
di.features.each { |f| control.include?(f).should == true }
|
146
145
|
end
|
147
146
|
|
148
147
|
it 'takes a list of features as Feature objects' do
|
@@ -150,24 +149,24 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
150
149
|
control = features.map { |f| Blather::Stanza::Iq::DiscoInfo::Feature.new f }
|
151
150
|
|
152
151
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, [], control
|
153
|
-
di.features.size.
|
154
|
-
di.features.each { |f| control.include?(f).
|
152
|
+
di.features.size.should == 3
|
153
|
+
di.features.each { |f| control.include?(f).should == true }
|
155
154
|
end
|
156
155
|
|
157
156
|
it 'takes a single string' do
|
158
157
|
control = [Blather::Stanza::Iq::DiscoInfo::Feature.new('feature1')]
|
159
158
|
|
160
159
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, [], 'feature1'
|
161
|
-
di.features.size.
|
162
|
-
di.features.each { |f| control.include?(f).
|
160
|
+
di.features.size.should == 1
|
161
|
+
di.features.each { |f| control.include?(f).should == true }
|
163
162
|
end
|
164
163
|
|
165
164
|
it 'takes a single Feature object' do
|
166
165
|
control = [Blather::Stanza::Iq::DiscoInfo::Feature.new('feature1')]
|
167
166
|
|
168
167
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, [], control.first
|
169
|
-
di.features.size.
|
170
|
-
di.features.each { |f| control.include?(f).
|
168
|
+
di.features.size.should == 1
|
169
|
+
di.features.each { |f| control.include?(f).should == true }
|
171
170
|
end
|
172
171
|
|
173
172
|
it 'takes a mixed list of features as Feature objects and strings' do
|
@@ -176,8 +175,8 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
176
175
|
features[1] = control[1]
|
177
176
|
|
178
177
|
di = Blather::Stanza::Iq::DiscoInfo.new nil, nil, [], features
|
179
|
-
di.features.size.
|
180
|
-
di.features.each { |f| control.include?(f).
|
178
|
+
di.features.size.should == 3
|
179
|
+
di.features.each { |f| control.include?(f).should == true }
|
181
180
|
end
|
182
181
|
end
|
183
182
|
|
@@ -185,44 +184,44 @@ describe Blather::Stanza::Iq::DiscoInfo::Identity do
|
|
185
184
|
it 'will auto-inherit nodes' do
|
186
185
|
n = parse_stanza "<identity name='Personal Events' type='pep' category='pubsub' node='publish' xml:lang='en' />"
|
187
186
|
i = Blather::Stanza::Iq::DiscoInfo::Identity.new n.root
|
188
|
-
i.name.
|
189
|
-
i.type.
|
190
|
-
i.category.
|
191
|
-
i.xml_lang.
|
187
|
+
i.name.should == 'Personal Events'
|
188
|
+
i.type.should == :pep
|
189
|
+
i.category.should == :pubsub
|
190
|
+
i.xml_lang.should == 'en'
|
192
191
|
end
|
193
192
|
|
194
193
|
it 'has a category attribute' do
|
195
194
|
n = Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type cat])
|
196
|
-
n.category.
|
195
|
+
n.category.should == :cat
|
197
196
|
n.category = :foo
|
198
|
-
n.category.
|
197
|
+
n.category.should == :foo
|
199
198
|
end
|
200
199
|
|
201
200
|
it 'has a type attribute' do
|
202
201
|
n = Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type cat])
|
203
|
-
n.type.
|
202
|
+
n.type.should == :type
|
204
203
|
n.type = :foo
|
205
|
-
n.type.
|
204
|
+
n.type.should == :foo
|
206
205
|
end
|
207
206
|
|
208
207
|
it 'has a name attribute' do
|
209
208
|
n = Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type cat])
|
210
|
-
n.name.
|
209
|
+
n.name.should == 'name'
|
211
210
|
n.name = :foo
|
212
|
-
n.name.
|
211
|
+
n.name.should == 'foo'
|
213
212
|
end
|
214
213
|
|
215
214
|
it 'has an xml:lang attribute' do
|
216
215
|
n = Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type cat en])
|
217
|
-
n.xml_lang.
|
216
|
+
n.xml_lang.should == 'en'
|
218
217
|
n.xml_lang = 'de'
|
219
|
-
n.xml_lang.
|
218
|
+
n.xml_lang.should == 'de'
|
220
219
|
end
|
221
220
|
|
222
221
|
it 'can determine equality' do
|
223
222
|
a = Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type cat])
|
224
|
-
a.
|
225
|
-
a.
|
223
|
+
a.should == Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[name type cat])
|
224
|
+
a.should_not equal Blather::Stanza::Iq::DiscoInfo::Identity.new(*%w[not-name not-type not-cat])
|
226
225
|
end
|
227
226
|
end
|
228
227
|
|
@@ -230,19 +229,19 @@ describe Blather::Stanza::Iq::DiscoInfo::Feature do
|
|
230
229
|
it 'will auto-inherit nodes' do
|
231
230
|
n = parse_stanza "<feature var='ipv6' />"
|
232
231
|
i = Blather::Stanza::Iq::DiscoInfo::Feature.new n.root
|
233
|
-
i.var.
|
232
|
+
i.var.should == 'ipv6'
|
234
233
|
end
|
235
234
|
|
236
235
|
it 'has a var attribute' do
|
237
236
|
n = Blather::Stanza::Iq::DiscoInfo::Feature.new 'var'
|
238
|
-
n.var.
|
237
|
+
n.var.should == 'var'
|
239
238
|
n.var = :foo
|
240
|
-
n.var.
|
239
|
+
n.var.should == 'foo'
|
241
240
|
end
|
242
241
|
|
243
242
|
it 'can determine equality' do
|
244
243
|
a = Blather::Stanza::Iq::DiscoInfo::Feature.new('var')
|
245
|
-
a.
|
246
|
-
a.
|
244
|
+
a.should == Blather::Stanza::Iq::DiscoInfo::Feature.new('var')
|
245
|
+
a.should_not equal Blather::Stanza::Iq::DiscoInfo::Feature.new('not-var')
|
247
246
|
end
|
248
247
|
end
|