blather 1.2.0 → 2.0.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.
- checksums.yaml +5 -5
- data/.travis.yml +7 -7
- data/CHANGELOG.md +8 -0
- data/blather.gemspec +6 -6
- data/lib/blather.rb +1 -1
- data/lib/blather/client/client.rb +30 -6
- data/lib/blather/version.rb +1 -1
- data/spec/blather/client/client_spec.rb +73 -68
- data/spec/blather/client/dsl/pubsub_spec.rb +121 -121
- data/spec/blather/client/dsl_spec.rb +9 -9
- 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 +9 -9
- 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 -56
- data/spec/blather/stanza/discos/disco_items_spec.rb +33 -33
- data/spec/blather/stanza/iq/command_spec.rb +51 -51
- data/spec/blather/stanza/iq/ibb_spec.rb +15 -15
- data/spec/blather/stanza/iq/ping_spec.rb +8 -8
- data/spec/blather/stanza/iq/query_spec.rb +15 -15
- data/spec/blather/stanza/iq/roster_spec.rb +29 -29
- data/spec/blather/stanza/iq/s5b_spec.rb +7 -7
- data/spec/blather/stanza/iq/si_spec.rb +17 -17
- data/spec/blather/stanza/iq/vcard_spec.rb +19 -19
- data/spec/blather/stanza/iq_spec.rb +11 -11
- data/spec/blather/stanza/message/muc_user_spec.rb +32 -32
- data/spec/blather/stanza/message_spec.rb +53 -54
- data/spec/blather/stanza/presence/c_spec.rb +11 -11
- data/spec/blather/stanza/presence/muc_spec.rb +7 -7
- data/spec/blather/stanza/presence/muc_user_spec.rb +22 -22
- data/spec/blather/stanza/presence/status_spec.rb +33 -33
- data/spec/blather/stanza/presence/subscription_spec.rb +22 -22
- data/spec/blather/stanza/presence_spec.rb +30 -30
- data/spec/blather/stanza/pubsub/affiliations_spec.rb +11 -11
- data/spec/blather/stanza/pubsub/create_spec.rb +10 -10
- data/spec/blather/stanza/pubsub/event_spec.rb +24 -24
- data/spec/blather/stanza/pubsub/items_spec.rb +20 -20
- data/spec/blather/stanza/pubsub/publish_spec.rb +21 -21
- data/spec/blather/stanza/pubsub/retract_spec.rb +19 -19
- 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 +13 -13
- 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 +15 -15
- data/spec/blather/stanza/x_spec.rb +53 -53
- data/spec/blather/stanza_spec.rb +39 -39
- data/spec/blather/stream/client_spec.rb +160 -160
- data/spec/blather/stream/component_spec.rb +8 -10
- data/spec/blather/stream/parser_spec.rb +25 -25
- data/spec/blather/stream/ssl_spec.rb +3 -3
- data/spec/blather/xmpp_node_spec.rb +9 -9
- data/spec/blather_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +26 -27
@@ -23,31 +23,31 @@ end
|
|
23
23
|
|
24
24
|
describe Blather::Stanza::Iq::DiscoItems do
|
25
25
|
it 'registers itself' do
|
26
|
-
Blather::XMPPNode.class_from_registration(:query, 'http://jabber.org/protocol/disco#items').
|
26
|
+
expect(Blather::XMPPNode.class_from_registration(:query, 'http://jabber.org/protocol/disco#items')).to eq(Blather::Stanza::Iq::DiscoItems)
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'must be importable' do
|
30
|
-
Blather::XMPPNode.parse(disco_items_xml).
|
30
|
+
expect(Blather::XMPPNode.parse(disco_items_xml)).to be_instance_of Blather::Stanza::Iq::DiscoItems
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'is constructed properly' do
|
34
34
|
n = Blather::Stanza::Iq::DiscoItems.new :get, '/path/to/node'
|
35
35
|
n.to = 'to@jid.com'
|
36
|
-
n.find("/iq[@to='to@jid.com' and @type='get' and @id='#{n.id}']/ns:query[@node='/path/to/node']", :ns => Blather::Stanza::Iq::DiscoItems.registered_ns).
|
36
|
+
expect(n.find("/iq[@to='to@jid.com' and @type='get' and @id='#{n.id}']/ns:query[@node='/path/to/node']", :ns => Blather::Stanza::Iq::DiscoItems.registered_ns)).not_to be_empty
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'has a node attribute' do
|
40
40
|
n = Blather::Stanza::Iq::DiscoItems.new nil, 'music', []
|
41
|
-
n.node.
|
41
|
+
expect(n.node).to eq('music')
|
42
42
|
n.node = :foo
|
43
|
-
n.node.
|
43
|
+
expect(n.node).to eq('foo')
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'inherits a list of identities' do
|
47
47
|
n = parse_stanza disco_items_xml
|
48
48
|
r = Blather::Stanza::Iq::DiscoItems.new.inherit n.root
|
49
|
-
r.items.size.
|
50
|
-
r.items.map { |i| i.class }.uniq.
|
49
|
+
expect(r.items.size).to eq(3)
|
50
|
+
expect(r.items.map { |i| i.class }.uniq).to eq([Blather::Stanza::Iq::DiscoItems::Item])
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'takes a list of hashes for items' do
|
@@ -60,8 +60,8 @@ describe Blather::Stanza::Iq::DiscoItems do
|
|
60
60
|
Blather::Stanza::Iq::DiscoItems::Item.new(*%w[baz@foo/bar node1 name1])]
|
61
61
|
|
62
62
|
di = Blather::Stanza::Iq::DiscoItems.new nil, nil, items
|
63
|
-
di.items.size.
|
64
|
-
di.items.each { |i| control.include?(i).
|
63
|
+
expect(di.items.size).to eq(2)
|
64
|
+
di.items.each { |i| expect(control.include?(i)).to eq(true) }
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'takes a list of Item objects as items' do
|
@@ -69,24 +69,24 @@ describe Blather::Stanza::Iq::DiscoItems do
|
|
69
69
|
Blather::Stanza::Iq::DiscoItems::Item.new(*%w[baz@foo/bar node1 name1])]
|
70
70
|
|
71
71
|
di = Blather::Stanza::Iq::DiscoItems.new nil, nil, control
|
72
|
-
di.items.size.
|
73
|
-
di.items.each { |i| control.include?(i).
|
72
|
+
expect(di.items.size).to eq(2)
|
73
|
+
di.items.each { |i| expect(control.include?(i)).to eq(true) }
|
74
74
|
end
|
75
75
|
|
76
76
|
it 'takes a single hash as identity' do
|
77
77
|
control = [Blather::Stanza::Iq::DiscoItems::Item.new(*%w[foo@bar/baz node name])]
|
78
78
|
|
79
79
|
di = Blather::Stanza::Iq::DiscoItems.new nil, nil, {:jid => 'foo@bar/baz', :node => 'node', :name => 'name'}
|
80
|
-
di.items.size.
|
81
|
-
di.items.each { |i| control.include?(i).
|
80
|
+
expect(di.items.size).to eq(1)
|
81
|
+
di.items.each { |i| expect(control.include?(i)).to eq(true) }
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'takes a single identity object as identity' do
|
85
85
|
control = [Blather::Stanza::Iq::DiscoItems::Item.new(*%w[foo@bar/baz node name])]
|
86
86
|
|
87
87
|
di = Blather::Stanza::Iq::DiscoItems.new nil, nil, control.first
|
88
|
-
di.items.size.
|
89
|
-
di.items.each { |i| control.include?(i).
|
88
|
+
expect(di.items.size).to eq(1)
|
89
|
+
di.items.each { |i| expect(control.include?(i)).to eq(true) }
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'takes a mix of hashes and identity objects as items' do
|
@@ -99,19 +99,19 @@ describe Blather::Stanza::Iq::DiscoItems do
|
|
99
99
|
Blather::Stanza::Iq::DiscoItems::Item.new(*%w[baz@foo/bar node1 name1])]
|
100
100
|
|
101
101
|
di = Blather::Stanza::Iq::DiscoItems.new nil, nil, items
|
102
|
-
di.items.size.
|
103
|
-
di.items.each { |i| control.include?(i).
|
102
|
+
expect(di.items.size).to eq(2)
|
103
|
+
di.items.each { |i| expect(control.include?(i)).to eq(true) }
|
104
104
|
end
|
105
105
|
|
106
106
|
it 'allows adding of items' do
|
107
107
|
di = Blather::Stanza::Iq::DiscoItems.new
|
108
|
-
di.items.size.
|
108
|
+
expect(di.items.size).to eq(0)
|
109
109
|
di.items = [{:jid => 'foo@bar/baz', :node => 'node', :name => 'name'}]
|
110
|
-
di.items.size.
|
110
|
+
expect(di.items.size).to eq(1)
|
111
111
|
di.items += [Blather::Stanza::Iq::DiscoItems::Item.new(*%w[foo@bar/baz node name])]
|
112
|
-
di.items.size.
|
112
|
+
expect(di.items.size).to eq(2)
|
113
113
|
di.items = nil
|
114
|
-
di.items.size.
|
114
|
+
expect(di.items.size).to eq(0)
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
@@ -119,36 +119,36 @@ describe Blather::Stanza::Iq::DiscoItems::Item do
|
|
119
119
|
it 'will auto-inherit nodes' do
|
120
120
|
n = parse_stanza "<item jid='foo@bar/baz' node='music' name='Music from the time of Shakespeare' />"
|
121
121
|
i = Blather::Stanza::Iq::DiscoItems::Item.new n.root
|
122
|
-
i.jid.
|
123
|
-
i.node.
|
124
|
-
i.name.
|
122
|
+
expect(i.jid).to eq(Blather::JID.new('foo@bar/baz'))
|
123
|
+
expect(i.node).to eq('music')
|
124
|
+
expect(i.name).to eq('Music from the time of Shakespeare')
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'has a jid attribute' do
|
128
128
|
n = Blather::Stanza::Iq::DiscoItems::Item.new 'foo@bar/baz'
|
129
|
-
n.jid.
|
130
|
-
n.jid.
|
129
|
+
expect(n.jid).to be_kind_of Blather::JID
|
130
|
+
expect(n.jid).to eq(Blather::JID.new('foo@bar/baz'))
|
131
131
|
n.jid = 'baz@foo/bar'
|
132
|
-
n.jid.
|
132
|
+
expect(n.jid).to eq(Blather::JID.new('baz@foo/bar'))
|
133
133
|
end
|
134
134
|
|
135
135
|
it 'has a node attribute' do
|
136
136
|
n = Blather::Stanza::Iq::DiscoItems::Item.new 'foo@bar/baz', 'music'
|
137
|
-
n.node.
|
137
|
+
expect(n.node).to eq('music')
|
138
138
|
n.node = 'book'
|
139
|
-
n.node.
|
139
|
+
expect(n.node).to eq('book')
|
140
140
|
end
|
141
141
|
|
142
142
|
it 'has a name attribute' do
|
143
143
|
n = Blather::Stanza::Iq::DiscoItems::Item.new 'foo@bar/baz', nil, 'Music from the time of Shakespeare'
|
144
|
-
n.name.
|
144
|
+
expect(n.name).to eq('Music from the time of Shakespeare')
|
145
145
|
n.name = 'Books by and about Shakespeare'
|
146
|
-
n.name.
|
146
|
+
expect(n.name).to eq('Books by and about Shakespeare')
|
147
147
|
end
|
148
148
|
|
149
149
|
it 'can determine equality' do
|
150
150
|
a = Blather::Stanza::Iq::DiscoItems::Item.new('foo@bar/baz')
|
151
|
-
a.
|
152
|
-
a.
|
151
|
+
expect(a).to eq(Blather::Stanza::Iq::DiscoItems::Item.new('foo@bar/baz'))
|
152
|
+
expect(a).not_to equal Blather::Stanza::Iq::DiscoItems::Item.new('not-foo@bar/baz')
|
153
153
|
end
|
154
154
|
end
|
@@ -19,188 +19,188 @@ end
|
|
19
19
|
|
20
20
|
describe Blather::Stanza::Iq::Command do
|
21
21
|
it 'registers itself' do
|
22
|
-
Blather::XMPPNode.class_from_registration(:command, 'http://jabber.org/protocol/commands').
|
22
|
+
expect(Blather::XMPPNode.class_from_registration(:command, 'http://jabber.org/protocol/commands')).to eq(Blather::Stanza::Iq::Command)
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'must be importable' do
|
26
|
-
Blather::XMPPNode.parse(command_xml).
|
26
|
+
expect(Blather::XMPPNode.parse(command_xml)).to be_instance_of Blather::Stanza::Iq::Command
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'ensures a command node is present on create' do
|
30
30
|
c = Blather::Stanza::Iq::Command.new
|
31
|
-
c.xpath('xmlns:command', :xmlns => Blather::Stanza::Iq::Command.registered_ns).
|
31
|
+
expect(c.xpath('xmlns:command', :xmlns => Blather::Stanza::Iq::Command.registered_ns)).not_to be_empty
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'ensures a command node exists when calling #command' do
|
35
35
|
c = Blather::Stanza::Iq::Command.new
|
36
36
|
c.remove_children :command
|
37
|
-
c.xpath('ns:command', :ns => Blather::Stanza::Iq::Command.registered_ns).
|
37
|
+
expect(c.xpath('ns:command', :ns => Blather::Stanza::Iq::Command.registered_ns)).to be_empty
|
38
38
|
|
39
|
-
c.command.
|
40
|
-
c.xpath('ns:command', :ns => Blather::Stanza::Iq::Command.registered_ns).
|
39
|
+
expect(c.command).not_to be_nil
|
40
|
+
expect(c.xpath('ns:command', :ns => Blather::Stanza::Iq::Command.registered_ns)).not_to be_empty
|
41
41
|
end
|
42
42
|
|
43
43
|
Blather::Stanza::Iq::Command::VALID_ACTIONS.each do |valid_action|
|
44
44
|
it "provides a helper (#{valid_action}?) for action #{valid_action}" do
|
45
|
-
Blather::Stanza::Iq::Command.new.
|
45
|
+
expect(Blather::Stanza::Iq::Command.new).to respond_to :"#{valid_action}?"
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
Blather::Stanza::Iq::Command::VALID_STATUS.each do |valid_status|
|
50
50
|
it "provides a helper (#{valid_status}?) for status #{valid_status}" do
|
51
|
-
Blather::Stanza::Iq::Command.new.
|
51
|
+
expect(Blather::Stanza::Iq::Command.new).to respond_to :"#{valid_status}?"
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
Blather::Stanza::Iq::Command::VALID_NOTE_TYPES.each do |valid_note_type|
|
56
56
|
it "provides a helper (#{valid_note_type}?) for note_type #{valid_note_type}" do
|
57
|
-
Blather::Stanza::Iq::Command.new.
|
57
|
+
expect(Blather::Stanza::Iq::Command.new).to respond_to :"#{valid_note_type}?"
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
[:cancel, :execute, :complete, :next, :prev].each do |action|
|
62
62
|
it "action can be set as \"#{action}\"" do
|
63
63
|
c = Blather::Stanza::Iq::Command.new nil, nil, action
|
64
|
-
c.action.
|
64
|
+
expect(c.action).to eq(action)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
[:get, :set, :result, :error].each do |type|
|
69
69
|
it "can be set as \"#{type}\"" do
|
70
70
|
c = Blather::Stanza::Iq::Command.new type
|
71
|
-
c.type.
|
71
|
+
expect(c.type).to eq(type)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'sets type to "result" on reply' do
|
76
76
|
c = Blather::Stanza::Iq::Command.new
|
77
|
-
c.type.
|
78
|
-
reply = c.reply.type.
|
77
|
+
expect(c.type).to eq(:set)
|
78
|
+
reply = expect(c.reply.type).to eq(:result)
|
79
79
|
end
|
80
80
|
|
81
81
|
it 'sets type to "result" on reply!' do
|
82
82
|
c = Blather::Stanza::Iq::Command.new
|
83
|
-
c.type.
|
83
|
+
expect(c.type).to eq(:set)
|
84
84
|
c.reply!
|
85
|
-
c.type.
|
85
|
+
expect(c.type).to eq(:result)
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'removes action on reply' do
|
89
89
|
c = Blather::XMPPNode.parse command_xml
|
90
|
-
c.action.
|
91
|
-
c.reply.action.
|
90
|
+
expect(c.action).to eq(:execute)
|
91
|
+
expect(c.reply.action).to eq(nil)
|
92
92
|
end
|
93
93
|
|
94
94
|
it 'removes action on reply!' do
|
95
95
|
c = Blather::XMPPNode.parse command_xml
|
96
|
-
c.action.
|
96
|
+
expect(c.action).to eq(:execute)
|
97
97
|
c.reply!
|
98
|
-
c.action.
|
98
|
+
expect(c.action).to eq(nil)
|
99
99
|
end
|
100
100
|
|
101
101
|
it 'can be registered under a namespace' do
|
102
102
|
class CommandNs < Blather::Stanza::Iq::Command; register :command_ns, nil, 'command:ns'; end
|
103
|
-
Blather::XMPPNode.class_from_registration(:command, 'command:ns').
|
103
|
+
expect(Blather::XMPPNode.class_from_registration(:command, 'command:ns')).to eq(CommandNs)
|
104
104
|
c_ns = CommandNs.new
|
105
|
-
c_ns.xpath('command').
|
106
|
-
c_ns.xpath('ns:command', :ns => 'command:ns').size.
|
105
|
+
expect(c_ns.xpath('command')).to be_empty
|
106
|
+
expect(c_ns.xpath('ns:command', :ns => 'command:ns').size).to eq(1)
|
107
107
|
|
108
108
|
c_ns.command
|
109
109
|
c_ns.command
|
110
|
-
c_ns.xpath('ns:command', :ns => 'command:ns').size.
|
110
|
+
expect(c_ns.xpath('ns:command', :ns => 'command:ns').size).to eq(1)
|
111
111
|
end
|
112
112
|
|
113
113
|
it 'is constructed properly' do
|
114
114
|
n = Blather::Stanza::Iq::Command.new :set, "node", :execute
|
115
115
|
n.to = 'to@jid.com'
|
116
|
-
n.find("/iq[@to='to@jid.com' and @type='set' and @id='#{n.id}']/ns:command[@node='node' and @action='execute']", :ns => Blather::Stanza::Iq::Command.registered_ns).
|
116
|
+
expect(n.find("/iq[@to='to@jid.com' and @type='set' and @id='#{n.id}']/ns:command[@node='node' and @action='execute']", :ns => Blather::Stanza::Iq::Command.registered_ns)).not_to be_empty
|
117
117
|
end
|
118
118
|
|
119
119
|
it 'has an action attribute' do
|
120
120
|
n = Blather::Stanza::Iq::Command.new
|
121
|
-
n.action.
|
121
|
+
expect(n.action).to eq(:execute)
|
122
122
|
n.action = :cancel
|
123
|
-
n.action.
|
123
|
+
expect(n.action).to eq(:cancel)
|
124
124
|
end
|
125
125
|
|
126
126
|
it 'must default action to :execute on import' do
|
127
127
|
n = Blather::XMPPNode.parse(command_xml)
|
128
|
-
n.action.
|
128
|
+
expect(n.action).to eq(:execute)
|
129
129
|
end
|
130
130
|
|
131
131
|
it 'has a status attribute' do
|
132
132
|
n = Blather::Stanza::Iq::Command.new
|
133
|
-
n.status.
|
133
|
+
expect(n.status).to eq(:executing)
|
134
134
|
n.status = :completed
|
135
|
-
n.status.
|
135
|
+
expect(n.status).to eq(:completed)
|
136
136
|
end
|
137
137
|
|
138
138
|
it 'has a sessionid attribute' do
|
139
139
|
n = Blather::Stanza::Iq::Command.new
|
140
|
-
n.sessionid.
|
140
|
+
expect(n.sessionid).to eq(nil)
|
141
141
|
n.sessionid = "somerandomstring"
|
142
|
-
n.sessionid.
|
142
|
+
expect(n.sessionid).to eq(Digest::SHA1.hexdigest("somerandomstring"))
|
143
143
|
end
|
144
144
|
|
145
145
|
it 'has a sessionid? attribute' do
|
146
146
|
n = Blather::Stanza::Iq::Command.new
|
147
|
-
n.sessionid
|
147
|
+
expect(n.sessionid?).to eq(false)
|
148
148
|
n.new_sessionid!
|
149
|
-
n.sessionid
|
149
|
+
expect(n.sessionid?).to eq(true)
|
150
150
|
end
|
151
151
|
|
152
152
|
it 'has an allowed_actions attribute' do
|
153
153
|
n = Blather::XMPPNode.parse command_xml
|
154
|
-
n.allowed_actions.
|
154
|
+
expect(n.allowed_actions).to eq([:execute])
|
155
155
|
n.allowed_actions = [:next, :prev]
|
156
|
-
(n.allowed_actions - [:next, :prev, :execute]).
|
156
|
+
expect(n.allowed_actions - [:next, :prev, :execute]).to be_empty
|
157
157
|
n.remove_allowed_actions!
|
158
|
-
n.allowed_actions.
|
158
|
+
expect(n.allowed_actions).to eq([:execute])
|
159
159
|
n.allowed_actions += [:next]
|
160
|
-
(n.allowed_actions - [:next, :execute]).
|
160
|
+
expect(n.allowed_actions - [:next, :execute]).to be_empty
|
161
161
|
|
162
162
|
r = Blather::Stanza::Iq::Command.new
|
163
|
-
r.allowed_actions.
|
163
|
+
expect(r.allowed_actions).to eq([:execute])
|
164
164
|
r.allowed_actions += [:prev]
|
165
|
-
(r.allowed_actions - [:prev, :execute]).
|
165
|
+
expect(r.allowed_actions - [:prev, :execute]).to be_empty
|
166
166
|
end
|
167
167
|
|
168
168
|
it 'has a primary_allowed_action attribute' do
|
169
169
|
n = Blather::XMPPNode.parse command_xml
|
170
|
-
n.primary_allowed_action.
|
170
|
+
expect(n.primary_allowed_action).to eq(:execute)
|
171
171
|
n.primary_allowed_action = :next
|
172
|
-
n.primary_allowed_action.
|
172
|
+
expect(n.primary_allowed_action).to eq(:next)
|
173
173
|
end
|
174
174
|
|
175
175
|
it 'has a note_type attribute' do
|
176
176
|
n = Blather::Stanza::Iq::Command.new
|
177
|
-
n.note_type.
|
177
|
+
expect(n.note_type).to eq(nil)
|
178
178
|
n.note_type = :info
|
179
|
-
n.note_type.
|
179
|
+
expect(n.note_type).to eq(:info)
|
180
180
|
end
|
181
181
|
|
182
182
|
it 'has a note_text attribute' do
|
183
183
|
n = Blather::Stanza::Iq::Command.new
|
184
|
-
n.note_text.
|
184
|
+
expect(n.note_text).to eq(nil)
|
185
185
|
n.note_text = "Some text"
|
186
|
-
n.note_text.
|
186
|
+
expect(n.note_text).to eq("Some text")
|
187
187
|
end
|
188
188
|
|
189
189
|
it 'makes a form child available' do
|
190
190
|
n = Blather::XMPPNode.parse(command_xml)
|
191
|
-
n.form.fields.size.
|
192
|
-
n.form.fields.map { |f| f.class }.uniq.
|
193
|
-
n.form.
|
191
|
+
expect(n.form.fields.size).to eq(1)
|
192
|
+
expect(n.form.fields.map { |f| f.class }.uniq).to eq([Blather::Stanza::X::Field])
|
193
|
+
expect(n.form).to be_instance_of Blather::Stanza::X
|
194
194
|
|
195
195
|
r = Blather::Stanza::Iq::Command.new
|
196
196
|
r.form.type = :form
|
197
|
-
r.form.type.
|
197
|
+
expect(r.form.type).to eq(:form)
|
198
198
|
end
|
199
199
|
|
200
200
|
it 'ensures the form child is a child of command' do
|
201
201
|
r = Blather::Stanza::Iq::Command.new
|
202
202
|
r.form
|
203
|
-
r.command.xpath('ns:x', :ns => Blather::Stanza::X.registered_ns).
|
204
|
-
r.xpath('ns:x', :ns => Blather::Stanza::X.registered_ns).
|
203
|
+
expect(r.command.xpath('ns:x', :ns => Blather::Stanza::X.registered_ns)).not_to be_empty
|
204
|
+
expect(r.xpath('ns:x', :ns => Blather::Stanza::X.registered_ns)).to be_empty
|
205
205
|
end
|
206
206
|
end
|
@@ -44,81 +44,81 @@ end
|
|
44
44
|
|
45
45
|
describe Blather::Stanza::Iq::Ibb::Open do
|
46
46
|
it 'registers itself' do
|
47
|
-
Blather::XMPPNode.class_from_registration(:open, 'http://jabber.org/protocol/ibb').
|
47
|
+
expect(Blather::XMPPNode.class_from_registration(:open, 'http://jabber.org/protocol/ibb')).to eq(Blather::Stanza::Iq::Ibb::Open)
|
48
48
|
end
|
49
49
|
|
50
50
|
it 'can be imported' do
|
51
51
|
node = Blather::XMPPNode.parse ibb_open_xml
|
52
|
-
node.
|
52
|
+
expect(node).to be_instance_of Blather::Stanza::Iq::Ibb::Open
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'has open node' do
|
56
56
|
node = Blather::XMPPNode.parse ibb_open_xml
|
57
|
-
node.open.
|
57
|
+
expect(node.open).to be_kind_of Nokogiri::XML::Element
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'can get sid' do
|
61
61
|
node = Blather::XMPPNode.parse ibb_open_xml
|
62
|
-
node.sid.
|
62
|
+
expect(node.sid).to eq('i781hf64')
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'deleted open node on reply' do
|
66
66
|
node = Blather::XMPPNode.parse ibb_open_xml
|
67
67
|
reply = node.reply
|
68
|
-
reply.open.
|
68
|
+
expect(reply.open).to be_nil
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
72
|
describe Blather::Stanza::Iq::Ibb::Data do
|
73
73
|
it 'registers itself' do
|
74
|
-
Blather::XMPPNode.class_from_registration(:data, 'http://jabber.org/protocol/ibb').
|
74
|
+
expect(Blather::XMPPNode.class_from_registration(:data, 'http://jabber.org/protocol/ibb')).to eq(Blather::Stanza::Iq::Ibb::Data)
|
75
75
|
end
|
76
76
|
|
77
77
|
it 'can be imported' do
|
78
78
|
node = Blather::XMPPNode.parse ibb_data_xml
|
79
|
-
node.
|
79
|
+
expect(node).to be_instance_of Blather::Stanza::Iq::Ibb::Data
|
80
80
|
end
|
81
81
|
|
82
82
|
it 'has data node' do
|
83
83
|
node = Blather::XMPPNode.parse ibb_data_xml
|
84
|
-
node.data.
|
84
|
+
expect(node.data).to be_kind_of Nokogiri::XML::Element
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'can get sid' do
|
88
88
|
node = Blather::XMPPNode.parse ibb_data_xml
|
89
|
-
node.sid.
|
89
|
+
expect(node.sid).to eq('i781hf64')
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'deleted data node on reply' do
|
93
93
|
node = Blather::XMPPNode.parse ibb_data_xml
|
94
94
|
reply = node.reply
|
95
|
-
reply.data.
|
95
|
+
expect(reply.data).to be_nil
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
99
|
describe Blather::Stanza::Iq::Ibb::Close do
|
100
100
|
it 'registers itself' do
|
101
|
-
Blather::XMPPNode.class_from_registration(:close, 'http://jabber.org/protocol/ibb').
|
101
|
+
expect(Blather::XMPPNode.class_from_registration(:close, 'http://jabber.org/protocol/ibb')).to eq(Blather::Stanza::Iq::Ibb::Close)
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'can be imported' do
|
105
105
|
node = Blather::XMPPNode.parse ibb_close_xml
|
106
|
-
node.
|
106
|
+
expect(node).to be_instance_of Blather::Stanza::Iq::Ibb::Close
|
107
107
|
end
|
108
108
|
|
109
109
|
it 'has close node' do
|
110
110
|
node = Blather::XMPPNode.parse ibb_close_xml
|
111
|
-
node.close.
|
111
|
+
expect(node.close).to be_kind_of Nokogiri::XML::Element
|
112
112
|
end
|
113
113
|
|
114
114
|
it 'can get sid' do
|
115
115
|
node = Blather::XMPPNode.parse ibb_close_xml
|
116
|
-
node.sid.
|
116
|
+
expect(node.sid).to eq('i781hf64')
|
117
117
|
end
|
118
118
|
|
119
119
|
it 'deleted close node on reply' do
|
120
120
|
node = Blather::XMPPNode.parse ibb_close_xml
|
121
121
|
reply = node.reply
|
122
|
-
reply.close.
|
122
|
+
expect(reply.close).to be_nil
|
123
123
|
end
|
124
124
|
end
|