blather 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +7 -7
  3. data/CHANGELOG.md +8 -0
  4. data/blather.gemspec +6 -6
  5. data/lib/blather.rb +1 -1
  6. data/lib/blather/client/client.rb +30 -6
  7. data/lib/blather/version.rb +1 -1
  8. data/spec/blather/client/client_spec.rb +73 -68
  9. data/spec/blather/client/dsl/pubsub_spec.rb +121 -121
  10. data/spec/blather/client/dsl_spec.rb +9 -9
  11. data/spec/blather/errors/sasl_error_spec.rb +3 -3
  12. data/spec/blather/errors/stanza_error_spec.rb +26 -26
  13. data/spec/blather/errors/stream_error_spec.rb +22 -22
  14. data/spec/blather/errors_spec.rb +7 -7
  15. data/spec/blather/file_transfer_spec.rb +9 -9
  16. data/spec/blather/jid_spec.rb +29 -29
  17. data/spec/blather/roster_item_spec.rb +18 -18
  18. data/spec/blather/roster_spec.rb +18 -18
  19. data/spec/blather/stanza/discos/disco_info_spec.rb +56 -56
  20. data/spec/blather/stanza/discos/disco_items_spec.rb +33 -33
  21. data/spec/blather/stanza/iq/command_spec.rb +51 -51
  22. data/spec/blather/stanza/iq/ibb_spec.rb +15 -15
  23. data/spec/blather/stanza/iq/ping_spec.rb +8 -8
  24. data/spec/blather/stanza/iq/query_spec.rb +15 -15
  25. data/spec/blather/stanza/iq/roster_spec.rb +29 -29
  26. data/spec/blather/stanza/iq/s5b_spec.rb +7 -7
  27. data/spec/blather/stanza/iq/si_spec.rb +17 -17
  28. data/spec/blather/stanza/iq/vcard_spec.rb +19 -19
  29. data/spec/blather/stanza/iq_spec.rb +11 -11
  30. data/spec/blather/stanza/message/muc_user_spec.rb +32 -32
  31. data/spec/blather/stanza/message_spec.rb +53 -54
  32. data/spec/blather/stanza/presence/c_spec.rb +11 -11
  33. data/spec/blather/stanza/presence/muc_spec.rb +7 -7
  34. data/spec/blather/stanza/presence/muc_user_spec.rb +22 -22
  35. data/spec/blather/stanza/presence/status_spec.rb +33 -33
  36. data/spec/blather/stanza/presence/subscription_spec.rb +22 -22
  37. data/spec/blather/stanza/presence_spec.rb +30 -30
  38. data/spec/blather/stanza/pubsub/affiliations_spec.rb +11 -11
  39. data/spec/blather/stanza/pubsub/create_spec.rb +10 -10
  40. data/spec/blather/stanza/pubsub/event_spec.rb +24 -24
  41. data/spec/blather/stanza/pubsub/items_spec.rb +20 -20
  42. data/spec/blather/stanza/pubsub/publish_spec.rb +21 -21
  43. data/spec/blather/stanza/pubsub/retract_spec.rb +19 -19
  44. data/spec/blather/stanza/pubsub/subscribe_spec.rb +17 -17
  45. data/spec/blather/stanza/pubsub/subscription_spec.rb +28 -28
  46. data/spec/blather/stanza/pubsub/subscriptions_spec.rb +13 -13
  47. data/spec/blather/stanza/pubsub/unsubscribe_spec.rb +22 -22
  48. data/spec/blather/stanza/pubsub_owner/delete_spec.rb +9 -9
  49. data/spec/blather/stanza/pubsub_owner/purge_spec.rb +9 -9
  50. data/spec/blather/stanza/pubsub_owner_spec.rb +6 -6
  51. data/spec/blather/stanza/pubsub_spec.rb +15 -15
  52. data/spec/blather/stanza/x_spec.rb +53 -53
  53. data/spec/blather/stanza_spec.rb +39 -39
  54. data/spec/blather/stream/client_spec.rb +160 -160
  55. data/spec/blather/stream/component_spec.rb +8 -10
  56. data/spec/blather/stream/parser_spec.rb +25 -25
  57. data/spec/blather/stream/ssl_spec.rb +3 -3
  58. data/spec/blather/xmpp_node_spec.rb +9 -9
  59. data/spec/blather_spec.rb +1 -1
  60. data/spec/spec_helper.rb +1 -1
  61. metadata +26 -27
