httpi 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -6
- data/CHANGELOG.md +6 -0
- data/httpi.gemspec +14 -13
- data/lib/httpi/adapter/curb.rb +20 -10
- data/lib/httpi/adapter/excon.rb +0 -1
- data/lib/httpi/adapter/httpclient.rb +11 -8
- data/lib/httpi/adapter/net_http.rb +27 -15
- data/lib/httpi/version.rb +1 -1
- data/spec/httpi/adapter/curb_spec.rb +41 -33
- data/spec/httpi/adapter/em_http_spec.rb +6 -6
- data/spec/httpi/adapter/excon_spec.rb +12 -12
- data/spec/httpi/adapter/httpclient_spec.rb +19 -6
- data/spec/httpi/adapter/net_http_persistent_spec.rb +12 -12
- data/spec/httpi/adapter/net_http_spec.rb +24 -13
- data/spec/httpi/adapter/rack_spec.rb +11 -11
- data/spec/httpi/adapter_spec.rb +7 -7
- data/spec/httpi/auth/config_spec.rb +27 -27
- data/spec/httpi/auth/ssl_spec.rb +23 -23
- data/spec/httpi/cookie_spec.rb +5 -5
- data/spec/httpi/cookie_store_spec.rb +3 -3
- data/spec/httpi/httpi_spec.rb +3 -3
- data/spec/httpi/request_spec.rb +33 -33
- data/spec/httpi/response_spec.rb +16 -16
- data/spec/integration/curb_spec.rb +16 -16
- data/spec/integration/em_http_spec.rb +13 -13
- data/spec/integration/httpclient_spec.rb +16 -16
- data/spec/integration/net_http_persistent_spec.rb +16 -16
- data/spec/integration/net_http_spec.rb +16 -16
- data/spec/support/matchers.rb +4 -4
- metadata +26 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64f90cd54aeecb3d644ddc16fec7b315c1f3b04b
|
4
|
+
data.tar.gz: dfd7327d1ec9c29435c45225142e4d7dbb9f69f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecd189b6104973f1286423bf498f37849ad37acaab443d108dda5d2d87d663bfd44171dd291506bd4dc8db45ac1fd57fbf90cd107e1b367dae0442e3b7d0f170
|
7
|
+
data.tar.gz: 904207471eed6b713d613f97453bc2a8e0abf156aadfde9ed228a93018c31ee3360b58a399f02c06833a769b3275bc3b483e5c69076f938c509617d288571145
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
### 2.2.0 (edge)
|
2
|
+
|
3
|
+
* Fix: [#111](https://github.com/savonrb/httpi/pull/111) Check rubyntlm version in a 0.4.0+ compatible way. Thanks to [Carl Zulauf](https://github.com/carlzulauf).
|
4
|
+
* Fix: [#109](https://github.com/savonrb/httpi/pull/109) SSL version is set regardless of SSL auth settings. Thanks to [Mike Campbell](https://github.com/mikecmpbll).
|
5
|
+
* Feature: [#108](https://github.com/savonrb/httpi/pull/108) Make `rubyntlm` gem, an optional dependency. Thanks to [Tim Jarratt](https://github.com/tjarratt).
|
6
|
+
|
1
7
|
### 2.1.0 (2013-07-22)
|
2
8
|
|
3
9
|
* Feature: [#75](https://github.com/savonrb/httpi/pull/75) Rack adapter.
|
data/httpi.gemspec
CHANGED
@@ -1,27 +1,28 @@
|
|
1
|
-
lib = File.expand_path(
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
2
2
|
$:.unshift lib unless $:.include?(lib)
|
3
3
|
|
4
|
-
require
|
4
|
+
require 'httpi/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
7
|
+
s.name = 'httpi'
|
8
8
|
s.version = HTTPI::VERSION
|
9
|
-
s.authors = [
|
10
|
-
s.email =
|
11
|
-
s.homepage =
|
9
|
+
s.authors = ['Daniel Harrington', 'Martin Tepper']
|
10
|
+
s.email = 'me@rubiii.com'
|
11
|
+
s.homepage = 'http://github.com/savonrb/#{s.name}'
|
12
12
|
s.summary = "Common interface for Ruby's HTTP libraries"
|
13
13
|
s.description = s.summary
|
14
14
|
|
15
15
|
s.rubyforge_project = s.name
|
16
|
+
s.license = 'MIT'
|
16
17
|
|
17
|
-
s.add_dependency
|
18
|
-
s.add_dependency "rubyntlm", "~> 0.3.2"
|
18
|
+
s.add_dependency 'rack'
|
19
19
|
|
20
|
-
s.add_development_dependency
|
21
|
-
s.add_development_dependency
|
22
|
-
s.add_development_dependency
|
23
|
-
s.add_development_dependency
|
20
|
+
s.add_development_dependency 'rubyntlm', '~> 0.3.2'
|
21
|
+
s.add_development_dependency 'rake', '~> 10.0'
|
22
|
+
s.add_development_dependency 'rspec', '~> 2.14'
|
23
|
+
s.add_development_dependency 'mocha', '~> 0.13'
|
24
|
+
s.add_development_dependency 'puma', '~> 2.3.2'
|
24
25
|
|
25
26
|
s.files = `git ls-files`.split("\n")
|
26
|
-
s.require_path =
|
27
|
+
s.require_path = 'lib'
|
27
28
|
end
|
data/lib/httpi/adapter/curb.rb
CHANGED
@@ -29,7 +29,14 @@ module HTTPI
|
|
29
29
|
arguments << (@request.body || "")
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
if @request.on_body
|
33
|
+
client.on_body do |data|
|
34
|
+
@request.on_body.call(data)
|
35
|
+
# curb requires you to return the length of the data read from the block.
|
36
|
+
# It allows you to abort the connection by returning a smaller value
|
37
|
+
data.length
|
38
|
+
end
|
39
|
+
end
|
33
40
|
|
34
41
|
do_request { |client| client.send(*arguments) }
|
35
42
|
rescue Curl::Err::SSLCACertificateError
|
@@ -58,7 +65,7 @@ module HTTPI
|
|
58
65
|
|
59
66
|
setup_http_auth if @request.auth.http?
|
60
67
|
setup_gssnegotiate_auth if @request.auth.gssnegotiate?
|
61
|
-
setup_ssl_auth if @request.auth.ssl?
|
68
|
+
setup_ssl_auth if @request.auth.ssl? || @request.ssl?
|
62
69
|
end
|
63
70
|
|
64
71
|
def basic_setup
|
@@ -86,16 +93,19 @@ module HTTPI
|
|
86
93
|
def setup_ssl_auth
|
87
94
|
ssl = @request.auth.ssl
|
88
95
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
96
|
+
if @request.auth.ssl?
|
97
|
+
unless ssl.verify_mode == :none
|
98
|
+
@client.cacert = ssl.ca_cert_file if ssl.ca_cert_file
|
99
|
+
@client.certtype = ssl.cert_type.to_s.upcase
|
100
|
+
end
|
93
101
|
|
94
|
-
|
95
|
-
|
96
|
-
|
102
|
+
# Send client-side certificate regardless of state of SSL verify mode
|
103
|
+
@client.cert_key = ssl.cert_key_file
|
104
|
+
@client.cert = ssl.cert_file
|
97
105
|
|
98
|
-
|
106
|
+
@client.ssl_verify_peer = ssl.verify_mode == :peer
|
107
|
+
end
|
108
|
+
|
99
109
|
@client.ssl_version = case ssl.ssl_version
|
100
110
|
when :TLSv1 then 1
|
101
111
|
when :SSLv2 then 2
|
data/lib/httpi/adapter/excon.rb
CHANGED
@@ -41,7 +41,7 @@ module HTTPI
|
|
41
41
|
end
|
42
42
|
|
43
43
|
setup_auth if @request.auth.http?
|
44
|
-
setup_ssl_auth if @request.auth.ssl?
|
44
|
+
setup_ssl_auth if @request.auth.ssl? || @request.ssl?
|
45
45
|
end
|
46
46
|
|
47
47
|
def basic_setup
|
@@ -57,15 +57,18 @@ module HTTPI
|
|
57
57
|
def setup_ssl_auth
|
58
58
|
ssl = @request.auth.ssl
|
59
59
|
|
60
|
-
if
|
61
|
-
|
62
|
-
|
60
|
+
if @request.auth.ssl?
|
61
|
+
if ssl.ca_cert_file && ssl.verify_mode != :none
|
62
|
+
@client.ssl_config.add_trust_ca(ssl.ca_cert_file)
|
63
|
+
end
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
# Send client-side certificate regardless of state of SSL verify mode
|
66
|
+
@client.ssl_config.client_cert = ssl.cert
|
67
|
+
@client.ssl_config.client_key = ssl.cert_key
|
68
|
+
|
69
|
+
@client.ssl_config.verify_mode = ssl.openssl_verify_mode
|
70
|
+
end
|
67
71
|
|
68
|
-
@client.ssl_config.verify_mode = ssl.openssl_verify_mode
|
69
72
|
@client.ssl_config.ssl_version = ssl.ssl_version.to_s if ssl.ssl_version
|
70
73
|
end
|
71
74
|
|
@@ -2,10 +2,19 @@ require "uri"
|
|
2
2
|
|
3
3
|
require "httpi/adapter/base"
|
4
4
|
require "httpi/response"
|
5
|
-
require 'net/ntlm'
|
6
5
|
require 'kconv'
|
7
6
|
require 'socket'
|
8
7
|
|
8
|
+
begin
|
9
|
+
require 'net/ntlm'
|
10
|
+
require 'net/ntlm/version' unless Net::NTLM.const_defined?(:VERSION)
|
11
|
+
unless Net::NTLM::VERSION::STRING >= '0.3.2'
|
12
|
+
raise ArgumentError('Invalid version of rubyntlm. Please use v0.3.2+.')
|
13
|
+
end
|
14
|
+
rescue LoadError => e
|
15
|
+
HTTPI.logger.debug('Net::NTLM is not available. Install via gem install rubyntlm.')
|
16
|
+
end
|
17
|
+
|
9
18
|
module HTTPI
|
10
19
|
module Adapter
|
11
20
|
|
@@ -72,10 +81,14 @@ module HTTPI
|
|
72
81
|
|
73
82
|
def setup
|
74
83
|
setup_client
|
75
|
-
setup_ssl_auth if @request.auth.ssl?
|
84
|
+
setup_ssl_auth if @request.auth.ssl? || @request.ssl?
|
76
85
|
end
|
77
86
|
|
78
87
|
def negotiate_ntlm_auth(http, &requester)
|
88
|
+
unless Net.const_defined?(:NTLM)
|
89
|
+
HTTPI.logger.fatal('Cannot negotiate ntlm auth if net/ntlm is not present. Perhaps the net/ntlm gem is not installed?')
|
90
|
+
end
|
91
|
+
|
79
92
|
# first figure out if we should use NTLM or Negotiate
|
80
93
|
nego_auth_response = respond_with(requester.call(http, request_client(:head)))
|
81
94
|
if nego_auth_response.headers['www-authenticate'].include? 'Negotiate'
|
@@ -102,7 +115,7 @@ module HTTPI
|
|
102
115
|
if auth_response.headers["WWW-Authenticate"] =~ /(NTLM|Negotiate) (.+)/
|
103
116
|
auth_token = $2
|
104
117
|
ntlm_message = Net::NTLM::Message.decode64(auth_token)
|
105
|
-
|
118
|
+
|
106
119
|
message_builder = {}
|
107
120
|
# copy the username and password from the authorization parameters
|
108
121
|
message_builder[:user] = @request.auth.ntlm[0]
|
@@ -110,15 +123,11 @@ module HTTPI
|
|
110
123
|
|
111
124
|
# we need to provide a domain in the packet if an only if it was provided by the user in the auth request
|
112
125
|
if @request.auth.ntlm[2]
|
113
|
-
message_builder[:domain] =
|
126
|
+
message_builder[:domain] = @request.auth.ntlm[2].upcase
|
114
127
|
else
|
115
128
|
message_builder[:domain] = ''
|
116
129
|
end
|
117
130
|
|
118
|
-
# we should also provide the workstation name, currently the rubyntlm provider does not automatically
|
119
|
-
# set the workstation name
|
120
|
-
message_builder[:workstation] = Net::NTLM::EncodeUtil.encode_utf16le(Socket.gethostname)
|
121
|
-
|
122
131
|
ntlm_response = ntlm_message.response(message_builder ,
|
123
132
|
{:ntlmv2 => true})
|
124
133
|
# Finally add header of Authorization
|
@@ -137,15 +146,18 @@ module HTTPI
|
|
137
146
|
def setup_ssl_auth
|
138
147
|
ssl = @request.auth.ssl
|
139
148
|
|
140
|
-
|
141
|
-
|
142
|
-
|
149
|
+
if @request.auth.ssl?
|
150
|
+
unless ssl.verify_mode == :none
|
151
|
+
@client.ca_file = ssl.ca_cert_file if ssl.ca_cert_file
|
152
|
+
end
|
143
153
|
|
144
|
-
|
145
|
-
|
146
|
-
|
154
|
+
# Send client-side certificate regardless of state of SSL verify mode
|
155
|
+
@client.key = ssl.cert_key
|
156
|
+
@client.cert = ssl.cert
|
157
|
+
|
158
|
+
@client.verify_mode = ssl.openssl_verify_mode
|
159
|
+
end
|
147
160
|
|
148
|
-
@client.verify_mode = ssl.openssl_verify_mode
|
149
161
|
@client.ssl_version = ssl.ssl_version if ssl.ssl_version
|
150
162
|
end
|
151
163
|
|
data/lib/httpi/version.rb
CHANGED
@@ -21,7 +21,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "returns a valid HTTPI::Response" do
|
24
|
-
adapter.request(:get).
|
24
|
+
expect(adapter.request(:get)).to match_response(:body => Fixture.xml)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -34,7 +34,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "returns a valid HTTPI::Response" do
|
37
|
-
adapter.request(:post).
|
37
|
+
expect(adapter.request(:post)).to match_response(:body => Fixture.xml)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -56,7 +56,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
56
56
|
end
|
57
57
|
|
58
58
|
it "returns a valid HTTPI::Response" do
|
59
|
-
adapter.request(:head).
|
59
|
+
expect(adapter.request(:head)).to match_response(:body => Fixture.xml)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -69,7 +69,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
69
69
|
end
|
70
70
|
|
71
71
|
it "returns a valid HTTPI::Response" do
|
72
|
-
adapter.request(:put).
|
72
|
+
expect(adapter.request(:put)).to match_response(:body => Fixture.xml)
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -91,7 +91,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
91
91
|
end
|
92
92
|
|
93
93
|
it "returns a valid HTTPI::Response" do
|
94
|
-
adapter.request(:delete).
|
94
|
+
expect(adapter.request(:delete)).to match_response(:body => "")
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
@@ -218,6 +218,42 @@ unless RUBY_PLATFORM =~ /java/
|
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
221
|
+
context "(for SSL without auth)" do
|
222
|
+
let(:request) do
|
223
|
+
request = HTTPI::Request.new("http://example.com")
|
224
|
+
request.ssl = true
|
225
|
+
request
|
226
|
+
end
|
227
|
+
|
228
|
+
context 'sets ssl_version' do
|
229
|
+
it 'defaults to nil when no ssl_version is specified' do
|
230
|
+
curb.expects(:ssl_version=).with(nil)
|
231
|
+
adapter.request(:get)
|
232
|
+
end
|
233
|
+
|
234
|
+
it 'to 1 when ssl_version is specified as TLSv1' do
|
235
|
+
request.auth.ssl.ssl_version = :TLSv1
|
236
|
+
curb.expects(:ssl_version=).with(1)
|
237
|
+
|
238
|
+
adapter.request(:get)
|
239
|
+
end
|
240
|
+
|
241
|
+
it 'to 2 when ssl_version is specified as SSLv2' do
|
242
|
+
request.auth.ssl.ssl_version = :SSLv2
|
243
|
+
curb.expects(:ssl_version=).with(2)
|
244
|
+
|
245
|
+
adapter.request(:get)
|
246
|
+
end
|
247
|
+
|
248
|
+
it 'to 3 when ssl_version is specified as SSLv3' do
|
249
|
+
request.auth.ssl.ssl_version = :SSLv3
|
250
|
+
curb.expects(:ssl_version=).with(3)
|
251
|
+
|
252
|
+
adapter.request(:get)
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
221
257
|
context "(for SSL client auth)" do
|
222
258
|
let(:request) do
|
223
259
|
request = HTTPI::Request.new("http://example.com")
|
@@ -261,34 +297,6 @@ unless RUBY_PLATFORM =~ /java/
|
|
261
297
|
|
262
298
|
adapter.request(:get)
|
263
299
|
end
|
264
|
-
|
265
|
-
context 'sets ssl_version' do
|
266
|
-
it 'defaults to nil when no ssl_version is specified' do
|
267
|
-
curb.expects(:ssl_version=).with(nil)
|
268
|
-
adapter.request(:get)
|
269
|
-
end
|
270
|
-
|
271
|
-
it 'to 1 when ssl_version is specified as TLSv1' do
|
272
|
-
request.auth.ssl.ssl_version = :TLSv1
|
273
|
-
curb.expects(:ssl_version=).with(1)
|
274
|
-
|
275
|
-
adapter.request(:get)
|
276
|
-
end
|
277
|
-
|
278
|
-
it 'to 2 when ssl_version is specified as SSLv2' do
|
279
|
-
request.auth.ssl.ssl_version = :SSLv2
|
280
|
-
curb.expects(:ssl_version=).with(2)
|
281
|
-
|
282
|
-
adapter.request(:get)
|
283
|
-
end
|
284
|
-
|
285
|
-
it 'to 3 when ssl_version is specified as SSLv3' do
|
286
|
-
request.auth.ssl.ssl_version = :SSLv3
|
287
|
-
curb.expects(:ssl_version=).with(3)
|
288
|
-
|
289
|
-
adapter.request(:get)
|
290
|
-
end
|
291
|
-
end
|
292
300
|
end
|
293
301
|
end
|
294
302
|
|
@@ -24,7 +24,7 @@ begin
|
|
24
24
|
with(:query => nil, :head => {}, :body => nil).
|
25
25
|
returns(http_message)
|
26
26
|
|
27
|
-
adapter.request(:get).
|
27
|
+
expect(adapter.request(:get)).to match_response(:body => Fixture.xml)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -35,7 +35,7 @@ begin
|
|
35
35
|
returns(http_message)
|
36
36
|
|
37
37
|
request.body = Fixture.xml
|
38
|
-
adapter.request(:post).
|
38
|
+
expect(adapter.request(:post)).to match_response(:body => Fixture.xml)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
@@ -45,7 +45,7 @@ begin
|
|
45
45
|
with(:query => nil, :head => {}, :body => nil).
|
46
46
|
returns(http_message)
|
47
47
|
|
48
|
-
adapter.request(:head).
|
48
|
+
expect(adapter.request(:head)).to match_response(:body => Fixture.xml)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -56,7 +56,7 @@ begin
|
|
56
56
|
returns(http_message)
|
57
57
|
|
58
58
|
request.body = Fixture.xml
|
59
|
-
adapter.request(:put).
|
59
|
+
expect(adapter.request(:put)).to match_response(:body => Fixture.xml)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -66,7 +66,7 @@ begin
|
|
66
66
|
with(:query => nil, :head => {}, :body => nil).
|
67
67
|
returns(http_message(""))
|
68
68
|
|
69
|
-
adapter.request(:delete).
|
69
|
+
expect(adapter.request(:delete)).to match_response(:body => "")
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
@@ -76,7 +76,7 @@ begin
|
|
76
76
|
with(:query => nil, :head => {}, :body => nil).
|
77
77
|
returns(http_message(""))
|
78
78
|
|
79
|
-
adapter.request(:custom).
|
79
|
+
expect(adapter.request(:custom)).to match_response(:body => "")
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -19,37 +19,37 @@ describe HTTPI::Adapter::Excon do
|
|
19
19
|
request.headers["X-Header"] = "HTTPI"
|
20
20
|
|
21
21
|
response = HTTPI.get(request, adapter)
|
22
|
-
response.body.
|
22
|
+
expect(response.body).to include("HTTPI")
|
23
23
|
end
|
24
24
|
|
25
25
|
it "executes GET requests" do
|
26
26
|
response = HTTPI.get(@server.url, adapter)
|
27
|
-
response.body.
|
28
|
-
response.headers["Content-Type"].
|
27
|
+
expect(response.body).to eq("get")
|
28
|
+
expect(response.headers["Content-Type"]).to eq("text/plain")
|
29
29
|
end
|
30
30
|
|
31
31
|
it "executes POST requests" do
|
32
32
|
response = HTTPI.post(@server.url, "<some>xml</some>", adapter)
|
33
|
-
response.body.
|
34
|
-
response.headers["Content-Type"].
|
33
|
+
expect(response.body).to eq("post")
|
34
|
+
expect(response.headers["Content-Type"]).to eq("text/plain")
|
35
35
|
end
|
36
36
|
|
37
37
|
it "executes HEAD requests" do
|
38
38
|
response = HTTPI.head(@server.url, adapter)
|
39
|
-
response.code.
|
40
|
-
response.headers["Content-Type"].
|
39
|
+
expect(response.code).to eq(200)
|
40
|
+
expect(response.headers["Content-Type"]).to eq("text/plain")
|
41
41
|
end
|
42
42
|
|
43
43
|
it "executes PUT requests" do
|
44
44
|
response = HTTPI.put(@server.url, "<some>xml</some>", adapter)
|
45
|
-
response.body.
|
46
|
-
response.headers["Content-Type"].
|
45
|
+
expect(response.body).to eq("put")
|
46
|
+
expect(response.headers["Content-Type"]).to eq("text/plain")
|
47
47
|
end
|
48
48
|
|
49
49
|
it "executes DELETE requests" do
|
50
50
|
response = HTTPI.delete(@server.url, adapter)
|
51
|
-
response.body.
|
52
|
-
response.headers["Content-Type"].
|
51
|
+
expect(response.body).to eq("delete")
|
52
|
+
expect(response.headers["Content-Type"]).to eq("text/plain")
|
53
53
|
end
|
54
54
|
|
55
55
|
it "supports basic authentication" do
|
@@ -57,7 +57,7 @@ describe HTTPI::Adapter::Excon do
|
|
57
57
|
request.auth.basic("admin", "secret")
|
58
58
|
|
59
59
|
response = HTTPI.get(request, adapter)
|
60
|
-
response.body.
|
60
|
+
expect(response.body).to eq("basic-auth")
|
61
61
|
end
|
62
62
|
|
63
63
|
it "does not support ntlm authentication" do
|