httpi 2.0.2 → 2.1.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 +7 -0
- data/CHANGELOG.md +42 -16
- data/Gemfile +12 -6
- data/README.md +19 -9
- data/httpi.gemspec +2 -1
- data/lib/httpi.rb +3 -0
- data/lib/httpi/adapter.rb +1 -1
- data/lib/httpi/adapter/curb.rb +11 -2
- data/lib/httpi/adapter/em_http.rb +21 -9
- data/lib/httpi/adapter/excon.rb +80 -0
- data/lib/httpi/adapter/httpclient.rb +13 -6
- data/lib/httpi/adapter/net_http.rb +88 -9
- data/lib/httpi/adapter/net_http_persistent.rb +43 -0
- data/lib/httpi/adapter/rack.rb +92 -0
- data/lib/httpi/auth/config.rb +6 -5
- data/lib/httpi/request.rb +9 -0
- data/lib/httpi/version.rb +1 -1
- data/spec/httpi/adapter/curb_spec.rb +17 -0
- data/spec/httpi/adapter/em_http_spec.rb +37 -27
- data/spec/httpi/adapter/excon_spec.rb +96 -0
- data/spec/httpi/adapter/httpclient_spec.rb +16 -8
- data/spec/httpi/adapter/net_http_persistent_spec.rb +96 -0
- data/spec/httpi/adapter/net_http_spec.rb +24 -151
- data/spec/httpi/adapter/rack_spec.rb +111 -0
- data/spec/httpi/auth/config_spec.rb +28 -0
- data/spec/httpi/httpi_spec.rb +17 -1
- data/spec/integration/curb_spec.rb +12 -0
- data/spec/integration/em_http_spec.rb +2 -0
- data/spec/integration/httpclient_spec.rb +32 -18
- data/spec/integration/net_http_persistent_spec.rb +139 -0
- data/spec/integration/net_http_spec.rb +59 -14
- data/spec/integration/support/application.rb +28 -0
- data/spec/spec_helper.rb +15 -6
- metadata +34 -32
- data/.rvmrc +0 -1
@@ -0,0 +1,96 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "integration/support/server"
|
3
|
+
|
4
|
+
describe HTTPI::Adapter::Excon do
|
5
|
+
|
6
|
+
subject(:adapter) { :excon }
|
7
|
+
|
8
|
+
context "http requests" do
|
9
|
+
before :all do
|
10
|
+
@server = IntegrationServer.run
|
11
|
+
end
|
12
|
+
|
13
|
+
after :all do
|
14
|
+
@server.stop
|
15
|
+
end
|
16
|
+
|
17
|
+
it "sends and receives HTTP headers" do
|
18
|
+
request = HTTPI::Request.new(@server.url + "x-header")
|
19
|
+
request.headers["X-Header"] = "HTTPI"
|
20
|
+
|
21
|
+
response = HTTPI.get(request, adapter)
|
22
|
+
response.body.should include("HTTPI")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "executes GET requests" do
|
26
|
+
response = HTTPI.get(@server.url, adapter)
|
27
|
+
response.body.should eq("get")
|
28
|
+
response.headers["Content-Type"].should eq("text/plain")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "executes POST requests" do
|
32
|
+
response = HTTPI.post(@server.url, "<some>xml</some>", adapter)
|
33
|
+
response.body.should eq("post")
|
34
|
+
response.headers["Content-Type"].should eq("text/plain")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "executes HEAD requests" do
|
38
|
+
response = HTTPI.head(@server.url, adapter)
|
39
|
+
response.code.should == 200
|
40
|
+
response.headers["Content-Type"].should eq("text/plain")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "executes PUT requests" do
|
44
|
+
response = HTTPI.put(@server.url, "<some>xml</some>", adapter)
|
45
|
+
response.body.should eq("put")
|
46
|
+
response.headers["Content-Type"].should eq("text/plain")
|
47
|
+
end
|
48
|
+
|
49
|
+
it "executes DELETE requests" do
|
50
|
+
response = HTTPI.delete(@server.url, adapter)
|
51
|
+
response.body.should eq("delete")
|
52
|
+
response.headers["Content-Type"].should eq("text/plain")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "supports basic authentication" do
|
56
|
+
request = HTTPI::Request.new(@server.url + "basic-auth")
|
57
|
+
request.auth.basic("admin", "secret")
|
58
|
+
|
59
|
+
response = HTTPI.get(request, adapter)
|
60
|
+
response.body.should eq("basic-auth")
|
61
|
+
end
|
62
|
+
|
63
|
+
it "does not support ntlm authentication" do
|
64
|
+
request = HTTPI::Request.new(@server.url + "ntlm-auth")
|
65
|
+
request.auth.ntlm("tester", "vReqSoafRe5O")
|
66
|
+
|
67
|
+
expect { HTTPI.get(request, adapter) }.
|
68
|
+
to raise_error(HTTPI::NotSupportedError, /does not support NTLM authentication/)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# it does not support digest auth
|
73
|
+
|
74
|
+
if RUBY_PLATFORM =~ /java/
|
75
|
+
pending "Puma Server complains: SSL not supported on JRuby"
|
76
|
+
else
|
77
|
+
context "https requests" do
|
78
|
+
before :all do
|
79
|
+
@server = IntegrationServer.run(:ssl => true)
|
80
|
+
end
|
81
|
+
after :all do
|
82
|
+
@server.stop
|
83
|
+
end
|
84
|
+
|
85
|
+
# it does not raise when no certificate was set up
|
86
|
+
it "works when set up properly" do
|
87
|
+
request = HTTPI::Request.new(@server.url)
|
88
|
+
request.auth.ssl.ca_cert_file = IntegrationServer.ssl_ca_file
|
89
|
+
|
90
|
+
response = HTTPI.get(request, adapter)
|
91
|
+
expect(response.body).to eq("get")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
@@ -113,6 +113,14 @@ describe HTTPI::Adapter::HTTPClient do
|
|
113
113
|
request.auth.ssl.cert_file = "spec/fixtures/client_cert.pem"
|
114
114
|
end
|
115
115
|
|
116
|
+
it "send certificate regardless of state of SSL verify mode" do
|
117
|
+
request.auth.ssl.verify_mode = :none
|
118
|
+
ssl_config.expects(:client_cert=).with(request.auth.ssl.cert)
|
119
|
+
ssl_config.expects(:client_key=).with(request.auth.ssl.cert_key)
|
120
|
+
|
121
|
+
adapter.request(:get)
|
122
|
+
end
|
123
|
+
|
116
124
|
it "client_cert, client_key and verify_mode should be set" do
|
117
125
|
ssl_config.expects(:client_cert=).with(request.auth.ssl.cert)
|
118
126
|
ssl_config.expects(:client_key=).with(request.auth.ssl.cert_key)
|
@@ -130,7 +138,7 @@ describe HTTPI::Adapter::HTTPClient do
|
|
130
138
|
|
131
139
|
it 'should set the ssl_version if specified' do
|
132
140
|
request.auth.ssl.ssl_version = :SSLv3
|
133
|
-
ssl_config.expects(:ssl_version=).with(
|
141
|
+
ssl_config.expects(:ssl_version=).with('SSLv3')
|
134
142
|
|
135
143
|
adapter.request(:get)
|
136
144
|
end
|
@@ -147,19 +155,19 @@ describe HTTPI::Adapter::HTTPClient do
|
|
147
155
|
adapter.request(:get)
|
148
156
|
end
|
149
157
|
|
150
|
-
it "does not set client_cert and client_key "do
|
151
|
-
ssl_config.expects(:client_cert=).never
|
152
|
-
ssl_config.expects(:client_key=).never
|
153
|
-
|
154
|
-
adapter.request(:get)
|
155
|
-
end
|
156
|
-
|
157
158
|
it "does not raise an exception" do
|
158
159
|
expect { adapter.request(:get) }.to_not raise_error
|
159
160
|
end
|
160
161
|
end
|
161
162
|
end
|
162
163
|
|
164
|
+
it "does not support NTLM authentication" do
|
165
|
+
request.auth.ntlm("tester", "vReqSoafRe5O")
|
166
|
+
|
167
|
+
expect { adapter.request(:get) }.
|
168
|
+
to raise_error(HTTPI::NotSupportedError, /adapter does not support NTLM authentication/)
|
169
|
+
end
|
170
|
+
|
163
171
|
def httpclient_expects(method)
|
164
172
|
httpclient.expects(:request).
|
165
173
|
with(method, request.url, nil, request.body, request.headers).
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "integration/support/server"
|
3
|
+
|
4
|
+
describe HTTPI::Adapter::NetHTTPPersistent do
|
5
|
+
|
6
|
+
subject(:adapter) { :net_http_persistent }
|
7
|
+
|
8
|
+
context "http requests" do
|
9
|
+
before :all do
|
10
|
+
@server = IntegrationServer.run
|
11
|
+
end
|
12
|
+
|
13
|
+
after :all do
|
14
|
+
@server.stop
|
15
|
+
end
|
16
|
+
|
17
|
+
it "sends and receives HTTP headers" do
|
18
|
+
request = HTTPI::Request.new(@server.url + "x-header")
|
19
|
+
request.headers["X-Header"] = "HTTPI"
|
20
|
+
|
21
|
+
response = HTTPI.get(request, adapter)
|
22
|
+
response.body.should include("HTTPI")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "executes GET requests" do
|
26
|
+
response = HTTPI.get(@server.url, adapter)
|
27
|
+
response.body.should eq("get")
|
28
|
+
response.headers["Content-Type"].should eq("text/plain")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "executes POST requests" do
|
32
|
+
response = HTTPI.post(@server.url, "<some>xml</some>", adapter)
|
33
|
+
response.body.should eq("post")
|
34
|
+
response.headers["Content-Type"].should eq("text/plain")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "executes HEAD requests" do
|
38
|
+
response = HTTPI.head(@server.url, adapter)
|
39
|
+
response.code.should == 200
|
40
|
+
response.headers["Content-Type"].should eq("text/plain")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "executes PUT requests" do
|
44
|
+
response = HTTPI.put(@server.url, "<some>xml</some>", adapter)
|
45
|
+
response.body.should eq("put")
|
46
|
+
response.headers["Content-Type"].should eq("text/plain")
|
47
|
+
end
|
48
|
+
|
49
|
+
it "executes DELETE requests" do
|
50
|
+
response = HTTPI.delete(@server.url, adapter)
|
51
|
+
response.body.should eq("delete")
|
52
|
+
response.headers["Content-Type"].should eq("text/plain")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "supports basic authentication" do
|
56
|
+
request = HTTPI::Request.new(@server.url + "basic-auth")
|
57
|
+
request.auth.basic("admin", "secret")
|
58
|
+
|
59
|
+
response = HTTPI.get(request, adapter)
|
60
|
+
response.body.should eq("basic-auth")
|
61
|
+
end
|
62
|
+
|
63
|
+
it "does not support ntlm authentication" do
|
64
|
+
request = HTTPI::Request.new(@server.url + "ntlm-auth")
|
65
|
+
request.auth.ntlm("tester", "vReqSoafRe5O")
|
66
|
+
|
67
|
+
expect { HTTPI.get(request, adapter) }.
|
68
|
+
to raise_error(HTTPI::NotSupportedError, /does not support NTLM authentication/)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# it does not support digest auth
|
73
|
+
|
74
|
+
if RUBY_PLATFORM =~ /java/
|
75
|
+
pending "Puma Server complains: SSL not supported on JRuby"
|
76
|
+
else
|
77
|
+
context "https requests" do
|
78
|
+
before :all do
|
79
|
+
@server = IntegrationServer.run(:ssl => true)
|
80
|
+
end
|
81
|
+
after :all do
|
82
|
+
@server.stop
|
83
|
+
end
|
84
|
+
|
85
|
+
# it does not raise when no certificate was set up
|
86
|
+
it "works when set up properly" do
|
87
|
+
request = HTTPI::Request.new(@server.url)
|
88
|
+
request.auth.ssl.ca_cert_file = IntegrationServer.ssl_ca_file
|
89
|
+
|
90
|
+
response = HTTPI.get(request, adapter)
|
91
|
+
expect(response.body).to eq("get")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
@@ -59,173 +59,46 @@ describe HTTPI::Adapter::NetHTTP do
|
|
59
59
|
response = HTTPI.get(request, adapter)
|
60
60
|
response.body.should eq("basic-auth")
|
61
61
|
end
|
62
|
-
end
|
63
|
-
|
64
|
-
# it does not support digest auth
|
65
62
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
63
|
+
it "does not support digest authentication" do
|
64
|
+
request = HTTPI::Request.new(@server.url + "digest-auth")
|
65
|
+
request.auth.digest("admin", "secret")
|
70
66
|
|
71
|
-
|
72
|
-
|
67
|
+
expect { HTTPI.get(request, adapter) }.
|
68
|
+
to raise_error(HTTPI::NotSupportedError, /does not support HTTP digest authentication/)
|
73
69
|
end
|
74
70
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
request = HTTPI::Request.new(@server.url)
|
79
|
-
request.auth.ssl.ca_cert_file = IntegrationServer.ssl_ca_file
|
71
|
+
it "supports ntlm authentication" do
|
72
|
+
request = HTTPI::Request.new(@server.url + "ntlm-auth")
|
73
|
+
request.auth.ntlm("tester", "vReqSoafRe5O")
|
80
74
|
|
81
75
|
response = HTTPI.get(request, adapter)
|
82
|
-
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
__END__
|
90
|
-
|
91
|
-
describe "#request(:get)" do
|
92
|
-
it "should return a valid HTTPI::Response" do
|
93
|
-
stub_request(:get, request.url.to_s).to_return(basic_response)
|
94
|
-
adapter.request(:get).should match_response(:body => Fixture.xml)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
describe "#request(:post)" do
|
99
|
-
it "should return a valid HTTPI::Response" do
|
100
|
-
request.body = Fixture.xml
|
101
|
-
stub_request(:post, request.url.to_s).with(:body => request.body).to_return(basic_response)
|
102
|
-
|
103
|
-
adapter.request(:post).should match_response(:body => Fixture.xml)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
describe "#request(:head)" do
|
108
|
-
it "should return a valid HTTPI::Response" do
|
109
|
-
stub_request(:head, request.url.to_s).to_return(basic_response)
|
110
|
-
adapter.request(:head).should match_response(:body => Fixture.xml)
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
describe "#request(:put)" do
|
115
|
-
it "should return a valid HTTPI::Response" do
|
116
|
-
request.url = "http://example.com"
|
117
|
-
request.headers = { "Accept-encoding" => "utf-8" }
|
118
|
-
request.body = Fixture.xml
|
119
|
-
|
120
|
-
stub_request(:put, request.url.to_s).with(:body => request.body).to_return(basic_response)
|
121
|
-
|
122
|
-
adapter.request(:put).should match_response(:body => Fixture.xml)
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
describe "#request(:delete)" do
|
127
|
-
it "should return a valid HTTPI::Response" do
|
128
|
-
stub_request(:delete, request.url.to_s).to_return(basic_response)
|
129
|
-
adapter.request(:delete).should match_response(:body => Fixture.xml)
|
76
|
+
response.body.should eq("ntlm-auth")
|
130
77
|
end
|
131
78
|
end
|
132
79
|
|
133
|
-
|
134
|
-
it "raises a NotSupportedError" do
|
135
|
-
expect { adapter.request(:custom) }.
|
136
|
-
to raise_error(HTTPI::NotSupportedError, "Net::HTTP does not support custom HTTP methods")
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
describe "settings:" do
|
141
|
-
before { stub_request(:get, request.url.to_s) }
|
142
|
-
|
143
|
-
describe "use_ssl" do
|
144
|
-
it "should be set to false for non-SSL requests" do
|
145
|
-
net_http.expects(:use_ssl=).with(false)
|
146
|
-
adapter.request(:get)
|
147
|
-
end
|
148
|
-
|
149
|
-
it "should be set to true for SSL requests" do
|
150
|
-
request.ssl = true
|
151
|
-
|
152
|
-
net_http.expects(:use_ssl=).with(true)
|
153
|
-
adapter.request(:get)
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
describe "open_timeout" do
|
158
|
-
it "should not be set if not specified" do
|
159
|
-
net_http.expects(:open_timeout=).never
|
160
|
-
adapter.request(:get)
|
161
|
-
end
|
162
|
-
|
163
|
-
it "should be set if specified" do
|
164
|
-
request.open_timeout = 30
|
165
|
-
|
166
|
-
net_http.expects(:open_timeout=).with(30)
|
167
|
-
adapter.request(:get)
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
describe "read_timeout" do
|
172
|
-
it "should not be set if not specified" do
|
173
|
-
net_http.expects(:read_timeout=).never
|
174
|
-
adapter.request(:get)
|
175
|
-
end
|
176
|
-
|
177
|
-
it "should be set if specified" do
|
178
|
-
request.read_timeout = 30
|
179
|
-
|
180
|
-
net_http.expects(:read_timeout=).with(30)
|
181
|
-
adapter.request(:get)
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
describe "basic_auth" do
|
186
|
-
it "should be set for HTTP basic auth" do
|
187
|
-
request.auth.basic "username", "password"
|
188
|
-
|
189
|
-
stub_request(:get, "http://username:password@example.com")
|
190
|
-
Net::HTTP::Get.any_instance.expects(:basic_auth).with(*request.auth.credentials)
|
191
|
-
adapter.request(:get)
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
context "(for SSL client auth)" do
|
196
|
-
before do
|
197
|
-
request.auth.ssl.cert_key_file = "spec/fixtures/client_key.pem"
|
198
|
-
request.auth.ssl.cert_file = "spec/fixtures/client_cert.pem"
|
199
|
-
end
|
200
|
-
|
201
|
-
it "key, cert and verify_mode should be set" do
|
202
|
-
net_http.expects(:cert=).with(request.auth.ssl.cert)
|
203
|
-
net_http.expects(:key=).with(request.auth.ssl.cert_key)
|
204
|
-
net_http.expects(:verify_mode=).with(request.auth.ssl.openssl_verify_mode)
|
80
|
+
# it does not support digest auth
|
205
81
|
|
206
|
-
|
82
|
+
if RUBY_PLATFORM =~ /java/
|
83
|
+
pending "Puma Server complains: SSL not supported on JRuby"
|
84
|
+
else
|
85
|
+
context "https requests" do
|
86
|
+
before :all do
|
87
|
+
@server = IntegrationServer.run(:ssl => true)
|
207
88
|
end
|
208
|
-
|
209
|
-
|
210
|
-
request.auth.ssl.ca_cert_file = "spec/fixtures/client_cert.pem"
|
211
|
-
net_http.expects(:ca_file=).with(request.auth.ssl.ca_cert_file)
|
212
|
-
|
213
|
-
adapter.request(:get)
|
89
|
+
after :all do
|
90
|
+
@server.stop
|
214
91
|
end
|
215
92
|
|
216
|
-
it
|
217
|
-
|
218
|
-
|
93
|
+
# it does not raise when no certificate was set up
|
94
|
+
it "works when set up properly" do
|
95
|
+
request = HTTPI::Request.new(@server.url)
|
96
|
+
request.auth.ssl.ca_cert_file = IntegrationServer.ssl_ca_file
|
219
97
|
|
220
|
-
|
98
|
+
response = HTTPI.get(request, adapter)
|
99
|
+
expect(response.body).to eq("get")
|
221
100
|
end
|
222
101
|
end
|
223
102
|
end
|
224
103
|
|
225
|
-
def basic_request
|
226
|
-
request = HTTPI::Request.new "http://example.com"
|
227
|
-
yield request if block_given?
|
228
|
-
request
|
229
|
-
end
|
230
|
-
|
231
104
|
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "integration/support/application"
|
3
|
+
|
4
|
+
describe HTTPI::Adapter::NetHTTP do
|
5
|
+
|
6
|
+
subject(:adapter) { :rack }
|
7
|
+
|
8
|
+
context "http requests" do
|
9
|
+
before :all do
|
10
|
+
@app = 'app'
|
11
|
+
@url = "http://#{@app}/"
|
12
|
+
|
13
|
+
HTTPI::Adapter::Rack.mount @app, IntegrationServer::Application
|
14
|
+
end
|
15
|
+
|
16
|
+
it "sends and receives HTTP headers" do
|
17
|
+
request = HTTPI::Request.new(@url + "x-header")
|
18
|
+
request.headers["X-Header"] = "HTTPI"
|
19
|
+
|
20
|
+
response = HTTPI.get(request, adapter)
|
21
|
+
response.body.should include("HTTPI")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "executes GET requests" do
|
25
|
+
response = HTTPI.get(@url, adapter)
|
26
|
+
response.body.should eq("get")
|
27
|
+
response.headers["Content-Type"].should eq("text/plain")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "executes POST requests" do
|
31
|
+
response = HTTPI.post(@url, "<some>xml</some>", adapter)
|
32
|
+
response.body.should eq("post")
|
33
|
+
response.headers["Content-Type"].should eq("text/plain")
|
34
|
+
end
|
35
|
+
|
36
|
+
it "executes HEAD requests" do
|
37
|
+
response = HTTPI.head(@url, adapter)
|
38
|
+
response.code.should == 200
|
39
|
+
response.headers["Content-Type"].should eq("text/plain")
|
40
|
+
end
|
41
|
+
|
42
|
+
it "executes PUT requests" do
|
43
|
+
response = HTTPI.put(@url, "<some>xml</some>", adapter)
|
44
|
+
response.body.should eq("put")
|
45
|
+
response.headers["Content-Type"].should eq("text/plain")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "executes DELETE requests" do
|
49
|
+
response = HTTPI.delete(@url, adapter)
|
50
|
+
response.body.should eq("delete")
|
51
|
+
response.headers["Content-Type"].should eq("text/plain")
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "settings:" do
|
55
|
+
|
56
|
+
let(:request) { HTTPI::Request.new("http://#{@app}") }
|
57
|
+
let(:client) { HTTPI::Adapter::Rack.new(request) }
|
58
|
+
|
59
|
+
describe "proxy" do
|
60
|
+
before do
|
61
|
+
request.proxy = "http://proxy-host.com:443"
|
62
|
+
request.proxy.user = "username"
|
63
|
+
request.proxy.password = "password"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "is not supported" do
|
67
|
+
expect { client.request(:get) }.
|
68
|
+
to raise_error(HTTPI::NotSupportedError, "Rack adapter does not support proxying")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "on_body" do
|
73
|
+
before do
|
74
|
+
request.on_body do
|
75
|
+
# ola-la!
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it "is not supported" do
|
80
|
+
expect { client.request(:get) }.
|
81
|
+
to raise_error(HTTPI::NotSupportedError, "Rack adapter does not support response streaming")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "set_auth" do
|
86
|
+
before do
|
87
|
+
request.auth.basic "username", "password"
|
88
|
+
end
|
89
|
+
|
90
|
+
it "is not supported" do
|
91
|
+
expect { client.request(:get) }.
|
92
|
+
to raise_error(HTTPI::NotSupportedError, "Rack adapter does not support HTTP auth")
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "(for SSL client auth)" do
|
97
|
+
before do
|
98
|
+
request.auth.ssl.cert_key_file = "spec/fixtures/client_key.pem"
|
99
|
+
request.auth.ssl.cert_file = "spec/fixtures/client_cert.pem"
|
100
|
+
end
|
101
|
+
|
102
|
+
it "is not supported" do
|
103
|
+
expect { client.request(:get) }.
|
104
|
+
to raise_error(HTTPI::NotSupportedError, "Rack adapter does not support SSL client auth")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|