httpclient 2.8.3 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/hexdump.rb +12 -12
- data/lib/httpclient/http.rb +8 -8
- data/lib/httpclient/jruby_ssl_socket.rb +14 -8
- data/lib/httpclient/session.rb +2 -2
- data/lib/httpclient/ssl_config.rb +30 -21
- data/lib/httpclient/util.rb +1 -1
- data/lib/httpclient/version.rb +1 -1
- data/lib/httpclient.rb +5 -1
- data/lib/jsonclient.rb +8 -5
- data/sample/auth.rb +1 -1
- data/sample/generate_test_keys.rb +99 -0
- data/test/ca-chain.pem +32 -36
- data/test/ca.cert +16 -19
- data/test/ca.key +27 -0
- data/test/ca.srl +1 -0
- data/test/client-pass.key +30 -18
- data/test/client.cert +17 -16
- data/test/client.key +25 -13
- data/test/fixtures/verify.alt.cert +20 -0
- data/test/fixtures/verify.foo.cert +20 -0
- data/test/fixtures/verify.key +27 -0
- data/test/fixtures/verify.localhost.cert +20 -0
- data/test/helper.rb +5 -7
- data/test/server.cert +16 -15
- data/test/server.key +25 -13
- data/test/subca.cert +16 -17
- data/test/subca.key +27 -0
- data/test/subca.srl +1 -0
- data/test/test_auth.rb +21 -17
- data/test/test_hexdump.rb +1 -2
- data/test/test_http-access2.rb +31 -23
- data/test/test_httpclient.rb +57 -58
- data/test/test_jsonclient.rb +18 -0
- data/test/test_ssl.rb +52 -89
- metadata +31 -9
data/test/test_http-access2.rb
CHANGED
@@ -24,7 +24,7 @@ class TestClient < Test::Unit::TestCase
|
|
24
24
|
def test_initialize
|
25
25
|
setup_proxyserver
|
26
26
|
escape_noproxy do
|
27
|
-
@proxyio.
|
27
|
+
@proxyio.truncate(0)
|
28
28
|
@client = HTTPAccess2::Client.new(proxyurl)
|
29
29
|
assert_equal(urify(proxyurl), @client.proxy)
|
30
30
|
assert_equal(200, @client.head(serverurl).status)
|
@@ -34,7 +34,7 @@ class TestClient < Test::Unit::TestCase
|
|
34
34
|
|
35
35
|
def test_agent_name
|
36
36
|
@client = HTTPAccess2::Client.new(nil, "agent_name_foo")
|
37
|
-
str = ""
|
37
|
+
str = "".dup
|
38
38
|
@client.debug_dev = str
|
39
39
|
@client.get(serverurl)
|
40
40
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -44,7 +44,7 @@ class TestClient < Test::Unit::TestCase
|
|
44
44
|
|
45
45
|
def test_from
|
46
46
|
@client = HTTPAccess2::Client.new(nil, nil, "from_bar")
|
47
|
-
str = ""
|
47
|
+
str = "".dup
|
48
48
|
@client.debug_dev = str
|
49
49
|
@client.get(serverurl)
|
50
50
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -53,7 +53,7 @@ class TestClient < Test::Unit::TestCase
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def test_debug_dev
|
56
|
-
str = ""
|
56
|
+
str = "".dup
|
57
57
|
@client.debug_dev = str
|
58
58
|
assert(str.empty?)
|
59
59
|
@client.get(serverurl)
|
@@ -62,7 +62,7 @@ class TestClient < Test::Unit::TestCase
|
|
62
62
|
|
63
63
|
def _test_protocol_version_http09
|
64
64
|
@client.protocol_version = 'HTTP/0.9'
|
65
|
-
str = ""
|
65
|
+
str = "".dup
|
66
66
|
@client.debug_dev = str
|
67
67
|
@client.get(serverurl + 'hello')
|
68
68
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -76,7 +76,7 @@ class TestClient < Test::Unit::TestCase
|
|
76
76
|
|
77
77
|
def test_protocol_version_http10
|
78
78
|
@client.protocol_version = 'HTTP/1.0'
|
79
|
-
str = ""
|
79
|
+
str = "".dup
|
80
80
|
@client.debug_dev = str
|
81
81
|
@client.get(serverurl + 'hello')
|
82
82
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -88,7 +88,7 @@ class TestClient < Test::Unit::TestCase
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def test_protocol_version_http11
|
91
|
-
str = ""
|
91
|
+
str = "".dup
|
92
92
|
@client.debug_dev = str
|
93
93
|
@client.get(serverurl)
|
94
94
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -97,7 +97,7 @@ class TestClient < Test::Unit::TestCase
|
|
97
97
|
assert_equal("GET / HTTP/1.1", lines[3])
|
98
98
|
assert_equal("Host: localhost:#{serverport}", lines[7])
|
99
99
|
@client.protocol_version = 'HTTP/1.1'
|
100
|
-
str = ""
|
100
|
+
str = "".dup
|
101
101
|
@client.debug_dev = str
|
102
102
|
@client.get(serverurl)
|
103
103
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -105,7 +105,7 @@ class TestClient < Test::Unit::TestCase
|
|
105
105
|
assert_equal("! CONNECTION ESTABLISHED", lines[2])
|
106
106
|
assert_equal("GET / HTTP/1.1", lines[3])
|
107
107
|
@client.protocol_version = 'HTTP/1.0'
|
108
|
-
str = ""
|
108
|
+
str = "".dup
|
109
109
|
@client.debug_dev = str
|
110
110
|
@client.get(serverurl)
|
111
111
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -130,12 +130,12 @@ class TestClient < Test::Unit::TestCase
|
|
130
130
|
@client.proxy = uri
|
131
131
|
assert_equal(uri, @client.proxy)
|
132
132
|
#
|
133
|
-
@proxyio.
|
133
|
+
@proxyio.truncate(0)
|
134
134
|
@client.proxy = nil
|
135
135
|
assert_equal(200, @client.head(serverurl).status)
|
136
136
|
assert(@proxyio.string.empty?)
|
137
137
|
#
|
138
|
-
@proxyio.
|
138
|
+
@proxyio.truncate(0)
|
139
139
|
@client.proxy = proxyurl
|
140
140
|
assert_equal(200, @client.head(serverurl).status)
|
141
141
|
assert(!@proxyio.string.empty?)
|
@@ -143,7 +143,7 @@ class TestClient < Test::Unit::TestCase
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def test_noproxy_for_localhost
|
146
|
-
@proxyio.
|
146
|
+
@proxyio.truncate(0)
|
147
147
|
@client.proxy = proxyurl
|
148
148
|
assert_equal(200, @client.head(serverurl).status)
|
149
149
|
assert(@proxyio.string.empty?)
|
@@ -154,36 +154,36 @@ class TestClient < Test::Unit::TestCase
|
|
154
154
|
escape_noproxy do
|
155
155
|
# proxy is not set.
|
156
156
|
@client.no_proxy = 'localhost'
|
157
|
-
@proxyio.
|
157
|
+
@proxyio.truncate(0)
|
158
158
|
@client.proxy = nil
|
159
159
|
assert_equal(200, @client.head(serverurl).status)
|
160
160
|
assert(/accept/ !~ @proxyio.string)
|
161
161
|
#
|
162
|
-
@proxyio.
|
162
|
+
@proxyio.truncate(0)
|
163
163
|
@client.proxy = proxyurl
|
164
164
|
assert_equal(200, @client.head(serverurl).status)
|
165
165
|
assert(/accept/ !~ @proxyio.string)
|
166
166
|
#
|
167
167
|
@client.no_proxy = 'foobar'
|
168
|
-
@proxyio.
|
168
|
+
@proxyio.truncate(0)
|
169
169
|
@client.proxy = proxyurl
|
170
170
|
assert_equal(200, @client.head(serverurl).status)
|
171
171
|
assert(/accept/ =~ @proxyio.string)
|
172
172
|
#
|
173
173
|
@client.no_proxy = 'foobar,localhost:baz'
|
174
|
-
@proxyio.
|
174
|
+
@proxyio.truncate(0)
|
175
175
|
@client.proxy = proxyurl
|
176
176
|
assert_equal(200, @client.head(serverurl).status)
|
177
177
|
assert(/accept/ !~ @proxyio.string)
|
178
178
|
#
|
179
179
|
@client.no_proxy = 'foobar,localhost:443'
|
180
|
-
@proxyio.
|
180
|
+
@proxyio.truncate(0)
|
181
181
|
@client.proxy = proxyurl
|
182
182
|
assert_equal(200, @client.head(serverurl).status)
|
183
183
|
assert(/accept/ =~ @proxyio.string)
|
184
184
|
#
|
185
185
|
@client.no_proxy = "foobar,localhost:443:localhost:#{serverport},baz"
|
186
|
-
@proxyio.
|
186
|
+
@proxyio.truncate(0)
|
187
187
|
@client.proxy = proxyurl
|
188
188
|
assert_equal(200, @client.head(serverurl).status)
|
189
189
|
assert(/accept/ !~ @proxyio.string)
|
@@ -314,14 +314,14 @@ class TestClient < Test::Unit::TestCase
|
|
314
314
|
end
|
315
315
|
|
316
316
|
def test_extra_headers
|
317
|
-
str = ""
|
317
|
+
str = "".dup
|
318
318
|
@client.debug_dev = str
|
319
319
|
@client.head(serverurl, nil, {"ABC" => "DEF"})
|
320
320
|
lines = str.split(/(?:\r?\n)+/)
|
321
321
|
assert_equal("= Request", lines[0])
|
322
322
|
assert_match("ABC: DEF", lines[4])
|
323
323
|
#
|
324
|
-
str = ""
|
324
|
+
str = "".dup
|
325
325
|
@client.debug_dev = str
|
326
326
|
@client.get(serverurl, nil, [["ABC", "DEF"], ["ABC", "DEF"]])
|
327
327
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -331,9 +331,17 @@ class TestClient < Test::Unit::TestCase
|
|
331
331
|
end
|
332
332
|
|
333
333
|
def test_timeout
|
334
|
-
|
335
|
-
assert_equal(
|
336
|
-
assert_equal(
|
334
|
+
client = HTTPClient.new
|
335
|
+
assert_equal(60, client.connect_timeout)
|
336
|
+
assert_equal(120, client.send_timeout)
|
337
|
+
assert_equal(60, client.receive_timeout)
|
338
|
+
#
|
339
|
+
client.connect_timeout = 1
|
340
|
+
client.send_timeout = 2
|
341
|
+
client.receive_timeout = 3
|
342
|
+
assert_equal(1, client.connect_timeout)
|
343
|
+
assert_equal(2, client.send_timeout)
|
344
|
+
assert_equal(3, client.receive_timeout)
|
337
345
|
end
|
338
346
|
|
339
347
|
def test_connect_timeout
|
data/test/test_httpclient.rb
CHANGED
@@ -20,7 +20,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
20
20
|
def test_initialize
|
21
21
|
setup_proxyserver
|
22
22
|
escape_noproxy do
|
23
|
-
@proxyio.
|
23
|
+
@proxyio.truncate(0)
|
24
24
|
@client = HTTPClient.new(proxyurl)
|
25
25
|
assert_equal(urify(proxyurl), @client.proxy)
|
26
26
|
assert_equal(200, @client.head(serverurl).status)
|
@@ -30,7 +30,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
30
30
|
|
31
31
|
def test_agent_name
|
32
32
|
@client = HTTPClient.new(nil, "agent_name_foo")
|
33
|
-
str = ""
|
33
|
+
str = "".dup
|
34
34
|
@client.debug_dev = str
|
35
35
|
@client.get(serverurl)
|
36
36
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -40,7 +40,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
40
40
|
|
41
41
|
def test_from
|
42
42
|
@client = HTTPClient.new(nil, nil, "from_bar")
|
43
|
-
str = ""
|
43
|
+
str = "".dup
|
44
44
|
@client.debug_dev = str
|
45
45
|
@client.get(serverurl)
|
46
46
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -49,7 +49,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_debug_dev
|
52
|
-
str = ""
|
52
|
+
str = "".dup
|
53
53
|
@client.debug_dev = str
|
54
54
|
assert_equal(str.object_id, @client.debug_dev.object_id)
|
55
55
|
assert(str.empty?)
|
@@ -58,7 +58,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def test_debug_dev_stream
|
61
|
-
str = ""
|
61
|
+
str = "".dup
|
62
62
|
@client.debug_dev = str
|
63
63
|
conn = @client.get_async(serverurl)
|
64
64
|
Thread.pass while !conn.finished?
|
@@ -67,7 +67,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
67
67
|
|
68
68
|
def test_protocol_version_http09
|
69
69
|
@client.protocol_version = 'HTTP/0.9'
|
70
|
-
@client.debug_dev = str = ''
|
70
|
+
@client.debug_dev = str = ''.dup
|
71
71
|
@client.test_loopback_http_response << "hello\nworld\n"
|
72
72
|
res = @client.get(serverurl + 'hello')
|
73
73
|
assert_equal('0.9', res.http_version)
|
@@ -88,7 +88,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
88
88
|
assert_equal(nil, @client.protocol_version)
|
89
89
|
@client.protocol_version = 'HTTP/1.0'
|
90
90
|
assert_equal('HTTP/1.0', @client.protocol_version)
|
91
|
-
str = ""
|
91
|
+
str = "".dup
|
92
92
|
@client.debug_dev = str
|
93
93
|
@client.get(serverurl + 'hello')
|
94
94
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -100,7 +100,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def test_header_accept_by_default
|
103
|
-
str = ""
|
103
|
+
str = "".dup
|
104
104
|
@client.debug_dev = str
|
105
105
|
@client.get(serverurl)
|
106
106
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -108,7 +108,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def test_header_accept
|
111
|
-
str = ""
|
111
|
+
str = "".dup
|
112
112
|
@client.debug_dev = str
|
113
113
|
@client.get(serverurl, :header => {:Accept => 'text/html'})
|
114
114
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -116,7 +116,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def test_header_symbol
|
119
|
-
str = ""
|
119
|
+
str = "".dup
|
120
120
|
@client.debug_dev = str
|
121
121
|
@client.post(serverurl + 'servlet', :header => {:'Content-Type' => 'application/json'}, :body => 'hello')
|
122
122
|
lines = str.split(/(?:\r?\n)+/).grep(/^Content-Type/)
|
@@ -124,7 +124,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def test_host_given
|
127
|
-
str = ""
|
127
|
+
str = "".dup
|
128
128
|
@client.debug_dev = str
|
129
129
|
@client.get(serverurl)
|
130
130
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -134,7 +134,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
134
134
|
assert_equal("Host: localhost:#{serverport}", lines[7])
|
135
135
|
#
|
136
136
|
@client.reset_all
|
137
|
-
str = ""
|
137
|
+
str = "".dup
|
138
138
|
@client.debug_dev = str
|
139
139
|
@client.get(serverurl, nil, {'Host' => 'foo'})
|
140
140
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -166,7 +166,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
166
166
|
|
167
167
|
def test_protocol_version_http11
|
168
168
|
assert_equal(nil, @client.protocol_version)
|
169
|
-
str = ""
|
169
|
+
str = "".dup
|
170
170
|
@client.debug_dev = str
|
171
171
|
@client.get(serverurl)
|
172
172
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -176,7 +176,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
176
176
|
assert_equal("Host: localhost:#{serverport}", lines[7])
|
177
177
|
@client.protocol_version = 'HTTP/1.1'
|
178
178
|
assert_equal('HTTP/1.1', @client.protocol_version)
|
179
|
-
str = ""
|
179
|
+
str = "".dup
|
180
180
|
@client.debug_dev = str
|
181
181
|
@client.get(serverurl)
|
182
182
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -184,7 +184,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
184
184
|
assert_equal("! CONNECTION ESTABLISHED", lines[2])
|
185
185
|
assert_equal("GET / HTTP/1.1", lines[3])
|
186
186
|
@client.protocol_version = 'HTTP/1.0'
|
187
|
-
str = ""
|
187
|
+
str = "".dup
|
188
188
|
@client.debug_dev = str
|
189
189
|
@client.get(serverurl)
|
190
190
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -209,14 +209,14 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
209
209
|
@client.proxy = uri
|
210
210
|
assert_equal(uri, @client.proxy)
|
211
211
|
#
|
212
|
-
@proxyio.
|
212
|
+
@proxyio.truncate(0)
|
213
213
|
@client.proxy = nil
|
214
214
|
assert_equal(200, @client.head(serverurl).status)
|
215
215
|
assert(/accept/ !~ @proxyio.string)
|
216
216
|
#
|
217
|
-
@proxyio.
|
217
|
+
@proxyio.truncate(0)
|
218
218
|
@client.proxy = proxyurl
|
219
|
-
@client.debug_dev = str = ""
|
219
|
+
@client.debug_dev = str = "".dup
|
220
220
|
assert_equal(200, @client.head(serverurl).status)
|
221
221
|
assert(/accept/ =~ @proxyio.string)
|
222
222
|
assert(/Host: localhost:#{serverport}/ =~ str)
|
@@ -225,13 +225,13 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
225
225
|
|
226
226
|
def test_host_header
|
227
227
|
@client.proxy = proxyurl
|
228
|
-
@client.debug_dev = str = ""
|
228
|
+
@client.debug_dev = str = "".dup
|
229
229
|
@client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
|
230
230
|
assert_equal(200, @client.head('http://www.example.com/foo').status)
|
231
231
|
# ensure no ':80' is added. some servers dislike that.
|
232
232
|
assert(/\r\nHost: www\.example\.com\r\n/ =~ str)
|
233
233
|
#
|
234
|
-
@client.debug_dev = str = ""
|
234
|
+
@client.debug_dev = str = "".dup
|
235
235
|
@client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
|
236
236
|
assert_equal(200, @client.head('http://www.example.com:12345/foo').status)
|
237
237
|
# ensure ':12345' exists.
|
@@ -273,7 +273,7 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
273
273
|
end
|
274
274
|
|
275
275
|
def test_noproxy_for_localhost
|
276
|
-
@proxyio.
|
276
|
+
@proxyio.truncate(0)
|
277
277
|
@client.proxy = proxyurl
|
278
278
|
assert_equal(200, @client.head(serverurl).status)
|
279
279
|
assert(/accept/ !~ @proxyio.string)
|
@@ -286,36 +286,36 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
286
286
|
assert_equal(nil, @client.no_proxy)
|
287
287
|
@client.no_proxy = 'localhost'
|
288
288
|
assert_equal('localhost', @client.no_proxy)
|
289
|
-
@proxyio.
|
289
|
+
@proxyio.truncate(0)
|
290
290
|
@client.proxy = nil
|
291
291
|
assert_equal(200, @client.head(serverurl).status)
|
292
292
|
assert(/accept/ !~ @proxyio.string)
|
293
293
|
#
|
294
|
-
@proxyio.
|
294
|
+
@proxyio.truncate(0)
|
295
295
|
@client.proxy = proxyurl
|
296
296
|
assert_equal(200, @client.head(serverurl).status)
|
297
297
|
assert(/accept/ !~ @proxyio.string)
|
298
298
|
#
|
299
299
|
@client.no_proxy = 'foobar'
|
300
|
-
@proxyio.
|
300
|
+
@proxyio.truncate(0)
|
301
301
|
@client.proxy = proxyurl
|
302
302
|
assert_equal(200, @client.head(serverurl).status)
|
303
303
|
assert(/accept/ =~ @proxyio.string)
|
304
304
|
#
|
305
305
|
@client.no_proxy = 'foobar,localhost:baz'
|
306
|
-
@proxyio.
|
306
|
+
@proxyio.truncate(0)
|
307
307
|
@client.proxy = proxyurl
|
308
308
|
assert_equal(200, @client.head(serverurl).status)
|
309
309
|
assert(/accept/ !~ @proxyio.string)
|
310
310
|
#
|
311
311
|
@client.no_proxy = 'foobar,localhost:443'
|
312
|
-
@proxyio.
|
312
|
+
@proxyio.truncate(0)
|
313
313
|
@client.proxy = proxyurl
|
314
314
|
assert_equal(200, @client.head(serverurl).status)
|
315
315
|
assert(/accept/ =~ @proxyio.string)
|
316
316
|
#
|
317
317
|
@client.no_proxy = "foobar,localhost:443:localhost:#{serverport},baz"
|
318
|
-
@proxyio.
|
318
|
+
@proxyio.truncate(0)
|
319
319
|
@client.proxy = proxyurl
|
320
320
|
assert_equal(200, @client.head(serverurl).status)
|
321
321
|
assert(/accept/ !~ @proxyio.string)
|
@@ -323,28 +323,28 @@ class TestHTTPClient < Test::Unit::TestCase
|
|
323
323
|
end
|
324
324
|
|
325
325
|
def test_no_proxy_with_initial_dot
|
326
|
-
@client.debug_dev = str = ""
|
326
|
+
@client.debug_dev = str = "".dup
|
327
327
|
@client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
|
328
328
|
@client.no_proxy = ''
|
329
329
|
@client.proxy = proxyurl
|
330
330
|
@client.head('http://www.foo.com')
|
331
331
|
assert(/CONNECT TO localhost/ =~ str, 'via proxy')
|
332
332
|
#
|
333
|
-
@client.debug_dev = str = ""
|
333
|
+
@client.debug_dev = str = "".dup
|
334
334
|
@client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
|
335
335
|
@client.no_proxy = '.foo.com'
|
336
336
|
@client.proxy = proxyurl
|
337
337
|
@client.head('http://www.foo.com')
|
338
338
|
assert(/CONNECT TO www.foo.com/ =~ str, 'no proxy because .foo.com matches with www.foo.com')
|
339
339
|
#
|
340
|
-
@client.debug_dev = str = ""
|
340
|
+
@client.debug_dev = str = "".dup
|
341
341
|
@client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
|
342
342
|
@client.no_proxy = '.foo.com'
|
343
343
|
@client.proxy = proxyurl
|
344
344
|
@client.head('http://foo.com')
|
345
345
|
assert(/CONNECT TO localhost/ =~ str, 'via proxy because .foo.com does not matche with foo.com')
|
346
346
|
#
|
347
|
-
@client.debug_dev = str = ""
|
347
|
+
@client.debug_dev = str = "".dup
|
348
348
|
@client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
|
349
349
|
@client.no_proxy = 'foo.com'
|
350
350
|
@client.proxy = proxyurl
|
@@ -370,7 +370,7 @@ Connection: close\r
|
|
370
370
|
\r
|
371
371
|
hello
|
372
372
|
EOS
|
373
|
-
@client.debug_dev = str = ''
|
373
|
+
@client.debug_dev = str = ''.dup
|
374
374
|
@client.set_auth("http://www.example.org/baz/", 'admin', 'admin')
|
375
375
|
assert_equal('hello', @client.get('http://www.example.org/baz/foo').content)
|
376
376
|
assert_match(/^Cookie: foo=bar/, str)
|
@@ -411,7 +411,7 @@ EOS
|
|
411
411
|
assert_equal('message body 1', @client.get_content('http://somewhere'))
|
412
412
|
assert_equal('message body 2', @client.get_content('http://somewhere'))
|
413
413
|
#
|
414
|
-
@client.debug_dev = str = ''
|
414
|
+
@client.debug_dev = str = ''.dup
|
415
415
|
@client.test_loopback_response << 'message body 3'
|
416
416
|
assert_equal('message body 3', @client.get_content('http://somewhere'))
|
417
417
|
assert_match(/message body 3/, str)
|
@@ -597,12 +597,10 @@ EOS
|
|
597
597
|
assert(called)
|
598
598
|
end
|
599
599
|
|
600
|
-
GZIP_CONTENT = "\x1f\x8b\x08\x00\x1a\x96\xe0\x4c\x00\x03\xcb\x48\xcd\xc9\xc9\x07\x00\x86\xa6\x10\x36\x05\x00\x00\x00"
|
601
|
-
DEFLATE_CONTENT = "\x78\x9c\xcb\x48\xcd\xc9\xc9\x07\x00\x06\x2c\x02\x15"
|
602
|
-
DEFLATE_NOHEADER_CONTENT = "x\x9C\xCBH\xCD\xC9\xC9\a\x00\x06,\x02\x15"
|
603
|
-
|
604
|
-
content.force_encoding('BINARY') if content.respond_to?(:force_encoding)
|
605
|
-
end
|
600
|
+
GZIP_CONTENT = "\x1f\x8b\x08\x00\x1a\x96\xe0\x4c\x00\x03\xcb\x48\xcd\xc9\xc9\x07\x00\x86\xa6\x10\x36\x05\x00\x00\x00".b
|
601
|
+
DEFLATE_CONTENT = "\x78\x9c\xcb\x48\xcd\xc9\xc9\x07\x00\x06\x2c\x02\x15".b
|
602
|
+
DEFLATE_NOHEADER_CONTENT = "x\x9C\xCBH\xCD\xC9\xC9\a\x00\x06,\x02\x15".b
|
603
|
+
|
606
604
|
def test_get_gzipped_content
|
607
605
|
@client.transparent_gzip_decompression = false
|
608
606
|
content = @client.get_content(serverurl + 'compressed?enc=gzip')
|
@@ -867,7 +865,7 @@ EOS
|
|
867
865
|
end
|
868
866
|
|
869
867
|
def test_post_empty
|
870
|
-
@client.debug_dev = str = ''
|
868
|
+
@client.debug_dev = str = ''.dup
|
871
869
|
# nil body means 'no content' that is allowed but WEBrick cannot handle it.
|
872
870
|
@client.post(serverurl + 'servlet', :body => nil)
|
873
871
|
# request does not have 'Content-Type'
|
@@ -1092,7 +1090,7 @@ EOS
|
|
1092
1090
|
def test_patch
|
1093
1091
|
assert_equal("patch", @client.patch(serverurl + 'servlet', '').content)
|
1094
1092
|
param = {'1'=>'2', '3'=>'4'}
|
1095
|
-
@client.debug_dev = str = ''
|
1093
|
+
@client.debug_dev = str = ''.dup
|
1096
1094
|
res = @client.patch(serverurl + 'servlet', param)
|
1097
1095
|
assert_equal(param, params(res.header["x-query"][0]))
|
1098
1096
|
assert_equal('Content-Type: application/x-www-form-urlencoded', str.split(/\r?\n/)[5])
|
@@ -1122,7 +1120,7 @@ EOS
|
|
1122
1120
|
def test_put
|
1123
1121
|
assert_equal("put", @client.put(serverurl + 'servlet', '').content)
|
1124
1122
|
param = {'1'=>'2', '3'=>'4'}
|
1125
|
-
@client.debug_dev = str = ''
|
1123
|
+
@client.debug_dev = str = ''.dup
|
1126
1124
|
res = @client.put(serverurl + 'servlet', param)
|
1127
1125
|
assert_equal(param, params(res.header["x-query"][0]))
|
1128
1126
|
assert_equal('Content-Type: application/x-www-form-urlencoded', str.split(/\r?\n/)[5])
|
@@ -1169,7 +1167,7 @@ EOS
|
|
1169
1167
|
# Not prohibited by spec, but normally it's ignored
|
1170
1168
|
def test_delete_with_body
|
1171
1169
|
param = {'1'=>'2', '3'=>'4'}
|
1172
|
-
@client.debug_dev = str = ''
|
1170
|
+
@client.debug_dev = str = ''.dup
|
1173
1171
|
assert_equal("delete", @client.delete(serverurl + 'servlet', param).content)
|
1174
1172
|
assert_equal({'1' => ['2'], '3' => ['4']}, HTTP::Message.parse(str.split(/\r?\n\r?\n/)[2]))
|
1175
1173
|
end
|
@@ -1309,14 +1307,14 @@ EOS
|
|
1309
1307
|
end
|
1310
1308
|
|
1311
1309
|
def test_extra_headers
|
1312
|
-
str = ""
|
1310
|
+
str = "".dup
|
1313
1311
|
@client.debug_dev = str
|
1314
1312
|
@client.head(serverurl, nil, {"ABC" => "DEF"})
|
1315
1313
|
lines = str.split(/(?:\r?\n)+/)
|
1316
1314
|
assert_equal("= Request", lines[0])
|
1317
1315
|
assert_match("ABC: DEF", lines[4])
|
1318
1316
|
#
|
1319
|
-
str = ""
|
1317
|
+
str = "".dup
|
1320
1318
|
@client.debug_dev = str
|
1321
1319
|
@client.get(serverurl, nil, [["ABC", "DEF"], ["ABC", "DEF"]])
|
1322
1320
|
lines = str.split(/(?:\r?\n)+/)
|
@@ -1326,23 +1324,24 @@ EOS
|
|
1326
1324
|
end
|
1327
1325
|
|
1328
1326
|
def test_http_custom_date_header
|
1329
|
-
@client.debug_dev = (str = "")
|
1327
|
+
@client.debug_dev = (str = "".dup)
|
1330
1328
|
_res = @client.get(serverurl + 'hello', :header => {'Date' => 'foo'})
|
1331
1329
|
lines = str.split(/(?:\r?\n)+/)
|
1332
1330
|
assert_equal('Date: foo', lines[4])
|
1333
1331
|
end
|
1334
1332
|
|
1335
1333
|
def test_timeout
|
1336
|
-
|
1337
|
-
assert_equal(
|
1338
|
-
assert_equal(
|
1334
|
+
client = HTTPClient.new
|
1335
|
+
assert_equal(60, client.connect_timeout)
|
1336
|
+
assert_equal(120, client.send_timeout)
|
1337
|
+
assert_equal(60, client.receive_timeout)
|
1339
1338
|
#
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
assert_equal(1,
|
1344
|
-
assert_equal(2,
|
1345
|
-
assert_equal(3,
|
1339
|
+
client.connect_timeout = 1
|
1340
|
+
client.send_timeout = 2
|
1341
|
+
client.receive_timeout = 3
|
1342
|
+
assert_equal(1, client.connect_timeout)
|
1343
|
+
assert_equal(2, client.send_timeout)
|
1344
|
+
assert_equal(3, client.receive_timeout)
|
1346
1345
|
end
|
1347
1346
|
|
1348
1347
|
def test_connect_timeout
|
@@ -1418,7 +1417,7 @@ EOS
|
|
1418
1417
|
def test_eof_error_length
|
1419
1418
|
io = StringIO.new('')
|
1420
1419
|
def io.gets(*arg)
|
1421
|
-
@buf ||= ["HTTP/1.0 200 OK\n", "content-length: 123\n", "\n"]
|
1420
|
+
@buf ||= ["HTTP/1.0 200 OK\n".dup, "content-length: 123\n".dup, "\n".dup]
|
1422
1421
|
@buf.shift
|
1423
1422
|
end
|
1424
1423
|
def io.readpartial(size, buf)
|
@@ -1446,7 +1445,7 @@ EOS
|
|
1446
1445
|
def test_eof_error_rest
|
1447
1446
|
io = StringIO.new('')
|
1448
1447
|
def io.gets(*arg)
|
1449
|
-
@buf ||= ["HTTP/1.0 200 OK\n", "\n"]
|
1448
|
+
@buf ||= ["HTTP/1.0 200 OK\n".dup, "\n".dup]
|
1450
1449
|
@buf.shift
|
1451
1450
|
end
|
1452
1451
|
def io.readpartial(size, buf)
|
@@ -1870,7 +1869,7 @@ EOS
|
|
1870
1869
|
|
1871
1870
|
if RUBY_VERSION >= "1.9.3"
|
1872
1871
|
def test_continue
|
1873
|
-
@client.debug_dev = str = ''
|
1872
|
+
@client.debug_dev = str = ''.dup
|
1874
1873
|
res = @client.get(serverurl + 'continue', :header => {:Expect => '100-continue'})
|
1875
1874
|
assert_equal(200, res.status)
|
1876
1875
|
assert_equal('done!', res.body)
|
data/test/test_jsonclient.rb
CHANGED
@@ -24,6 +24,12 @@ class TestJSONClient < Test::Unit::TestCase
|
|
24
24
|
assert_equal(1, JSON.parse(res.previous.content)['a'])
|
25
25
|
end
|
26
26
|
|
27
|
+
def test_post_with_array
|
28
|
+
res = @client.post(serverurl + 'json', [{'a' => 1, 'b' => {'c' => 2}}])
|
29
|
+
assert_equal(2, res.content[0]['b']['c'])
|
30
|
+
assert_equal('application/json; charset=utf-8', res.content_type)
|
31
|
+
end
|
32
|
+
|
27
33
|
def test_post_with_header
|
28
34
|
res = @client.post(serverurl + 'json', :header => {'X-foo' => 'bar'}, :body => {'a' => 1, 'b' => {'c' => 2}})
|
29
35
|
assert_equal(2, res.content['b']['c'])
|
@@ -54,6 +60,18 @@ class TestJSONClient < Test::Unit::TestCase
|
|
54
60
|
assert_equal('', res.content_type)
|
55
61
|
end
|
56
62
|
|
63
|
+
def test_hash_header_not_modified
|
64
|
+
header = {'X-foo' => 'bar'}
|
65
|
+
_res = @client.post(serverurl, :header => header, :body => {'a' => 1, 'b' => {'c' => 2}})
|
66
|
+
assert_equal({'X-foo' => 'bar'}, header)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_array_header_not_modified
|
70
|
+
header = [['X-foo', 'bar']]
|
71
|
+
_res = @client.post(serverurl, :header => header, :body => {'a' => 1, 'b' => {'c' => 2}})
|
72
|
+
assert_equal([['X-foo', 'bar']], header)
|
73
|
+
end
|
74
|
+
|
57
75
|
class JSONServlet < WEBrick::HTTPServlet::AbstractServlet
|
58
76
|
def get_instance(*arg)
|
59
77
|
self
|