httpi 4.0.3 → 4.0.4

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/httpi/version.rb +1 -1
  4. metadata +2 -50
  5. data/.devcontainer/devcontainer.json +0 -22
  6. data/.github/workflows/development.yml +0 -49
  7. data/.gitignore +0 -11
  8. data/.rspec +0 -1
  9. data/Gemfile +0 -22
  10. data/Rakefile +0 -18
  11. data/httpi.gemspec +0 -40
  12. data/spec/fixtures/attachment.gif +0 -0
  13. data/spec/fixtures/client_cert.pem +0 -20
  14. data/spec/fixtures/client_key.pem +0 -27
  15. data/spec/fixtures/xml.gz +0 -0
  16. data/spec/fixtures/xml.xml +0 -10
  17. data/spec/fixtures/xml_dime.dime +0 -0
  18. data/spec/fixtures/xml_dime.xml +0 -1
  19. data/spec/httpi/adapter/base_spec.rb +0 -23
  20. data/spec/httpi/adapter/curb_spec.rb +0 -351
  21. data/spec/httpi/adapter/em_http_spec.rb +0 -180
  22. data/spec/httpi/adapter/excon_spec.rb +0 -34
  23. data/spec/httpi/adapter/http_spec.rb +0 -28
  24. data/spec/httpi/adapter/httpclient_spec.rb +0 -238
  25. data/spec/httpi/adapter/net_http_persistent_spec.rb +0 -46
  26. data/spec/httpi/adapter/net_http_spec.rb +0 -54
  27. data/spec/httpi/adapter/rack_spec.rb +0 -109
  28. data/spec/httpi/adapter_spec.rb +0 -68
  29. data/spec/httpi/auth/config_spec.rb +0 -163
  30. data/spec/httpi/auth/ssl_spec.rb +0 -216
  31. data/spec/httpi/cookie_spec.rb +0 -36
  32. data/spec/httpi/cookie_store_spec.rb +0 -26
  33. data/spec/httpi/error_spec.rb +0 -43
  34. data/spec/httpi/httpi_spec.rb +0 -382
  35. data/spec/httpi/request_spec.rb +0 -290
  36. data/spec/httpi/response_spec.rb +0 -146
  37. data/spec/integration/curb_spec.rb +0 -140
  38. data/spec/integration/em_http_spec.rb +0 -108
  39. data/spec/integration/excon_spec.rb +0 -174
  40. data/spec/integration/fixtures/ca_all.pem +0 -19
  41. data/spec/integration/fixtures/server.cert +0 -19
  42. data/spec/integration/fixtures/server.key +0 -27
  43. data/spec/integration/http_spec.rb +0 -156
  44. data/spec/integration/httpclient_spec.rb +0 -137
  45. data/spec/integration/net_http_persistent_spec.rb +0 -171
  46. data/spec/integration/net_http_spec.rb +0 -282
  47. data/spec/integration/support/application.rb +0 -88
  48. data/spec/integration/support/server.rb +0 -83
  49. data/spec/spec_helper.rb +0 -23
  50. data/spec/support/error_helper.rb +0 -26
  51. data/spec/support/fixture.rb +0 -27
  52. data/spec/support/matchers.rb +0 -19