@@ -42,34 +42,32 @@ describe Blather::Stream::Component do
42
42
  when nil
43
43
  state = :started
44
44
  server.send_data "<?xml version='1.0'?><stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' id='12345'>"
45
- val.should match(/stream:stream/)
45
+ expect(val).to match(/stream:stream/)
46
46
 
47
47
  when :started
48
48
  server.send_data '<handshake/>'
49
49
  EM.stop
50
- val.should == "<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>"
50
+ expect(val).to eq("<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>")
51
51
 
52
52
  end
53
53
  end
54
54
  end
55
55
 
56
56
  it 'raises a NoConnection exception if the connection is unbound before it can be completed' do
57
- proc do
57
+ expect do
58
58
  EventMachine::run {
59
59
  EM.add_timer(0.5) { EM.stop if EM.reactor_running? }
60
60
 
61
61
  Blather::Stream::Component.start client, jid, 'pass', '127.0.0.1', 50000 - rand(1000)
62
62
  }
63
- end.should raise_error Blather::Stream::ConnectionFailed
63
+ end.to raise_error Blather::Stream::ConnectionFailed
64
64
  end
65
65
 
66
66
  it 'starts the stream once the connection is complete' do
67
- mocked_server(1) { |val, _| EM.stop; val.should match(/stream:stream/) }
67
+ mocked_server(1) { |val, _| EM.stop; expect(val).to match(/stream:stream/) }
68
68
  end
69
69
 
70
70
  it 'sends stanzas to the client when the stream is ready' do
71
- pending "This hangs the test suite" if jruby?
72
-
73
71
  client.stubs :post_init
74
72
  client.expects(:receive_data).with do |n|
75
73
  EM.stop
@@ -82,12 +80,12 @@ describe Blather::Stream::Component do
82
80
  when nil
83
81
  state = :started
84
82
  server.send_data "<?xml version='1.0'?><stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' id='12345'>"
85
- val.should match(/stream:stream/)
83
+ expect(val).to match(/stream:stream/)
86
84
 
87
85
  when :started
88
86
  server.send_data '<handshake/>'
89
87
  server.send_data "<message to='comp.id' from='d@e/f' type='chat' xml:lang='en'><body>Message!</body></message>"
90
- val.should == "<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>"
88
+ expect(val).to eq("<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>")
91
89
 
92
90
  end
93
91
  end
@@ -98,7 +96,7 @@ describe Blather::Stream::Component do
98
96
 
99
97
  msg = Blather::Stanza::Message.new 'to@jid.com', 'body'
100
98
  comp = Blather::Stream::Component.new nil, client, 'jid.com', 'pass'
101
- comp.expects(:send_data).with { |s| s.should match(/^<message[^>]*from="jid\.com"/) }
99
+ comp.expects(:send_data).with { |s| expect(s).to match(/^<message[^>]*from="jid\.com"/) }
102
100
  comp.send msg
103
101
  end
104
102
  end
@@ -21,19 +21,19 @@ describe Blather::Stream::Parser do
21
21
  def process(*data)
22
22
  client.latch = CountDownLatch.new 1
23
23
  data.each { |d| subject.receive_data d }
24
- client.latch.wait(2).should be true
24
+ expect(client.latch.wait(2)).to be true
25
25
  end
26
26
 
27
27
  def check_parse(data)
28
28
  process data
29
- client.data.size.should == 1
30
- client.data[0].to_s.gsub(/\n\s*/,'').should == data
29
+ expect(client.data.size).to eq(1)
30
+ expect(client.data[0].to_s.gsub(/\n\s*/,'')).to eq(data)
31
31
  end
32
32
 
33
33
  it 'handles fragmented parsing' do
34
34
  process '<foo>', '<bar/>', '</foo>'
