jabber4r-revive 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -4
- data/.rspec +3 -3
- data/.travis.yml +7 -7
- data/CHANGELOG +11 -1
- data/Gemfile +3 -3
- data/README.md +29 -29
- data/Rakefile +70 -70
- data/jabber4r-revive.gemspec +25 -25
- data/lib/jabber4r.rb +38 -33
- data/lib/jabber4r/bosh.rb +21 -0
- data/lib/jabber4r/bosh/authentication.rb +13 -0
- data/lib/jabber4r/bosh/authentication/non_sasl.rb +219 -0
- data/lib/jabber4r/bosh/authentication/sasl.rb +239 -0
- data/lib/jabber4r/bosh/session.rb +144 -0
- data/lib/jabber4r/connection.rb +259 -258
- data/lib/jabber4r/debugger.rb +60 -60
- data/lib/jabber4r/jid.rb +20 -19
- data/lib/jabber4r/protocol.rb +249 -257
- data/lib/jabber4r/protocol/authentication.rb +14 -0
- data/lib/jabber4r/protocol/authentication/non_sasl.rb +138 -0
- data/lib/jabber4r/protocol/authentication/sasl.rb +88 -0
- data/lib/jabber4r/protocol/iq.rb +259 -259
- data/lib/jabber4r/protocol/message.rb +245 -245
- data/lib/jabber4r/protocol/parsed_xml_element.rb +207 -207
- data/lib/jabber4r/protocol/presence.rb +160 -160
- data/lib/jabber4r/protocol/xml_element.rb +143 -143
- data/lib/jabber4r/rexml_1.8_patch.rb +15 -15
- data/lib/jabber4r/roster.rb +38 -38
- data/lib/jabber4r/session.rb +615 -615
- data/lib/jabber4r/version.rb +10 -3
- data/spec/lib/jabber4r/bosh/authentication/non_sasl_spec.rb +79 -0
- data/spec/lib/jabber4r/bosh/authentication/sasl_spec.rb +42 -0
- data/spec/lib/jabber4r/bosh/session_spec.rb +406 -0
- data/spec/lib/jabber4r/bosh_spec.rb +0 -0
- data/spec/lib/jabber4r/connection_spec.rb +174 -174
- data/spec/lib/jabber4r/debugger_spec.rb +35 -35
- data/spec/lib/jabber4r/jid_spec.rb +197 -197
- data/spec/lib/jabber4r/protocol/authentication/non_sasl_spec.rb +79 -0
- data/spec/lib/jabber4r/protocol/authentication/sasl_spec.rb +42 -0
- data/spec/spec_helper.rb +11 -11
- data/spec/support/mocks/tcp_socket_mock.rb +8 -8
- metadata +61 -45
- data/Gemfile.lock +0 -45
- data/lib/jabber4r/bosh_session.rb +0 -224
- data/spec/lib/jabber4r/bosh_session_spec.rb +0 -150
@@ -1,150 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require "spec_helper"
|
3
|
-
|
4
|
-
describe Jabber::BoshSession do
|
5
|
-
let(:successful_login) { '<body xmlns="http://jabber.org/protocol/httpbind"><iq type="result" xmlns="jabber:client" id="2034"/></body>' }
|
6
|
-
let(:successful_open_stream) do
|
7
|
-
[
|
8
|
-
'<body xmlns="http://jabber.org/protocol/httpbind" xmlns:xmpp="urn:xmpp:xbosh" xmlns:stream="http://etherx.jabber.org/streams"',
|
9
|
-
'authid="3780309894" sid="ce21410" from="localhost"',
|
10
|
-
'wait="60" requests="2" inactivity="30" maxpause="120" polling="2" ver="1.8" secure="true" />'
|
11
|
-
].join " "
|
12
|
-
end
|
13
|
-
let(:is_open_stream?) { ->(data) { x = Ox.parse(data); ["1", "localhost"] == [x[:rid], x[:to]] } }
|
14
|
-
let(:is_login?) { ->(data) { x = Ox.parse(data); ["1", "ce21410"] == [x[:rid], x[:sid]] } }
|
15
|
-
let(:bosh_session) { described_class.bind("strech@localhost/resource", "password") }
|
16
|
-
|
17
|
-
before { Jabber::BoshSession.any_instance.stub(:generate_next_rid).and_return "1" }
|
18
|
-
|
19
|
-
describe "#bind" do
|
20
|
-
context "when session successfuly binded" do
|
21
|
-
before do
|
22
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
23
|
-
.with(body: is_open_stream?)
|
24
|
-
.to_return(body: successful_open_stream)
|
25
|
-
|
26
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
27
|
-
.with(body: is_login?)
|
28
|
-
.to_return(body: successful_login)
|
29
|
-
end
|
30
|
-
|
31
|
-
it { expect(bosh_session).to be_alive }
|
32
|
-
end
|
33
|
-
|
34
|
-
context "when couldn't open stream" do
|
35
|
-
context "when response body missed authid attribute" do
|
36
|
-
let(:malformed_body) { '<body xmlns="http://jabber.org/protocol/httpbind" sid="ce21410" />' }
|
37
|
-
|
38
|
-
before do
|
39
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
40
|
-
.with(body: is_open_stream?)
|
41
|
-
.to_return(body: malformed_body)
|
42
|
-
|
43
|
-
WebMock.should_not have_requested(:post, "http://localhost:5280/http-bind")
|
44
|
-
.with(body: is_login?)
|
45
|
-
end
|
46
|
-
|
47
|
-
it { expect { bosh_session }.to raise_error Jabber::XMLMalformedError, "Couldn't find <body /> attribute [authid]" }
|
48
|
-
end
|
49
|
-
|
50
|
-
context "when response body missed sid attribute" do
|
51
|
-
let(:malformed_body) { '<body xmlns="http://jabber.org/protocol/httpbind" authid="3780309894" />' }
|
52
|
-
|
53
|
-
before do
|
54
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
55
|
-
.with(body: is_open_stream?)
|
56
|
-
.to_return(body: malformed_body)
|
57
|
-
|
58
|
-
WebMock.should_not have_requested(:post, "http://localhost:5280/http-bind")
|
59
|
-
.with(body: is_login?)
|
60
|
-
end
|
61
|
-
|
62
|
-
it { expect { bosh_session }.to raise_error Jabber::XMLMalformedError, "Couldn't find <body /> attribute [sid]" }
|
63
|
-
end
|
64
|
-
|
65
|
-
context "when response was not 200 OK" do
|
66
|
-
before do
|
67
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
68
|
-
.with(body: is_open_stream?)
|
69
|
-
.to_return(body: "Foo", status: 401)
|
70
|
-
|
71
|
-
WebMock.should_not have_requested(:post, "http://localhost:5280/http-bind")
|
72
|
-
.with(body: is_login?)
|
73
|
-
end
|
74
|
-
|
75
|
-
it { expect { bosh_session }.to raise_error Net::HTTPBadResponse }
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
context "when couldn't login in opened stream" do
|
80
|
-
context "when response is a malformed xml without IQ tag" do
|
81
|
-
let(:malformed_body) { '<body xmlns="http://jabber.org/protocol/httpbind"></body>' }
|
82
|
-
|
83
|
-
before do
|
84
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
85
|
-
.with(body: is_open_stream?)
|
86
|
-
.to_return(body: successful_open_stream)
|
87
|
-
|
88
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
89
|
-
.with(body: is_login?)
|
90
|
-
.to_return(body: malformed_body)
|
91
|
-
end
|
92
|
-
|
93
|
-
it { expect { bosh_session }.to raise_error Jabber::XMLMalformedError, "Couldn't find xml tag <iq/>" }
|
94
|
-
end
|
95
|
-
|
96
|
-
context "when response has type not equal 'result'" do
|
97
|
-
let(:malformed_body) { '<body xmlns="http://jabber.org/protocol/httpbind"><iq type="error" xmlns="jabber:client" id="2034"/></body>' }
|
98
|
-
|
99
|
-
before do
|
100
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
101
|
-
.with(body: is_open_stream?)
|
102
|
-
.to_return(body: successful_open_stream)
|
103
|
-
|
104
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
105
|
-
.with(body: is_login?)
|
106
|
-
.to_return(body: malformed_body)
|
107
|
-
end
|
108
|
-
|
109
|
-
it { expect { bosh_session }.to raise_error Jabber::AuthenticationError, "Failed to login" }
|
110
|
-
end
|
111
|
-
|
112
|
-
context "when response was not 200 OK" do
|
113
|
-
before do
|
114
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
115
|
-
.with(body: is_open_stream?)
|
116
|
-
.to_return(body: successful_open_stream)
|
117
|
-
|
118
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
119
|
-
.with(body: is_login?)
|
120
|
-
.to_return(body: "Foo", status: 401)
|
121
|
-
end
|
122
|
-
|
123
|
-
it { expect { bosh_session }.to raise_error Net::HTTPBadResponse }
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe "#to_json" do
|
129
|
-
let(:json) { JSON.parse(bosh_session.to_json) }
|
130
|
-
|
131
|
-
before do
|
132
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
133
|
-
.with(body: is_open_stream?)
|
134
|
-
.to_return(body: successful_open_stream)
|
135
|
-
|
136
|
-
|
137
|
-
stub_request(:post, "http://localhost:5280/http-bind")
|
138
|
-
.with(body: is_login?)
|
139
|
-
.to_return(body: successful_login)
|
140
|
-
end
|
141
|
-
|
142
|
-
it { expect(json).to have_key "jid" }
|
143
|
-
it { expect(json).to have_key "rid" }
|
144
|
-
it { expect(json).to have_key "sid" }
|
145
|
-
|
146
|
-
it { expect(json["jid"]).to eq "strech@localhost/resource"}
|
147
|
-
it { expect(json["rid"]).to eq "1"}
|
148
|
-
it { expect(json["sid"]).to eq "ce21410"}
|
149
|
-
end
|
150
|
-
end
|