@@ -1,290 +0,0 @@
1
- require "spec_helper"
2
- require "httpi/request"
3
-
4
- describe HTTPI::Request do
5
- let(:request) { HTTPI::Request.new }
6
-
7
- describe ".new" do
8
- it "accepts a url" do
9
- request = HTTPI::Request.new "http://example.com"
10
- expect(request.url).to eq(URI("http://example.com"))
11
- end
12
-
13
- it "accepts a Hash of accessors to set" do
14
- request = HTTPI::Request.new :url => "http://example.com", :open_timeout => 30, :query => { key: "value" }
15
- expect(request.url).to eq(URI("http://example.com?key=value"))
16
- expect(request.open_timeout).to eq(30)
17
- expect(request.query).to eq("key=value")
18
- end
19
- end
20
-
21
- describe "#url" do
22
- it "lets you specify the URL to access as a String" do
23
- request.url = "http://example.com"
24
- expect(request.url).to eq(URI("http://example.com"))
25
- end
26
-
27
- it "also accepts a URI object" do
28
- request.url = URI("http://example.com")
29
- expect(request.url).to eq(URI("http://example.com"))
30
- end
31
-
32
- it "raises an ArgumentError in case of an invalid url" do
33
- expect { request.url = "invalid" }.to raise_error(ArgumentError)
34
- end
35
-
36
- it "uses username and password as basic authentication if present in the URL" do
37
- request.url = "http://username:password@example.com"
38
- expect(request.auth.basic).to eq(['username', 'password'])
39
- end
40
-
41
- it "uses a blank password if only username is specified in the URL" do
42
- request.url = "http://username@example.com"
43
- expect(request.auth.basic).to eq(['username', ''])
44
- end
45
- end
46
-
47
- describe "#query" do
48
- it "raises an ArgumentError if url not respond to query" do
49
- expect { request.query = "q=query" }.to raise_error(ArgumentError)
50
- end
51
-
52
- it "getter return nil for invalid url" do
53
- expect(request.query).to be_nil
54
- end
55
-
56
- context "with query parameter as String" do
57
- it "lets you specify query parameter as String" do
58
- request.url = "http://example.com"
59
- request.query = "q=query"
60
- expect(request.url.to_s).to eq("http://example.com?q=query")
61
- end
62
-
63
- it "getter return String for query parameter as String" do
64
- request.url = "http://example.com"
65
- request.query = "q=query"
66
- expect(request.query).to eq("q=query")
67
- end
68
- end
69
-
70
- context "with query parameter as Hash" do
71
- context "with flat query builder" do
72
- before do
73
- request.url = "http://example.com"
74
- request.query = {:q => ["nested", "query"]}
75
- end
76
-
77
- it "lets you specify query parameter as Hash" do
78
- expect(request.url.to_s).to eq("http://example.com?q=nested&q=query")
79
- end
80
-
81
- it "getter return String for query parameter as Hash" do
82
- expect(request.query).to eq("q=nested&q=query")
83
- end
84
- end
85
- context "with nested query builder" do
86
- before do
87
- HTTPI.query_builder = :nested
88
-
89
- request.url = "http://example.com"
90
- request.query = {:q => ["nested", "query"]}
91
- end
92
- after { HTTPI.query_builder = :flat }
93
-
94
- it "lets you specify query parameter as Hash" do
95
- expect(request.url.to_s).to eq("http://example.com?q%5B%5D=nested&q%5B%5D=query")
96
- end
97
-
98
- it "getter return String for query parameter as Hash" do
99
- expect(request.query).to eq("q%5B%5D=nested&q%5B%5D=query")
100
- end
101
- end
102
- end
103
- end
104
-
105
- describe "#proxy" do
106
- it "lets you specify the proxy URL to use as a String" do
107
- request.proxy = "http://proxy.example.com"
108
- expect(request.proxy).to eq(URI("http://proxy.example.com"))
109
- end
110
-
111
- it 'also accepts the socks URL to use as a String' do
112
- request.proxy ="socks://socks.example.com"
113
- expect(request.proxy).to eq(URI("socks://socks.example.com"))
114
- end
115
-
116
- it "also accepts a URI object" do
117
- request.proxy = URI("http://proxy.example.com")
118
- expect(request.proxy).to eq(URI("http://proxy.example.com"))
119
- end
120
-
121
- it "raises an ArgumentError in case of an invalid url" do
122
- expect { request.proxy = "invalid" }.to raise_error(ArgumentError)
123
- end
124
- end
125
-
126
- describe "#ssl" do
127
- it "returns false if no request url was specified" do
128
- expect(request).not_to be_ssl
129
- end
130
-
131
- it "returns false if the request url does not start with https" do
132
- request.url = "http://example.com"
133
- expect(request).not_to be_ssl
134
- end
135
-
136
- it "returns true if the request url starts with https" do
137
- request.url = "https://example.com"
138
- expect(request).to be_ssl
139
- end
140
-
141
- context "with an explicit value" do
142
- it "returns the value" do
143
- request.ssl = true
144
- expect(request).to be_ssl
145
- end
146
- end
147
- end
148
-
149
- describe "#headers" do
150
- it "lets you specify a Hash of HTTP request headers" do
151
- request.headers = { "Accept-Encoding" => "gzip" }
152
- expect(request.headers).to eq HTTPI::Utils::Headers.new.merge({ "Accept-Encoding" => "gzip" })
153
- end
154
-
155
- it "defaults to return an empty Hash" do
156
- expect(request.headers).to eq({})
157
- end
158
- end
159
-
160
- describe "#gzip" do
161
- it "adds the proper 'Accept-Encoding' header" do
162
- request.gzip
163
- expect(request.headers["Accept-Encoding"]).to eq("gzip,deflate")
164
- end
165
- end
166
-
167
- describe "#set_cookies" do
168
- it "sets the cookie header for the next request" do
169
- request.set_cookies response_with_cookie("some-cookie=choc-chip")
170
- expect(request.headers["Cookie"]).to eq("some-cookie=choc-chip")
171
- end
172
-
173
- it "sets additional cookies from subsequent requests" do
174
- request.set_cookies response_with_cookie("some-cookie=choc-chip")
175
- request.set_cookies response_with_cookie("second-cookie=oatmeal")
176
-
177
- expect(request.headers["Cookie"]).to include("some-cookie=choc-chip", "second-cookie=oatmeal")
178
- end
179
-
180
- it "accepts an Array of cookies" do
181
- cookies = [
182
- new_cookie("some-cookie=choc-chip"),
183
- new_cookie("second-cookie=oatmeal")
184
- ]
185
-
186
- request.set_cookies(cookies)
187
-
188
- expect(request.headers["Cookie"]).to include("some-cookie=choc-chip", "second-cookie=oatmeal")
189
- end
190
-
191
- it "doesn't do anything if the response contains no cookies" do
192
- request.set_cookies HTTPI::Response.new(200, {}, "")
193
- expect(request.headers).not_to include("Cookie")
194
- end
195
-
196
- def new_cookie(cookie_string)
197
- HTTPI::Cookie.new(cookie_string)
198
- end
199
-
200
- def response_with_cookie(cookie)
201
- HTTPI::Response.new(200, { "Set-Cookie" => "#{cookie}; Path=/; HttpOnly" }, "")
202
- end
203
- end
204
-
205
- describe "#body" do
206
- context "with query parameter as String" do
207
- it "lets you specify the HTTP request body using a String" do
208
- request.body = "<some>xml</some>"
209
- expect(request.body).to eq("<some>xml</some>")
210
- end
211
- end
212
- context "with flat query builder" do
213
- it "lets you specify the HTTP request body using a Hash" do
214
- request.body = {:foo => :bar, :baz => :foo}
215
- expect(request.body.split("&")).to match_array(["foo=bar", "baz=foo"])
216
- end
217
- end
218
- context "with query parameter as Hash" do
219
- context "with flat query builder" do
220
- it "request body using a Hash" do
221
- request.body = {:foo => :bar, :baz => :foo}
222
- expect(request.body.split("&")).to match_array(["foo=bar", "baz=foo"])
223
- end
224
- it "request body using a Hash with Array" do
225
- request.body = {:foo => :bar, :baz => [:foo, :tst]}
226
- expect(request.body.split("&")).to match_array(["foo=bar", "baz=foo", "baz=tst"])
227
- end
228
- end
229
- context "with nested query builder" do
230
- before { HTTPI.query_builder = :nested }
231
- after { HTTPI.query_builder = :flat }
232
- it "request body using a Hash" do
233
- request.body = {:foo => :bar, :baz => :foo}
234
- expect(request.body.split("&")).to match_array(["foo=bar", "baz=foo"])
235
- end
236
- it "request body using a Hash with Array" do
237
- request.body = {:foo => :bar, :baz => [:foo, :tst]}
238
- expect(request.body.split("&")).to match_array(["foo=bar", "baz%5B%5D=foo", "baz%5B%5D=tst"])
239
- end
240
- end
241
- end
242
- end
243
-
244
- describe "#open_timeout" do
245
- it "lets you specify the open timeout" do
246
- request.open_timeout = 30
247
- expect(request.open_timeout).to eq(30)
248
- end
249
- end
250
-
251
- describe "#read_timeout" do
252
- it "lets you specify the read timeout" do
253
- request.read_timeout = 45
254
- expect(request.read_timeout).to eq(45)
255
- end
256
- end
257
-
258
- describe "#auth" do
259
- it "returns the authentication object" do
260
- expect(request.auth).to be_an(HTTPI::Auth::Config)
261
- end
262
-
263
- it "memoizes the authentication object" do
264
- expect(request.auth).to equal(request.auth)
265
- end
266
- end
267
-
268
- describe "#auth?" do
269
- it "returns true when auth credentials are specified" do
270
- request.auth.basic "username", "password"
271
- expect(request.auth?).to be_truthy
272
- end
273
-
274
- it "returns false otherwise" do
275
- expect(request.auth?).to be_falsey
276
- end
277
- end
278
-
279
- describe '#follow_redirect?' do
280
- it 'returns true when follow_redirect is set to true' do
281
- request.follow_redirect = true
282
- expect(request.follow_redirect?).to be_truthy
283
- end
284
-
285
- it 'returns false by default' do
286
- expect(request.follow_redirect?).to be_falsey
287
- end
288
- end
289
-
290
- end
@@ -1,146 +0,0 @@
1
- require "spec_helper"
2
- require "httpi/response"
3
-
4
- describe HTTPI::Response do
5
-
6
- context "normal" do
7
- let(:response) { HTTPI::Response.new 200, {}, Fixture.xml }
8
-
9
- describe "#error?" do
10
- it "returns false" do
11
- expect(response).not_to be_an_error
12
- end
13
- end
14
-
15
- describe "#headers" do
16
- it "returns the HTTP response headers" do
17
- expect(response.headers).to eq({})
18
- end
19
- end
20
-
21
- describe "#code" do
22
- it "returns the HTTP response code" do
23
- expect(response.code).to eq(200)
24
- end
25
-
26
- it "always returns an Integer" do
27
- response = HTTPI::Response.new "200", {}, ""
28
- expect(response.code).to eq(200)
29
- end
30
- end
31
-
32
- describe "#multipart" do
33
- it "returns false" do
34
- expect(response).not_to be_multipart
35
- end
36
- end
37
-
38
- describe "#cookies" do
39
- it "returns an empty list" do
40
- expect(response.cookies).to eq([])
41
- end
42
- end
43
- end
44
-
45
- context "with cookies" do
46
- let(:response) { HTTPI::Response.new 200, { "Set-Cookie" => "some-cookie=choc-chip; Path=/; HttpOnly" }, "" }
47
-
48
- describe "#cookies" do
49
- it "returns a list of cookies" do
50
- cookie = response.cookies.first
51
- expect(cookie).to be_a(HTTPI::Cookie)
52
- end
53
- end
54
- end
55
-
56
- context "empty" do
57
- let(:response) { HTTPI::Response.new 204, {}, nil }
58
-
59
- describe "#body" do
60
- it "returns an empty String" do
61
- expect(response.body).to eq("")
62
- end
63
- end
64
- end
65
-
66
- context "multipart" do
67
- let(:response) { HTTPI::Response.new 200, { "Content-Type" => "multipart/related" }, "multipart" }
68
-
69
- describe "#multipart" do
70
- it "returns true" do
71
- expect(response).to be_multipart
72
- end
73
- end
74
- end
75
-
76
- context "error" do
77
- let(:response) { HTTPI::Response.new 404, {}, "" }
78
-
79
- describe "#error?" do
80
- it "returns true" do
81
- expect(response).to be_an_error
82
- end
83
- end
84
- end
85
-
86
- context "gzipped" do
87
- let(:response) { HTTPI::Response.new 200, { "Content-Encoding" => "gzip" }, Fixture.gzip }
88
-
89
- describe "#headers" do
90
- it "returns the HTTP response headers" do
91
- expect(response.headers).to eq HTTPI::Utils::Headers.new.merge({ "Content-Encoding" => "gzip" })
92
- end
93
- end
94
-
95
- describe "#body" do
96
- it "returns the (gzip decoded) HTTP response body" do
97
- expect(response.body).to eq(Fixture.xml)
98
- end
99
-
100
- it "bubbles Zlib errors" do
101
- arbitrary_error = Class.new(ArgumentError)
102
- Zlib::GzipReader.expects(:new).raises(arbitrary_error)
103
- expect { response.body }.to raise_error(arbitrary_error)
104
- end
105
- end
106
-
107
- describe "#raw_body" do
108
- it "returns the raw HTML response body" do
109
- expect(response.raw_body).to eq(Fixture.gzip)
110
- end
111
- end
112
- end
113
-
114
- context "DIME" do
115
- let(:response) { HTTPI::Response.new 200, { "Content-Type" => "application/dime" }, Fixture.dime }
116
-
117
- describe "#headers" do
118
- it "returns the HTTP response headers" do
119
- expect(response.headers).to eq HTTPI::Utils::Headers.new.merge({ "Content-Type" => "application/dime" })
120
- end
121
-
122
- it "preserves casing" do
123
- expect(response.headers.keys).to eq ["Content-Type"]
124
- end
125
- end
126
-
127
- describe "#body" do
128
- it "returns the (dime decoded) HTTP response body" do
129
- expect(response.body).to eq(Fixture.xml_dime)
130
- end
131
- end
132
-
133
- describe "#raw_body" do
134
- it "returns the raw HTML response body" do
135
- expect(response.raw_body).to eq(Fixture.dime)
136
- end
137
- end
138
-
139
- describe "#attachments" do
140
- it "returns proper attachment when given a dime response" do
141
- response.attachments.first.data == File.read(File.expand_path("../../fixtures/attachment.gif", __FILE__))
142
- end
143
- end
144
- end
145
-
146
- end
@@ -1,140 +0,0 @@
1
- require "spec_helper"
2
- require "integration/support/server"
3
-
4
- describe HTTPI::Adapter::Curb do
5
-
6
- # curb is not supported on jruby
7
- unless RUBY_PLATFORM =~ /java/
8
-
9
- subject(:adapter) { :curb }
10
-
11
- context "http requests" do
12
- before :all do
13
- @server = IntegrationServer.run
14
- end
15
-
16
- after :all do
17
- @server.stop
18
- end
19
-
20
- it "sends and receives HTTP headers" do
21
- request = HTTPI::Request.new(@server.url + "x-header")
22
- request.headers["X-Header"] = "HTTPI"
23
-
24
- response = HTTPI.get(request, adapter)
25
- expect(response.body).to include("HTTPI")
26
- end
27
-
28
- it "it supports headers with multiple values" do
29
- request = HTTPI::Request.new(@server.url + "cookies")
30
-
31
- response = HTTPI.get(request, adapter)
32
- cookies = ["cookie1=chip1; path=/", "cookie2=chip2; path=/"]
33
- expect(response.headers["Set-Cookie"]).to eq(cookies)
34
- end
35
-
36
- it "it supports read timeout" do
37
- require "curb"
38
-
39
- request = HTTPI::Request.new(@server.url + "timeout")
40
- request.read_timeout = 0.5 # seconds
41
-
42
- expect do
43
- HTTPI.get(request, adapter)
44
- end.to raise_exception(Curl::Err::TimeoutError)
45
- end
46
-
47
- it "executes GET requests" do
48
- response = HTTPI.get(@server.url, adapter)
49
- expect(response.body).to eq("get")
50
- expect(response.headers["Content-Type"]).to eq("text/plain")
51
- end
52
-
53
- it "executes POST requests" do
54
- response = HTTPI.post(@server.url, "<some>xml</some>", adapter)
55
- expect(response.body).to eq("post")
56
- expect(response.headers["Content-Type"]).to eq("text/plain")
57
- end
58
-
59
- it "executes HEAD requests" do
60
- response = HTTPI.head(@server.url, adapter)
61
- expect(response.code).to eq(200)
62
- expect(response.headers["Content-Type"]).to eq("text/plain")
63
- end
64
-
65
- it "executes PUT requests" do
66
- response = HTTPI.put(@server.url, "<some>xml</some>", adapter)
67
- expect(response.body).to eq("put")
68
- expect(response.headers["Content-Type"]).to eq("text/plain")
69
- end
70
-
71
- it "executes DELETE requests" do
72
- response = HTTPI.delete(@server.url, adapter)
73
- expect(response.body).to eq("delete")
74
- expect(response.headers["Content-Type"]).to eq("text/plain")
75
- end
76
-
77
- it "supports basic authentication" do
78
- request = HTTPI::Request.new(@server.url + "basic-auth")
79
- request.auth.basic("admin", "secret")
80
-
81
- response = HTTPI.get(request, adapter)
82
- expect(response.body).to eq("basic-auth")
83
- end
84
-
85
- # Rack::Auth::Digest is removed in Rack 3.1
86
- xit "supports digest authentication" do
87
- request = HTTPI::Request.new(@server.url + "digest-auth")
88
- request.auth.digest("admin", "secret")
89
-
90
- response = HTTPI.get(request, adapter)
91
- expect(response.body).to eq("digest-auth")
92
- end
93
-
94
- it "supports chunked response" do
95
- request = HTTPI::Request.new(@server.url)
96
- res = ""
97
- request.on_body do |body|
98
- res += body
99
- end
100
- response = HTTPI.post(request, adapter)
101
- expect(res).to eq("post")
102
- expect(response.body).to eq("")
103
- end
104
-
105
- end
106
-
107
- context "https requests" do
108
- before :all do
109
- @server = IntegrationServer.run(:ssl => true)
110
- end
111
-
112
- after :all do
113
- @server.stop
114
- end
115
-
116
- it "raises when no certificate was set up" do
117
- expect { HTTPI.post(@server.url, "", adapter) }.to raise_error(HTTPI::SSLError)
118
- end
119
-
120
- it "works when set up properly" do
121
- request = HTTPI::Request.new(@server.url)
122
- request.auth.ssl.ca_cert_file = IntegrationServer.ssl_ca_file
123
-
124
- response = HTTPI.get(request, adapter)
125
- expect(response.body).to eq("get")
126
- end
127
-
128
- it "works with ciphers" do
129
- request = HTTPI::Request.new(@server.url)
130
- request.auth.ssl.ca_cert_file = IntegrationServer.ssl_ca_file
131
- request.auth.ssl.ciphers = OpenSSL::SSL::SSLContext.new.ciphers
132
-
133
- response = HTTPI.get(request, adapter)
134
- expect(response.body).to eq("get")
135
- end
136
- end
137
-
138
- end
139
- end
140
-
@@ -1,108 +0,0 @@
1
- require "spec_helper"
2
- require "integration/support/server"
3
-
4
- describe HTTPI::Adapter::EmHttpRequest do
5
-
6
- # em_http is not supported on java
7
- unless RUBY_PLATFORM =~ /java/
8
- require "em-synchrony"
9
-
10
- subject(:adapter) { :em_http }
11
-
12
- around :each do |example|
13
- EM.synchrony do
14
- example.run
15
- EM.stop
16
- end
17
- end
18
-
19
- context "http requests" do
20
- before :all do
21
- # for some reason, these specs don't work with "localhost". [dh, 2012-12-15]
22
- @server = IntegrationServer.run(:host => "127.0.0.1")
23
- end
24
-
25
- after :all do
26
- @server.stop
27
- end
28
-
29
- it "sends and receives HTTP headers" do
30
- request = HTTPI::Request.new(@server.url + "x-header")
31
- request.headers["X-Header"] = "HTTPI"
32
-
33
- response = HTTPI.get(request, adapter)
34
- expect(response.body).to include("HTTPI")
35
- end
36
-
37
- it "it supports headers with multiple values" do
38
- request = HTTPI::Request.new(@server.url + "cookies")
39
-
40
- response = HTTPI.get(request, adapter)
41
- cookies = ["cookie1=chip1; path=/", "cookie2=chip2; path=/"]
42
- expect(response.headers["Set-Cookie"]).to eq(cookies)
43
- end
44
-
45
- if RUBY_PLATFORM =~ /java/
46
- pending <<-MSG
47
- It seems like JRuby is missing support for inactivity timeout! See related issues on GitHub:
48
- - https://github.com/eventmachine/eventmachine/issues/155
49
- - https://github.com/eventmachine/eventmachine/pull/312
50
- MSG
51
- else
52
- it "it supports read timeout" do
53
- request = HTTPI::Request.new(@server.url + "timeout")
54
- request.read_timeout = 0.5 # seconds
55
-
56
- expect do
57
- HTTPI.get(request, adapter)
58
- end.to raise_exception(HTTPI::TimeoutError)
59
- end
60
- end
61
-
62
- it "executes GET requests" do
63
- response = HTTPI.get(@server.url, adapter)
64
- expect(response.body).to eq("get")
65
- expect(response.headers["Content-Type"]).to eq("text/plain")
66
- end
67
-
68
- it "executes POST requests" do
69
- response = HTTPI.post(@server.url, "<some>xml</some>", adapter)
70
- expect(response.body).to eq("post")
71
- expect(response.headers["Content-Type"]).to eq("text/plain")
72
- end
73
-
74
- it "executes HEAD requests" do
75
- response = HTTPI.head(@server.url, adapter)
76
- expect(response.code).to eq(200)
77
- expect(response.headers["Content-Type"]).to eq("text/plain")
78
- end
79
-
80
- it "executes PUT requests" do
81
- response = HTTPI.put(@server.url, "<some>xml</some>", adapter)
82
- expect(response.body).to eq("put")
83
- expect(response.headers["Content-Type"]).to eq("text/plain")
84
- end
85
-
86
- it "executes DELETE requests" do
87
- response = HTTPI.delete(@server.url, adapter)
88
- expect(response.body).to eq("delete")
89
- expect(response.headers["Content-Type"]).to eq("text/plain")
90
- end
91
-
92
- it "supports basic authentication" do
93
- request = HTTPI::Request.new(@server.url + "basic-auth")
94
- request.auth.basic("admin", "secret")
95
-
96
- response = HTTPI.get(request, adapter)
97
- expect(response.body).to eq("basic-auth")
98
- end
99
-
100
- # it does not support digest authentication
101
-
102
- # it does not support chunked response
103
- end
104
-
105
- # it does not support ssl authentication
106
-
107
- end
108
- end