35
- client.data.size.should == 1
36
- client.data[0].to_s.gsub(/\n\s*/,'').should == '<foo><bar/></foo>'
35
+ expect(client.data.size).to eq(1)
36
+ expect(client.data[0].to_s.gsub(/\n\s*/,'')).to eq('<foo><bar/></foo>')
37
37
  end
38
38
 
39
39
  it 'handles a basic example' do
@@ -95,41 +95,41 @@ describe Blather::Stream::Parser do
95
95
  "</message>"
96
96
  ]
97
97
  process *data
98
- client.data.size.should == 1
99
- Nokogiri::XML(client.data[0].to_s.gsub(/\n\s*/, '')).to_s.should == Nokogiri::XML(data.join).to_s
100
- client.data[0].xpath('//*[namespace-uri()="urn:ietf:params:xml:ns:xmpp-stanzas"]').size.should == 2
98
+ expect(client.data.size).to eq(1)
99
+ expect(Nokogiri::XML(client.data[0].to_s.gsub(/\n\s*/, '')).to_s).to eq(Nokogiri::XML(data.join).to_s)
100
+ expect(client.data[0].xpath('//*[namespace-uri()="urn:ietf:params:xml:ns:xmpp-stanzas"]').size).to eq(2)
101
101
  end
102
102
 
103
103
  it 'handles not absolute namespaces' do
104
- lambda do
104
+ expect do
105
105
  process '<iq type="result" id="blather0007" to="n@d/r"><vCard xmlns="vcard-temp"/></iq>'
106
- end.should_not raise_error
106
+ end.not_to raise_error
107
107
  end
108
108
 
109
109
  it 'responds with stream:stream as a separate response' do
110
110
  process '<stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" to="example.com" version="1.0">',
111
111
  '<foo/>'
112
- client.data.size.should == 2
113
- client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size.should == 1
114
- client.data[1].to_s.should == '<foo/>'
112
+ expect(client.data.size).to eq(2)
113
+ expect(client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size).to eq(1)
114
+ expect(client.data[1].to_s).to eq('<foo/>')
115
115
  end
116
116
 
117
117
  it 'response with stream:end when receiving </stream:stream>' do
118
118
  process '<stream:stream xmlns:stream="http://etherx.jabber.org/streams"/>'
119
- client.data.size.should == 2
120
- client.data[1].to_s.should == '<stream:end xmlns:stream="http://etherx.jabber.org/streams"/>'
119
+ expect(client.data.size).to eq(2)
120
+ expect(client.data[1].to_s).to eq('<stream:end xmlns:stream="http://etherx.jabber.org/streams"/>')
121
121
  end
122
122
 
123
123
  it 'raises ParseError when an error is sent' do
124
- lambda { process "<stream:stream>" }.should raise_error(Blather::ParseError)
124
+ expect { process "<stream:stream>" }.to raise_error(Blather::ParseError)
125
125
  end
126
126
 
127
127
  it 'handles stream stanzas without an issue' do
128
128
  process '<stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" to="example.com" version="1.0">',
129
129
  '<stream:features/>'
130
- client.data.size.should == 2
131
- client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size.should == 1
132
- client.data[1].to_s.should == '<stream:features xmlns:stream="http://etherx.jabber.org/streams"/>'
130
+ expect(client.data.size).to eq(2)
131
+ expect(client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size).to eq(1)
132
+ expect(client.data[1].to_s).to eq('<stream:features xmlns:stream="http://etherx.jabber.org/streams"/>')
133
133
  end
134
134
 
135
135
  it 'ignores the client namespace on stanzas' do
@@ -137,9 +137,9 @@ describe Blather::Stream::Parser do
137
137
  "<body>exit</body>",
138
138
  "<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>exit</body></html>",
139
139
  "</message>"
140
- client.data.size.should == 1
141
- client.data[0].document.xpath('/message/body[.="exit"]').should_not be_empty
142
- client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml').should_not be_empty
140
+ expect(client.data.size).to eq(1)
141
+ expect(client.data[0].document.xpath('/message/body[.="exit"]')).not_to be_empty
142
+ expect(client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml')).not_to be_empty
143
143
  end
144
144
 
145
145
  it 'ignores the component namespace on stanzas' do
@@ -147,8 +147,8 @@ describe Blather::Stream::Parser do
147
147
  "<body>exit</body>",
148
148
  "<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>exit</body></html>",
149
149
  "</message>"
150
- client.data.size.should == 1
151
- client.data[0].document.xpath('/message/body[.="exit"]').should_not be_empty
152
- client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml').should_not be_empty
150
+ expect(client.data.size).to eq(1)
151
+ expect(client.data[0].document.xpath('/message/body[.="exit"]')).not_to be_empty
152
+ expect(client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml')).not_to be_empty
153
153
  end
154
154
  end
@@ -10,15 +10,15 @@ describe Blather::CertStore do
10
10
  end
11
11
 
12
12
  it 'can verify valid cert' do
13
- subject.trusted?(cert).should be true
13
+ expect(subject.trusted?(cert)).to be true
14
14
  end
15
15
 
16
16
  it 'can verify invalid cert' do
17
- subject.trusted?(cert[0..(cert.length/2)]).should be_nil
17
+ expect(subject.trusted?('foo bar baz')).to be_nil
18
18
  end
19
19
 
20
20
  it 'cannot verify when the cert authority is not trusted' do
21
21
  @store = Blather::CertStore.new("../")
22
- @store.trusted?(cert).should be false
22
+ expect(@store.trusted?(cert)).to be false
23
23
  end
24
24
  end
@@ -6,33 +6,33 @@ describe Blather::XMPPNode do
6
6
  it 'generates a node based on the registered_name' do
7
7
  foo = Class.new(Blather::XMPPNode)
8
8
  foo.registered_name = 'foo'
9
- foo.new.element_name.should == 'foo'
9
+ expect(foo.new.element_name).to eq('foo')
10
10
  end
11
11
 
12
12
  it 'sets the namespace on creation' do
13
13
  foo = Class.new(Blather::XMPPNode)
14
14
  foo.registered_ns = 'foo'
15
- foo.new('foo').namespace.href.should == 'foo'
15
+ expect(foo.new('foo').namespace.href).to eq('foo')
16
16
  end
17
17
 
18
18
  it 'registers sub classes' do
19
19
  class RegistersSubClass < Blather::XMPPNode; register 'foo', 'foo:bar'; end
20
- RegistersSubClass.registered_name.should == 'foo'
21
- RegistersSubClass.registered_ns.should == 'foo:bar'
22
- Blather::XMPPNode.class_from_registration('foo', 'foo:bar').should == RegistersSubClass
20
+ expect(RegistersSubClass.registered_name).to eq('foo')
21
+ expect(RegistersSubClass.registered_ns).to eq('foo:bar')
22
+ expect(Blather::XMPPNode.class_from_registration('foo', 'foo:bar')).to eq(RegistersSubClass)
23
23
  end
24
24
 
25
25
  it 'imports another node' do
26
26
  class ImportSubClass < Blather::XMPPNode; register 'foo', 'foo:bar'; end
27
27
  n = Blather::XMPPNode.new('foo')
28
28
  n.namespace = 'foo:bar'
29
- Blather::XMPPNode.import(n).should be_kind_of ImportSubClass
29
+ expect(Blather::XMPPNode.import(n)).to be_kind_of ImportSubClass
30
30
  end
31
31
 
32
32
  it 'can convert itself into a stanza' do
33
33
  class StanzaConvert < Blather::XMPPNode; register 'foo'; end
34
34
  n = Blather::XMPPNode.new('foo')
35
- n.to_stanza.should be_kind_of StanzaConvert
35
+ expect(n.to_stanza).to be_kind_of StanzaConvert
36
36
  end
37
37
 
38
38
  it 'can parse a string and import it' do
@@ -40,8 +40,8 @@ describe Blather::XMPPNode do
40
40
  string = '<foo/>'
41
41
  n = Nokogiri::XML(string).root
42
42
  i = Blather::XMPPNode.import n
43
- i.should be_kind_of StanzaParse
43
+ expect(i).to be_kind_of StanzaParse
44
44
  p = Blather::XMPPNode.parse string
45
- p.should be_kind_of StanzaParse
45
+ expect(p).to be_kind_of StanzaParse
46
46
  end
47
47
  end
@@ -4,7 +4,7 @@ describe Blather do
4
4
 
5
5
  describe "while accessing to Logger object" do
6
6
  it "should return a Logger instance" do
7
- Blather.logger.should be_instance_of Logger
7
+ expect(Blather.logger).to be_instance_of Logger
8
8
  end
9
9
  end
10
10
 
@@ -1,5 +1,6 @@
1
1
  require 'blather'
2
2
  require 'countdownlatch'
3
+ require 'sucker_punch/testing/inline'
3
4
 
4
5
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
5
6
 
@@ -9,7 +10,6 @@ RSpec.configure do |config|
9
10
  config.run_all_when_everything_filtered = true
10
11
 
11
12
  config.before(:each) do
12
- GirlFriday::WorkQueue.immediate!
13
13
  Blather::Stream::Parser.debug = true
14
14
  Blather.logger = Logger.new($stdout).tap { |logger| logger.level = Logger::DEBUG }
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blather
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Smick
@@ -9,48 +9,48 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-07 00:00:00.000000000 Z
12
+ date: 2018-06-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.2'
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
- version: 1.0.0
23
+ version: 1.2.6
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '1.2'
25
31
  - - ">="
26
32
  - !ruby/object:Gem::Version
27
- version: 1.0.0
33
+ version: 1.2.6
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: nokogiri
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
38
  - - "~>"
33
39
  - !ruby/object:Gem::Version
34
- version: '1.5'
40
+ version: '1.8'
35
41
  - - ">="
36
42
  - !ruby/object:Gem::Version
37
- version: 1.5.6
38
- - - "<="
39
- - !ruby/object:Gem::Version
40
- version: 1.6.1
43
+ version: 1.8.3
41
44
  type: :runtime
42
45
  prerelease: false
43
46
  version_requirements: !ruby/object:Gem::Requirement
44
47
  requirements:
45
48
  - - "~>"
46
49
  - !ruby/object:Gem::Version
47
- version: '1.5'
50
+ version: '1.8'
48
51
  - - ">="
49
52
  - !ruby/object:Gem::Version
50
- version: 1.5.6
51
- - - "<="
52
- - !ruby/object:Gem::Version
53
- version: 1.6.1
53
+ version: 1.8.3
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: niceogiri
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -80,19 +80,19 @@ dependencies:
80
80
  - !ruby/object:Gem::Version
81
81
  version: 2.3.11
82
82
  - !ruby/object:Gem::Dependency
83
- name: girl_friday
83
+ name: sucker_punch
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ">="
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0'
88
+ version: '2.0'
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">="
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0'
95
+ version: '2.0'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: bundler
98
98
  requirement: !ruby/object:Gem::Requirement
@@ -127,28 +127,28 @@ dependencies:
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '2.7'
130
+ version: '3.0'
131
131
  type: :development
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '2.7'
137
+ version: '3.0'
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: mocha
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '0.9'
144
+ version: '1.0'
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '0.9'
151
+ version: '1.0'
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: guard-rspec
154
154
  requirement: !ruby/object:Gem::Requirement
@@ -169,14 +169,14 @@ dependencies:
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: '0.6'
172
+ version: 0.9.11
173
173
  type: :development
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '0.6'
179
+ version: 0.9.11
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: bluecloth
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -398,7 +398,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
398
398
  version: '0'
399
399
  requirements: []
400
400
  rubyforge_project:
401
- rubygems_version: 2.5.1
401
+ rubygems_version: 2.7.3
402
402
  signing_key:
403
403
  specification_version: 4
404
404
  summary: Simpler XMPP built for speed
@@ -459,4 +459,3 @@ test_files:
459
459
  - spec/fixtures/pubsub.rb
460
460
  - spec/spec_helper.rb
461
461
  - spec/support/mock_server.rb
462
- has_rdoc: