htty 1.0.0 → 1.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.
- data/History.markdown +21 -0
- data/MIT-LICENSE.markdown +10 -0
- data/README.markdown +238 -0
- data/VERSION +1 -1
- data/bin/htty +1 -1
- data/{app → lib}/htty.rb +0 -2
- data/{app → lib}/htty/cli.rb +11 -4
- data/{app → lib}/htty/cli/command.rb +25 -3
- data/{app → lib}/htty/cli/commands.rb +0 -2
- data/{app → lib}/htty/cli/commands/address.rb +15 -9
- data/{app → lib}/htty/cli/commands/body_clear.rb +0 -2
- data/{app → lib}/htty/cli/commands/body_request.rb +1 -3
- data/{app → lib}/htty/cli/commands/body_response.rb +1 -3
- data/{app → lib}/htty/cli/commands/body_set.rb +9 -4
- data/{app → lib}/htty/cli/commands/body_unset.rb +1 -3
- data/{app → lib}/htty/cli/commands/cd.rb +0 -2
- data/{app → lib}/htty/cli/commands/cookie_add.rb +0 -2
- data/{app → lib}/htty/cli/commands/cookie_remove.rb +0 -2
- data/{app → lib}/htty/cli/commands/cookies.rb +9 -5
- data/{app → lib}/htty/cli/commands/cookies_add.rb +1 -3
- data/{app → lib}/htty/cli/commands/cookies_clear.rb +0 -2
- data/{app → lib}/htty/cli/commands/cookies_remove.rb +1 -3
- data/{app → lib}/htty/cli/commands/cookies_remove_all.rb +1 -3
- data/{app → lib}/htty/cli/commands/cookies_use.rb +11 -4
- data/{app → lib}/htty/cli/commands/delete.rb +0 -2
- data/{app → lib}/htty/cli/commands/exit.rb +0 -2
- data/{app → lib}/htty/cli/commands/follow.rb +6 -9
- data/{app → lib}/htty/cli/commands/form.rb +0 -2
- data/{app → lib}/htty/cli/commands/form_add.rb +0 -2
- data/{app → lib}/htty/cli/commands/form_clear.rb +0 -2
- data/{app → lib}/htty/cli/commands/form_remove.rb +0 -2
- data/{app → lib}/htty/cli/commands/form_remove_all.rb +0 -2
- data/{app → lib}/htty/cli/commands/fragment_clear.rb +0 -2
- data/{app → lib}/htty/cli/commands/fragment_set.rb +6 -4
- data/{app → lib}/htty/cli/commands/fragment_unset.rb +4 -4
- data/{app → lib}/htty/cli/commands/get.rb +0 -2
- data/{app → lib}/htty/cli/commands/header_set.rb +0 -2
- data/{app → lib}/htty/cli/commands/header_unset.rb +0 -2
- data/{app → lib}/htty/cli/commands/headers_clear.rb +0 -2
- data/{app → lib}/htty/cli/commands/headers_request.rb +13 -8
- data/{app → lib}/htty/cli/commands/headers_response.rb +6 -4
- data/{app → lib}/htty/cli/commands/headers_set.rb +1 -3
- data/{app → lib}/htty/cli/commands/headers_unset.rb +1 -4
- data/{app → lib}/htty/cli/commands/headers_unset_all.rb +1 -3
- data/{app → lib}/htty/cli/commands/help.rb +8 -4
- data/{app → lib}/htty/cli/commands/history.rb +5 -7
- data/{app → lib}/htty/cli/commands/history_verbose.rb +6 -5
- data/{app → lib}/htty/cli/commands/host_set.rb +2 -7
- data/{app → lib}/htty/cli/commands/http_delete.rb +0 -2
- data/{app → lib}/htty/cli/commands/http_get.rb +0 -2
- data/{app → lib}/htty/cli/commands/http_head.rb +0 -2
- data/{app → lib}/htty/cli/commands/http_options.rb +0 -2
- data/{app → lib}/htty/cli/commands/http_post.rb +0 -2
- data/{app → lib}/htty/cli/commands/http_put.rb +0 -2
- data/{app → lib}/htty/cli/commands/http_trace.rb +0 -2
- data/{app → lib}/htty/cli/commands/path_set.rb +6 -4
- data/{app → lib}/htty/cli/commands/port_set.rb +4 -4
- data/{app → lib}/htty/cli/commands/post.rb +0 -2
- data/{app → lib}/htty/cli/commands/put.rb +0 -2
- data/{app → lib}/htty/cli/commands/query_clear.rb +0 -2
- data/{app → lib}/htty/cli/commands/query_set.rb +10 -7
- data/{app → lib}/htty/cli/commands/query_unset.rb +12 -6
- data/{app → lib}/htty/cli/commands/query_unset_all.rb +4 -4
- data/{app → lib}/htty/cli/commands/quit.rb +0 -2
- data/{app → lib}/htty/cli/commands/reuse.rb +4 -3
- data/{app → lib}/htty/cli/commands/scheme_set.rb +4 -4
- data/{app → lib}/htty/cli/commands/status.rb +8 -5
- data/{app → lib}/htty/cli/commands/undo.rb +0 -2
- data/{app → lib}/htty/cli/commands/userinfo_clear.rb +0 -2
- data/{app → lib}/htty/cli/commands/userinfo_set.rb +30 -8
- data/{app → lib}/htty/cli/commands/userinfo_unset.rb +4 -4
- data/{app → lib}/htty/cli/display.rb +40 -19
- data/{app → lib}/htty/cli/http_method_command.rb +4 -8
- data/{app → lib}/htty/cli/url_escaping.rb +0 -2
- data/{app → lib}/htty/cookies_util.rb +0 -2
- data/{app → lib}/htty/no_location_header_error.rb +3 -2
- data/{app → lib}/htty/no_response_error.rb +0 -2
- data/{app → lib}/htty/no_set_cookie_header_error.rb +3 -2
- data/{app → lib}/htty/ordered_hash.rb +2 -3
- data/{app → lib}/htty/payload.rb +2 -3
- data/{app → lib}/htty/request.rb +25 -15
- data/{app → lib}/htty/requests_util.rb +2 -3
- data/{app → lib}/htty/response.rb +2 -3
- data/{app → lib}/htty/session.rb +0 -2
- data/spec/unit/htty/cli_spec.rb +9 -14
- data/spec/unit/htty/ordered_hash_spec.rb +13 -17
- data/spec/unit/htty/request_spec.rb +281 -127
- data/spec/unit/htty/session_spec.rb +4 -7
- metadata +152 -99
- data/MIT-LICENSE.rdoc +0 -9
- data/README.rdoc +0 -199
- data/app/htty/cli/cookie_clearing_command.rb +0 -26
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
# Defines HTTY::RequestsUtil.
|
|
2
|
-
|
|
3
1
|
require 'net/http'
|
|
2
|
+
require 'net/https'
|
|
4
3
|
require 'uri'
|
|
5
4
|
require File.expand_path("#{File.dirname __FILE__}/response")
|
|
6
5
|
|
|
@@ -74,7 +73,7 @@ private
|
|
|
74
73
|
|
|
75
74
|
def self.request(request)
|
|
76
75
|
http = Net::HTTP.new(request.uri.host, request.uri.port)
|
|
77
|
-
http.use_ssl = true if
|
|
76
|
+
http.use_ssl = true if request.uri.kind_of?(URI::HTTPS)
|
|
78
77
|
http.start do |host|
|
|
79
78
|
http_response = yield(host)
|
|
80
79
|
headers = []
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# Defines HTTY::Response.
|
|
2
|
-
|
|
3
1
|
require File.expand_path("#{File.dirname __FILE__}/cookies_util")
|
|
4
2
|
require File.expand_path("#{File.dirname __FILE__}/payload")
|
|
5
3
|
|
|
@@ -8,7 +6,8 @@ module HTTY; end
|
|
|
8
6
|
# Encapsulates an HTTP(S) response.
|
|
9
7
|
class HTTY::Response < HTTY::Payload
|
|
10
8
|
|
|
11
|
-
COOKIES_HEADER_NAME
|
|
9
|
+
COOKIES_HEADER_NAME = 'Set-Cookie'
|
|
10
|
+
LOCATION_HEADER_NAME = 'Location'
|
|
12
11
|
|
|
13
12
|
# Returns the HTTP status associated with the response.
|
|
14
13
|
attr_reader :status
|
data/{app → lib}/htty/session.rb
RENAMED
data/spec/unit/htty/cli_spec.rb
CHANGED
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
require 'spec'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../
|
|
3
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../
|
|
2
|
+
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/cli")
|
|
3
|
+
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/request")
|
|
4
4
|
|
|
5
5
|
describe HTTY::CLI do
|
|
6
6
|
describe 'with empty arguments' do
|
|
7
|
-
before :each do
|
|
8
|
-
@cli = HTTY::CLI.new([])
|
|
9
|
-
end
|
|
10
|
-
|
|
11
7
|
it 'should have a session with the URI http://0.0.0.0:80/' do
|
|
12
|
-
|
|
8
|
+
cli = HTTY::CLI.new([])
|
|
9
|
+
cli.session.requests.should == [HTTY::Request.new('http://0.0.0.0:80/')]
|
|
13
10
|
end
|
|
14
11
|
end
|
|
15
12
|
|
|
16
13
|
describe 'with an address argument' do
|
|
17
|
-
before :each do
|
|
18
|
-
@cli = HTTY::CLI.new(%w(http://njonsson@github.com/njonsson/htty))
|
|
19
|
-
end
|
|
20
|
-
|
|
21
14
|
it 'should have a session with a URI corresponding to the address' do
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
cli = HTTY::CLI.new(%w(https://njonsson@github.com/njonsson/htty))
|
|
16
|
+
cli.session.requests.should == [HTTY::Request.new('https://' +
|
|
17
|
+
'njonsson@github.com' +
|
|
18
|
+
':443' +
|
|
19
|
+
'/njonsson/htty')]
|
|
25
20
|
end
|
|
26
21
|
end
|
|
27
22
|
end
|
|
@@ -1,53 +1,49 @@
|
|
|
1
1
|
require 'spec'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../
|
|
2
|
+
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/ordered_hash")
|
|
3
3
|
|
|
4
4
|
describe HTTY::OrderedHash do
|
|
5
5
|
describe 'that is empty' do
|
|
6
|
-
|
|
7
|
-
@hash = HTTY::OrderedHash.new
|
|
8
|
-
end
|
|
6
|
+
let(:hash) { HTTY::OrderedHash.new }
|
|
9
7
|
|
|
10
8
|
it 'should be empty' do
|
|
11
|
-
|
|
9
|
+
hash.should be_empty
|
|
12
10
|
end
|
|
13
11
|
|
|
14
12
|
describe '-- when values are added out of order' do
|
|
15
13
|
before :each do
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
hash['foo'] = 'bar'
|
|
15
|
+
hash['baz'] = 'qux'
|
|
18
16
|
end
|
|
19
17
|
|
|
20
18
|
it '-- should have the expected values' do
|
|
21
|
-
|
|
19
|
+
hash.should == {'foo' => 'bar', 'baz' => 'qux'}
|
|
22
20
|
end
|
|
23
21
|
|
|
24
22
|
it '-- should return the expected array when sent #to_a' do
|
|
25
|
-
|
|
23
|
+
hash.to_a.should == [%w(foo bar), %w(baz qux)]
|
|
26
24
|
end
|
|
27
25
|
end
|
|
28
26
|
end
|
|
29
27
|
|
|
30
28
|
describe 'that has values out of order' do
|
|
31
|
-
|
|
32
|
-
@hash = HTTY::OrderedHash.new('foo' => 'bar', 'baz' => 'qux')
|
|
33
|
-
end
|
|
29
|
+
let(:hash) { HTTY::OrderedHash.new('foo' => 'bar', 'baz' => 'qux') }
|
|
34
30
|
|
|
35
31
|
it 'should have the expected values' do
|
|
36
|
-
|
|
32
|
+
hash.should == {'foo' => 'bar', 'baz' => 'qux'}
|
|
37
33
|
end
|
|
38
34
|
|
|
39
35
|
it 'should index the values as expected' do
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
hash['foo'].should == 'bar'
|
|
37
|
+
hash['baz'].should == 'qux'
|
|
42
38
|
end
|
|
43
39
|
|
|
44
40
|
describe '-- when sent #clear' do
|
|
45
41
|
before :each do
|
|
46
|
-
|
|
42
|
+
hash.clear
|
|
47
43
|
end
|
|
48
44
|
|
|
49
45
|
it '-- should be empty' do
|
|
50
|
-
|
|
46
|
+
hash.should be_empty
|
|
51
47
|
end
|
|
52
48
|
end
|
|
53
49
|
end
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
require 'spec'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../
|
|
3
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../
|
|
2
|
+
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/request")
|
|
3
|
+
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/response")
|
|
4
4
|
|
|
5
5
|
shared_examples_for 'an empty request' do
|
|
6
6
|
it 'should have only the default headers' do
|
|
7
|
-
@request.headers.should == [%w(User-Agent htty/1.
|
|
7
|
+
@request.headers.should == [%w(User-Agent htty/1.1.0)]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'should have no body' do
|
|
11
|
+
@request.body.should be_nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'should have no response' do
|
|
15
|
+
@request.response.should be_nil
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
shared_examples_for 'an empty, authenticated request' do
|
|
20
|
+
it 'should the expected Authorization header plus the default headers' do
|
|
21
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
22
|
+
['Authorization', 'Basic bmpvbnNzb24=']]
|
|
8
23
|
end
|
|
9
24
|
|
|
10
25
|
it 'should have no body' do
|
|
@@ -21,50 +36,50 @@ describe HTTY::Request do
|
|
|
21
36
|
describe 'an invalid IPv4 address having' do
|
|
22
37
|
describe 'consecutive dots' do
|
|
23
38
|
it 'should raise URI::InvalidURIError' do
|
|
24
|
-
|
|
39
|
+
expect {
|
|
25
40
|
HTTY::Request.new '1.2.3..4'
|
|
26
|
-
}.
|
|
41
|
+
}.to raise_error(URI::InvalidURIError)
|
|
27
42
|
end
|
|
28
43
|
end
|
|
29
44
|
|
|
30
45
|
describe 'no dots' do
|
|
31
46
|
it 'should raise URI::InvalidURIError' do
|
|
32
|
-
|
|
47
|
+
expect {
|
|
33
48
|
HTTY::Request.new '1234'
|
|
34
|
-
}.
|
|
49
|
+
}.to raise_error(URI::InvalidURIError)
|
|
35
50
|
end
|
|
36
51
|
end
|
|
37
52
|
|
|
38
53
|
describe 'too few dotted decimals' do
|
|
39
54
|
it 'should raise URI::InvalidURIError' do
|
|
40
|
-
|
|
55
|
+
expect {
|
|
41
56
|
HTTY::Request.new '1.2.3'
|
|
42
|
-
}.
|
|
57
|
+
}.to raise_error(URI::InvalidURIError)
|
|
43
58
|
end
|
|
44
59
|
end
|
|
45
60
|
|
|
46
61
|
describe 'too many dotted decimals' do
|
|
47
62
|
it 'should raise URI::InvalidURIError' do
|
|
48
|
-
|
|
63
|
+
expect {
|
|
49
64
|
HTTY::Request.new '1.2.3.4.5'
|
|
50
|
-
}.
|
|
65
|
+
}.to raise_error(URI::InvalidURIError)
|
|
51
66
|
end
|
|
52
67
|
end
|
|
53
68
|
|
|
54
69
|
describe 'a dotted decimal out of range' do
|
|
55
70
|
it 'should raise URI::InvalidURIError' do
|
|
56
|
-
|
|
71
|
+
expect {
|
|
57
72
|
HTTY::Request.new '1.2.3.1000'
|
|
58
|
-
}.
|
|
73
|
+
}.to raise_error(URI::InvalidURIError)
|
|
59
74
|
end
|
|
60
75
|
end
|
|
61
76
|
end
|
|
62
77
|
|
|
63
78
|
describe 'an invalid hostname having a leading hyphen' do
|
|
64
79
|
it 'should raise URI::InvalidURIError' do
|
|
65
|
-
|
|
80
|
+
expect {
|
|
66
81
|
HTTY::Request.new '-google.com'
|
|
67
|
-
}.
|
|
82
|
+
}.to raise_error(URI::InvalidURIError)
|
|
68
83
|
end
|
|
69
84
|
end
|
|
70
85
|
end
|
|
@@ -156,6 +171,18 @@ describe HTTY::Request do
|
|
|
156
171
|
it_should_behave_like 'an empty request'
|
|
157
172
|
end
|
|
158
173
|
|
|
174
|
+
describe 'the HTTPS scheme, userinfo, and a hostname' do
|
|
175
|
+
before :each do
|
|
176
|
+
@request = HTTY::Request.new('https://njonsson@github.com')
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it 'should have an HTTPS URI for host with that userinfo' do
|
|
180
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:443/')
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
184
|
+
end
|
|
185
|
+
|
|
159
186
|
describe 'a hostname and the root path' do
|
|
160
187
|
before :each do
|
|
161
188
|
@request = HTTY::Request.new('github.com/')
|
|
@@ -168,6 +195,18 @@ describe HTTY::Request do
|
|
|
168
195
|
it_should_behave_like 'an empty request'
|
|
169
196
|
end
|
|
170
197
|
|
|
198
|
+
describe 'a hostname, port 443, and the root path' do
|
|
199
|
+
before :each do
|
|
200
|
+
@request = HTTY::Request.new('github.com:443/')
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
it 'should have an HTTPS URI for the root of that host' do
|
|
204
|
+
@request.uri.should == URI.parse('https://github.com:443/')
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
it_should_behave_like 'an empty request'
|
|
208
|
+
end
|
|
209
|
+
|
|
171
210
|
describe 'the HTTP scheme, a hostname, port 443, and the root path' do
|
|
172
211
|
before :each do
|
|
173
212
|
@request = HTTY::Request.new('http://github.com:443/')
|
|
@@ -249,10 +288,10 @@ describe HTTY::Request do
|
|
|
249
288
|
it_should_behave_like 'an empty request'
|
|
250
289
|
end
|
|
251
290
|
|
|
252
|
-
describe 'the
|
|
253
|
-
'string, and a fragment' do
|
|
291
|
+
describe 'the HTTPS scheme, userinfo, a hostname, a port, a path, a ' +
|
|
292
|
+
'query string, and a fragment' do
|
|
254
293
|
before :each do
|
|
255
|
-
@request = HTTY::Request.new('
|
|
294
|
+
@request = HTTY::Request.new('https://njonsson@github.com:123' +
|
|
256
295
|
'/search/deep?q=http&lang=en#content')
|
|
257
296
|
end
|
|
258
297
|
|
|
@@ -262,15 +301,15 @@ describe HTTY::Request do
|
|
|
262
301
|
end
|
|
263
302
|
|
|
264
303
|
describe '-- and is untouched --' do
|
|
265
|
-
it 'should have an
|
|
304
|
+
it 'should have an HTTPS URI for that query string and that ' +
|
|
266
305
|
'fragment of that path on that host on that port with that ' +
|
|
267
306
|
'userinfo' do
|
|
268
|
-
@request.uri.should == URI.parse('
|
|
269
|
-
'/search/deep?q=http&lang=en'
|
|
307
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
308
|
+
'/search/deep?q=http&lang=en' +
|
|
270
309
|
'#content')
|
|
271
310
|
end
|
|
272
311
|
|
|
273
|
-
it_should_behave_like 'an empty request'
|
|
312
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
274
313
|
end
|
|
275
314
|
|
|
276
315
|
describe '-- when sent #address with an address consisting of' do
|
|
@@ -290,7 +329,19 @@ describe HTTY::Request do
|
|
|
290
329
|
'#flames')
|
|
291
330
|
end
|
|
292
331
|
|
|
293
|
-
|
|
332
|
+
it 'should the expected Authorization header plus the default ' +
|
|
333
|
+
'headers' do
|
|
334
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
335
|
+
['Authorization', 'Basic c3RldmU=']]
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
it 'should have no body' do
|
|
339
|
+
@request.body.should be_nil
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
it 'should have no response' do
|
|
343
|
+
@request.response.should be_nil
|
|
344
|
+
end
|
|
294
345
|
end
|
|
295
346
|
|
|
296
347
|
describe 'a different hostname --' do
|
|
@@ -309,17 +360,32 @@ describe HTTY::Request do
|
|
|
309
360
|
describe '-- when sent #scheme_set with' do
|
|
310
361
|
describe 'the same scheme --' do
|
|
311
362
|
before :each do
|
|
312
|
-
@request.scheme_set '
|
|
363
|
+
@request.scheme_set 'https'
|
|
313
364
|
end
|
|
314
365
|
|
|
315
366
|
it 'should have an unchanged URI' do
|
|
367
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
368
|
+
':123' +
|
|
369
|
+
'/search/deep?q=http&lang=en' +
|
|
370
|
+
'#content')
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
describe 'a different scheme --' do
|
|
377
|
+
before :each do
|
|
378
|
+
@request.scheme_set 'http'
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
it 'should have the same URI, with the changed scheme' do
|
|
316
382
|
@request.uri.should == URI.parse('http://njonsson@github.com' +
|
|
317
383
|
':123' +
|
|
318
384
|
'/search/deep?q=http&lang=en' +
|
|
319
385
|
'#content')
|
|
320
386
|
end
|
|
321
387
|
|
|
322
|
-
it_should_behave_like 'an empty request'
|
|
388
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
323
389
|
end
|
|
324
390
|
end
|
|
325
391
|
|
|
@@ -330,27 +396,67 @@ describe HTTY::Request do
|
|
|
330
396
|
end
|
|
331
397
|
|
|
332
398
|
it 'should have an unchanged URI' do
|
|
333
|
-
@request.uri.should == URI.parse('
|
|
399
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
334
400
|
':123' +
|
|
335
401
|
'/search/deep?q=http&lang=en' +
|
|
336
402
|
'#content')
|
|
337
403
|
end
|
|
338
404
|
|
|
339
|
-
it_should_behave_like 'an empty request'
|
|
405
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
340
406
|
end
|
|
341
407
|
|
|
342
|
-
describe 'different userinfo
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
408
|
+
describe 'different userinfo' do
|
|
409
|
+
describe "that does not contain '@' --" do
|
|
410
|
+
before :each do
|
|
411
|
+
@request.userinfo_set 'nils'
|
|
412
|
+
end
|
|
346
413
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
414
|
+
it 'should have the same URI, with the changed userinfo' do
|
|
415
|
+
@request.uri.should == URI.parse('https://nils@github.com:123' +
|
|
416
|
+
'/search/deep?q=http&lang=en' +
|
|
417
|
+
'#content')
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
it 'should the expected Authorization header plus the default ' +
|
|
421
|
+
'headers' do
|
|
422
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
423
|
+
['Authorization', 'Basic bmlscw==']]
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
it 'should have no body' do
|
|
427
|
+
@request.body.should be_nil
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
it 'should have no response' do
|
|
431
|
+
@request.response.should be_nil
|
|
432
|
+
end
|
|
351
433
|
end
|
|
352
434
|
|
|
353
|
-
|
|
435
|
+
describe "that contains an escaped '@' --" do
|
|
436
|
+
before :each do
|
|
437
|
+
@request.userinfo_set 'n%45'
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
it 'should have the same URI, with the changed userinfo' do
|
|
441
|
+
@request.uri.should == URI.parse('https://n%45@github.com:123' +
|
|
442
|
+
'/search/deep?q=http&lang=en' +
|
|
443
|
+
'#content')
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
it 'should the expected Authorization header plus the default ' +
|
|
447
|
+
'headers' do
|
|
448
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
449
|
+
['Authorization', 'Basic bkU=']]
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
it 'should have no body' do
|
|
453
|
+
@request.body.should be_nil
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
it 'should have no response' do
|
|
457
|
+
@request.response.should be_nil
|
|
458
|
+
end
|
|
459
|
+
end
|
|
354
460
|
end
|
|
355
461
|
end
|
|
356
462
|
|
|
@@ -360,7 +466,7 @@ describe HTTY::Request do
|
|
|
360
466
|
end
|
|
361
467
|
|
|
362
468
|
it 'should have the same URI, without userinfo' do
|
|
363
|
-
@request.uri.should == URI.parse('
|
|
469
|
+
@request.uri.should == URI.parse('https://github.com:123' +
|
|
364
470
|
'/search/deep?q=http&lang=en' +
|
|
365
471
|
'#content')
|
|
366
472
|
end
|
|
@@ -375,13 +481,13 @@ describe HTTY::Request do
|
|
|
375
481
|
end
|
|
376
482
|
|
|
377
483
|
it 'should have an unchanged URI' do
|
|
378
|
-
@request.uri.should == URI.parse('
|
|
484
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
379
485
|
':123' +
|
|
380
486
|
'/search/deep?q=http&lang=en' +
|
|
381
487
|
'#content')
|
|
382
488
|
end
|
|
383
489
|
|
|
384
|
-
it_should_behave_like 'an empty request'
|
|
490
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
385
491
|
end
|
|
386
492
|
|
|
387
493
|
describe 'a different host --' do
|
|
@@ -390,13 +496,13 @@ describe HTTY::Request do
|
|
|
390
496
|
end
|
|
391
497
|
|
|
392
498
|
it 'should have the same URI, with the changed scheme' do
|
|
393
|
-
@request.uri.should == URI.parse('
|
|
499
|
+
@request.uri.should == URI.parse('https://' +
|
|
394
500
|
'njonsson@gist.github.com:123' +
|
|
395
501
|
'/search/deep?q=http&lang=en' +
|
|
396
502
|
'#content')
|
|
397
503
|
end
|
|
398
504
|
|
|
399
|
-
it_should_behave_like 'an empty request'
|
|
505
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
400
506
|
end
|
|
401
507
|
end
|
|
402
508
|
|
|
@@ -407,13 +513,13 @@ describe HTTY::Request do
|
|
|
407
513
|
end
|
|
408
514
|
|
|
409
515
|
it 'should have an unchanged URI' do
|
|
410
|
-
@request.uri.should == URI.parse('
|
|
516
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
411
517
|
':123' +
|
|
412
518
|
'/search/deep?q=http&lang=en' +
|
|
413
519
|
'#content')
|
|
414
520
|
end
|
|
415
521
|
|
|
416
|
-
it_should_behave_like 'an empty request'
|
|
522
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
417
523
|
end
|
|
418
524
|
|
|
419
525
|
describe 'a different port --' do
|
|
@@ -422,13 +528,13 @@ describe HTTY::Request do
|
|
|
422
528
|
end
|
|
423
529
|
|
|
424
530
|
it 'should have the same URI, with the changed scheme' do
|
|
425
|
-
@request.uri.should == URI.parse('
|
|
531
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
426
532
|
':8888' +
|
|
427
533
|
'/search/deep?q=http&lang=en' +
|
|
428
534
|
'#content')
|
|
429
535
|
end
|
|
430
536
|
|
|
431
|
-
it_should_behave_like 'an empty request'
|
|
537
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
432
538
|
end
|
|
433
539
|
end
|
|
434
540
|
|
|
@@ -439,13 +545,13 @@ describe HTTY::Request do
|
|
|
439
545
|
end
|
|
440
546
|
|
|
441
547
|
it 'should have the same URI, descending to the expected path' do
|
|
442
|
-
@request.uri.should == URI.parse('
|
|
548
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
443
549
|
':123' +
|
|
444
550
|
'/search/deep/foo' +
|
|
445
551
|
'?q=http&lang=en#content')
|
|
446
552
|
end
|
|
447
553
|
|
|
448
|
-
it_should_behave_like 'an empty request'
|
|
554
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
449
555
|
end
|
|
450
556
|
|
|
451
557
|
describe 'a parent reference --' do
|
|
@@ -454,12 +560,12 @@ describe HTTY::Request do
|
|
|
454
560
|
end
|
|
455
561
|
|
|
456
562
|
it 'should have the same URI, ascending to the expected path' do
|
|
457
|
-
@request.uri.should == URI.parse('
|
|
563
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
458
564
|
':123' +
|
|
459
565
|
'/search?q=http&lang=en#content')
|
|
460
566
|
end
|
|
461
567
|
|
|
462
|
-
it_should_behave_like 'an empty request'
|
|
568
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
463
569
|
end
|
|
464
570
|
|
|
465
571
|
describe 'an absolute reference --' do
|
|
@@ -468,13 +574,13 @@ describe HTTY::Request do
|
|
|
468
574
|
end
|
|
469
575
|
|
|
470
576
|
it 'should have the same URI, changing to the expected path' do
|
|
471
|
-
@request.uri.should == URI.parse('
|
|
577
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
472
578
|
':123' +
|
|
473
579
|
'/foo/bar?q=http&lang=en' +
|
|
474
580
|
'#content')
|
|
475
581
|
end
|
|
476
582
|
|
|
477
|
-
it_should_behave_like 'an empty request'
|
|
583
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
478
584
|
end
|
|
479
585
|
end
|
|
480
586
|
|
|
@@ -485,14 +591,14 @@ describe HTTY::Request do
|
|
|
485
591
|
end
|
|
486
592
|
|
|
487
593
|
it 'should have a URI including the new query parameter' do
|
|
488
|
-
@request.uri.should == URI.parse('
|
|
594
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
489
595
|
':123' +
|
|
490
596
|
'/search/deep' +
|
|
491
597
|
'?q=http&lang=en&foo=bar' +
|
|
492
598
|
'#content')
|
|
493
599
|
end
|
|
494
600
|
|
|
495
|
-
it_should_behave_like 'an empty request'
|
|
601
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
496
602
|
end
|
|
497
603
|
|
|
498
604
|
describe 'with a new value for the first query parameter --' do
|
|
@@ -501,13 +607,13 @@ describe HTTY::Request do
|
|
|
501
607
|
end
|
|
502
608
|
|
|
503
609
|
it 'should have a URI with the new value of the query parameter' do
|
|
504
|
-
@request.uri.should == URI.parse('
|
|
610
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
505
611
|
':123' +
|
|
506
612
|
'/search/deep?q=ruby&lang=en' +
|
|
507
613
|
'#content')
|
|
508
614
|
end
|
|
509
615
|
|
|
510
|
-
it_should_behave_like 'an empty request'
|
|
616
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
511
617
|
end
|
|
512
618
|
|
|
513
619
|
describe 'with a new value for the second query parameter --' do
|
|
@@ -517,13 +623,13 @@ describe HTTY::Request do
|
|
|
517
623
|
|
|
518
624
|
it 'should have a URI with the new value of the second query ' +
|
|
519
625
|
'parameter' do
|
|
520
|
-
@request.uri.should == URI.parse('
|
|
626
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
521
627
|
':123' +
|
|
522
628
|
'/search/deep?q=http&lang=fr' +
|
|
523
629
|
'#content')
|
|
524
630
|
end
|
|
525
631
|
|
|
526
|
-
it_should_behave_like 'an empty request'
|
|
632
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
527
633
|
end
|
|
528
634
|
end
|
|
529
635
|
|
|
@@ -534,13 +640,13 @@ describe HTTY::Request do
|
|
|
534
640
|
end
|
|
535
641
|
|
|
536
642
|
it 'should have an unchanged URI' do
|
|
537
|
-
@request.uri.should == URI.parse('
|
|
643
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
538
644
|
':123' +
|
|
539
645
|
'/search/deep?q=http&lang=en' +
|
|
540
646
|
'#content')
|
|
541
647
|
end
|
|
542
648
|
|
|
543
|
-
it_should_behave_like 'an empty request'
|
|
649
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
544
650
|
end
|
|
545
651
|
|
|
546
652
|
describe 'with the first query parameter --' do
|
|
@@ -549,12 +655,12 @@ describe HTTY::Request do
|
|
|
549
655
|
end
|
|
550
656
|
|
|
551
657
|
it 'should have a URI missing the first query parameter' do
|
|
552
|
-
@request.uri.should == URI.parse('
|
|
658
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
553
659
|
':123' +
|
|
554
660
|
'/search/deep?lang=en#content')
|
|
555
661
|
end
|
|
556
662
|
|
|
557
|
-
it_should_behave_like 'an empty request'
|
|
663
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
558
664
|
end
|
|
559
665
|
|
|
560
666
|
describe 'with the second query parameter --' do
|
|
@@ -563,12 +669,12 @@ describe HTTY::Request do
|
|
|
563
669
|
end
|
|
564
670
|
|
|
565
671
|
it 'should have a URI missing the second query parameter' do
|
|
566
|
-
@request.uri.should == URI.parse('
|
|
672
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
567
673
|
':123' +
|
|
568
674
|
'/search/deep?q=http#content')
|
|
569
675
|
end
|
|
570
676
|
|
|
571
|
-
it_should_behave_like 'an empty request'
|
|
677
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
572
678
|
end
|
|
573
679
|
end
|
|
574
680
|
|
|
@@ -578,11 +684,11 @@ describe HTTY::Request do
|
|
|
578
684
|
end
|
|
579
685
|
|
|
580
686
|
it 'should have a URI having no query string' do
|
|
581
|
-
@request.uri.should == URI.parse('
|
|
687
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
582
688
|
'/search/deep#content')
|
|
583
689
|
end
|
|
584
690
|
|
|
585
|
-
it_should_behave_like 'an empty request'
|
|
691
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
586
692
|
end
|
|
587
693
|
|
|
588
694
|
describe '-- when sent #fragment_set with' do
|
|
@@ -592,13 +698,13 @@ describe HTTY::Request do
|
|
|
592
698
|
end
|
|
593
699
|
|
|
594
700
|
it 'should have an unchanged URI' do
|
|
595
|
-
@request.uri.should == URI.parse('
|
|
701
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
596
702
|
':123' +
|
|
597
703
|
'/search/deep?q=http&lang=en' +
|
|
598
704
|
'#content')
|
|
599
705
|
end
|
|
600
706
|
|
|
601
|
-
it_should_behave_like 'an empty request'
|
|
707
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
602
708
|
end
|
|
603
709
|
|
|
604
710
|
describe 'different fragment --' do
|
|
@@ -607,13 +713,13 @@ describe HTTY::Request do
|
|
|
607
713
|
end
|
|
608
714
|
|
|
609
715
|
it 'should have the same URI, with the changed fragment' do
|
|
610
|
-
@request.uri.should == URI.parse('
|
|
716
|
+
@request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
611
717
|
':123' +
|
|
612
718
|
'/search/deep?q=http&lang=en' +
|
|
613
719
|
'#details')
|
|
614
720
|
end
|
|
615
721
|
|
|
616
|
-
it_should_behave_like 'an empty request'
|
|
722
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
617
723
|
end
|
|
618
724
|
end
|
|
619
725
|
|
|
@@ -623,11 +729,11 @@ describe HTTY::Request do
|
|
|
623
729
|
end
|
|
624
730
|
|
|
625
731
|
it 'should have the same URI, without fragment' do
|
|
626
|
-
@request.uri.should == URI.parse('
|
|
732
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
627
733
|
'/search/deep?q=http&lang=en')
|
|
628
734
|
end
|
|
629
735
|
|
|
630
|
-
it_should_behave_like 'an empty request'
|
|
736
|
+
it_should_behave_like 'an empty, authenticated request'
|
|
631
737
|
end
|
|
632
738
|
|
|
633
739
|
describe '-- when sent #header_set with a new header' do
|
|
@@ -636,15 +742,17 @@ describe HTTY::Request do
|
|
|
636
742
|
end
|
|
637
743
|
|
|
638
744
|
it 'should have an unchanged URI' do
|
|
639
|
-
@request.uri.should == URI.parse('
|
|
640
|
-
'/search/deep?q=http&lang=en'
|
|
745
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
746
|
+
'/search/deep?q=http&lang=en' +
|
|
641
747
|
'#content')
|
|
642
748
|
end
|
|
643
749
|
|
|
644
750
|
describe '--' do
|
|
645
751
|
it 'should have the header, plus the default headers' do
|
|
646
|
-
@request.headers.should == [
|
|
647
|
-
|
|
752
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
753
|
+
['Authorization', 'Basic ' +
|
|
754
|
+
'bmpvbnNzb24='],
|
|
755
|
+
['foo', 'bar']]
|
|
648
756
|
end
|
|
649
757
|
end
|
|
650
758
|
|
|
@@ -655,7 +763,9 @@ describe HTTY::Request do
|
|
|
655
763
|
end
|
|
656
764
|
|
|
657
765
|
it 'should have only the default headers' do
|
|
658
|
-
@request.headers.should == [
|
|
766
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
767
|
+
['Authorization', 'Basic ' +
|
|
768
|
+
'bmpvbnNzb24=']]
|
|
659
769
|
end
|
|
660
770
|
end
|
|
661
771
|
|
|
@@ -665,8 +775,10 @@ describe HTTY::Request do
|
|
|
665
775
|
end
|
|
666
776
|
|
|
667
777
|
it 'should have the header, plus the default headers' do
|
|
668
|
-
@request.headers.should == [
|
|
669
|
-
|
|
778
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
779
|
+
['Authorization', 'Basic ' +
|
|
780
|
+
'bmpvbnNzb24='],
|
|
781
|
+
['foo', 'bar']]
|
|
670
782
|
end
|
|
671
783
|
end
|
|
672
784
|
end
|
|
@@ -688,8 +800,8 @@ describe HTTY::Request do
|
|
|
688
800
|
end
|
|
689
801
|
|
|
690
802
|
it 'should have an unchanged URI' do
|
|
691
|
-
@request.uri.should == URI.parse('
|
|
692
|
-
'/search/deep?q=http&lang=en'
|
|
803
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
804
|
+
'/search/deep?q=http&lang=en' +
|
|
693
805
|
'#content')
|
|
694
806
|
end
|
|
695
807
|
|
|
@@ -699,8 +811,10 @@ describe HTTY::Request do
|
|
|
699
811
|
end
|
|
700
812
|
|
|
701
813
|
it 'should have the cookie header, plus the default headers' do
|
|
702
|
-
@request.headers.should == [
|
|
703
|
-
|
|
814
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
815
|
+
['Authorization', 'Basic ' +
|
|
816
|
+
'bmpvbnNzb24='],
|
|
817
|
+
['Cookie', 'foo=bar']]
|
|
704
818
|
end
|
|
705
819
|
end
|
|
706
820
|
|
|
@@ -716,8 +830,11 @@ describe HTTY::Request do
|
|
|
716
830
|
|
|
717
831
|
it 'should have the new cookie header, plus the default ' +
|
|
718
832
|
'headers' do
|
|
719
|
-
@request.headers.should == [['User-Agent',
|
|
720
|
-
['
|
|
833
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
834
|
+
['Authorization', 'Basic ' +
|
|
835
|
+
'bmpvbnNzb24='],
|
|
836
|
+
['Cookie', 'foo=bar; ' +
|
|
837
|
+
'foo=qux']]
|
|
721
838
|
end
|
|
722
839
|
end
|
|
723
840
|
|
|
@@ -732,8 +849,11 @@ describe HTTY::Request do
|
|
|
732
849
|
|
|
733
850
|
it 'should have the new cookie header, plus the default ' +
|
|
734
851
|
'headers' do
|
|
735
|
-
@request.headers.should == [['User-Agent',
|
|
736
|
-
['
|
|
852
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
853
|
+
['Authorization', 'Basic ' +
|
|
854
|
+
'bmpvbnNzb24='],
|
|
855
|
+
['Cookie', 'foo=bar; ' +
|
|
856
|
+
'baz=qux']]
|
|
737
857
|
end
|
|
738
858
|
end
|
|
739
859
|
|
|
@@ -748,8 +868,10 @@ describe HTTY::Request do
|
|
|
748
868
|
|
|
749
869
|
it 'should have the new cookie header, plus the default ' +
|
|
750
870
|
'headers' do
|
|
751
|
-
@request.headers.should == [['User-Agent',
|
|
752
|
-
['
|
|
871
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
872
|
+
['Authorization', 'Basic ' +
|
|
873
|
+
'bmpvbnNzb24='],
|
|
874
|
+
['Cookie', 'foo=bar; baz']]
|
|
753
875
|
end
|
|
754
876
|
end
|
|
755
877
|
end
|
|
@@ -765,7 +887,9 @@ describe HTTY::Request do
|
|
|
765
887
|
end
|
|
766
888
|
|
|
767
889
|
it 'should have only the default headers' do
|
|
768
|
-
@request.headers.should == [
|
|
890
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
891
|
+
['Authorization', 'Basic ' +
|
|
892
|
+
'bmpvbnNzb24=']]
|
|
769
893
|
end
|
|
770
894
|
end
|
|
771
895
|
|
|
@@ -779,8 +903,10 @@ describe HTTY::Request do
|
|
|
779
903
|
end
|
|
780
904
|
|
|
781
905
|
it 'should have the cookie header, plus the default headers' do
|
|
782
|
-
@request.headers.should == [
|
|
783
|
-
|
|
906
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
907
|
+
['Authorization', 'Basic ' +
|
|
908
|
+
'bmpvbnNzb24='],
|
|
909
|
+
['Cookie', 'foo=bar']]
|
|
784
910
|
end
|
|
785
911
|
end
|
|
786
912
|
end
|
|
@@ -795,7 +921,9 @@ describe HTTY::Request do
|
|
|
795
921
|
end
|
|
796
922
|
|
|
797
923
|
it 'should have only the default headers' do
|
|
798
|
-
@request.headers.should == [
|
|
924
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
925
|
+
['Authorization', 'Basic ' +
|
|
926
|
+
'bmpvbnNzb24=']]
|
|
799
927
|
end
|
|
800
928
|
end
|
|
801
929
|
|
|
@@ -810,7 +938,7 @@ describe HTTY::Request do
|
|
|
810
938
|
end
|
|
811
939
|
|
|
812
940
|
it 'should have the cookie header, plus the default headers' do
|
|
813
|
-
@request.headers.should == [%w(User-Agent htty/1.
|
|
941
|
+
@request.headers.should == [%w(User-Agent htty/1.1.0),
|
|
814
942
|
%w(Cookie foo=bar)]
|
|
815
943
|
end
|
|
816
944
|
end
|
|
@@ -826,7 +954,7 @@ describe HTTY::Request do
|
|
|
826
954
|
end
|
|
827
955
|
|
|
828
956
|
it 'should have only the default headers' do
|
|
829
|
-
@request.headers.should == [%w(User-Agent htty/1.
|
|
957
|
+
@request.headers.should == [%w(User-Agent htty/1.1.0)]
|
|
830
958
|
end
|
|
831
959
|
end
|
|
832
960
|
end
|
|
@@ -843,8 +971,10 @@ describe HTTY::Request do
|
|
|
843
971
|
end
|
|
844
972
|
|
|
845
973
|
it 'should have the cookie header, plus the default headers' do
|
|
846
|
-
@request.headers.should == [
|
|
847
|
-
|
|
974
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
975
|
+
['Authorization', 'Basic ' +
|
|
976
|
+
'bmpvbnNzb24='],
|
|
977
|
+
['Cookie', 'foo=bar=baz=qux']]
|
|
848
978
|
end
|
|
849
979
|
end
|
|
850
980
|
end
|
|
@@ -855,8 +985,8 @@ describe HTTY::Request do
|
|
|
855
985
|
end
|
|
856
986
|
|
|
857
987
|
it 'should have an unchanged URI' do
|
|
858
|
-
@request.uri.should == URI.parse('
|
|
859
|
-
'/search/deep?q=http&lang=en'
|
|
988
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
989
|
+
'/search/deep?q=http&lang=en' +
|
|
860
990
|
'#content')
|
|
861
991
|
end
|
|
862
992
|
|
|
@@ -866,14 +996,20 @@ describe HTTY::Request do
|
|
|
866
996
|
end
|
|
867
997
|
|
|
868
998
|
it 'should have only the default headers' do
|
|
869
|
-
@request.headers.should == [
|
|
999
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
1000
|
+
['Authorization', 'Basic ' +
|
|
1001
|
+
'bmpvbnNzb24=']]
|
|
870
1002
|
end
|
|
871
1003
|
|
|
872
1004
|
it "should have the expected 'Content-Length' header, plus the " +
|
|
873
1005
|
"'User-Agent' header if we do not exclude the " +
|
|
874
1006
|
"'Content-Length' header" do
|
|
875
|
-
@request.headers(true).should == [
|
|
876
|
-
|
|
1007
|
+
@request.headers(true).should == [['User-Agent', 'htty/' +
|
|
1008
|
+
'1.1.0'],
|
|
1009
|
+
['Authorization', 'Basic ' +
|
|
1010
|
+
'bmpvbnNz' +
|
|
1011
|
+
'b24='],
|
|
1012
|
+
['Content-Length', '3']]
|
|
877
1013
|
end
|
|
878
1014
|
end
|
|
879
1015
|
|
|
@@ -887,7 +1023,9 @@ describe HTTY::Request do
|
|
|
887
1023
|
end
|
|
888
1024
|
|
|
889
1025
|
it 'should have only the default headers' do
|
|
890
|
-
@request.headers.should == [
|
|
1026
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
1027
|
+
['Authorization', 'Basic ' +
|
|
1028
|
+
'bmpvbnNzb24=']]
|
|
891
1029
|
end
|
|
892
1030
|
end
|
|
893
1031
|
end
|
|
@@ -900,13 +1038,15 @@ describe HTTY::Request do
|
|
|
900
1038
|
end
|
|
901
1039
|
|
|
902
1040
|
it 'should not affect the URI' do
|
|
903
|
-
@request.uri.should == URI.parse('
|
|
904
|
-
'/search/deep?q=http&lang=en'
|
|
1041
|
+
@request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
1042
|
+
'/search/deep?q=http&lang=en' +
|
|
905
1043
|
'#content')
|
|
906
1044
|
end
|
|
907
1045
|
|
|
908
1046
|
it 'should not affect the headers' do
|
|
909
|
-
@request.headers.should == [
|
|
1047
|
+
@request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
1048
|
+
['Authorization', 'Basic ' +
|
|
1049
|
+
'bmpvbnNzb24=']]
|
|
910
1050
|
end
|
|
911
1051
|
|
|
912
1052
|
it 'should not affect the body' do
|
|
@@ -956,10 +1096,10 @@ describe HTTY::Request do
|
|
|
956
1096
|
|
|
957
1097
|
it 'should return a request with the same URI having the changed ' +
|
|
958
1098
|
'userinfo' do
|
|
959
|
-
@new_request.uri.should == URI.parse('
|
|
960
|
-
':123'
|
|
961
|
-
'/search/deep'
|
|
962
|
-
'?q=http&lang=en'
|
|
1099
|
+
@new_request.uri.should == URI.parse('https://nils@github.com' +
|
|
1100
|
+
':123' +
|
|
1101
|
+
'/search/deep' +
|
|
1102
|
+
'?q=http&lang=en' +
|
|
963
1103
|
'#content')
|
|
964
1104
|
end
|
|
965
1105
|
|
|
@@ -974,7 +1114,7 @@ describe HTTY::Request do
|
|
|
974
1114
|
end
|
|
975
1115
|
|
|
976
1116
|
it 'should return a request with the same URI not having userinfo' do
|
|
977
|
-
@new_request.uri.should == URI.parse('
|
|
1117
|
+
@new_request.uri.should == URI.parse('https://github.com:123' +
|
|
978
1118
|
'/search/deep?q=http&lang=en' +
|
|
979
1119
|
'#content')
|
|
980
1120
|
end
|
|
@@ -991,7 +1131,7 @@ describe HTTY::Request do
|
|
|
991
1131
|
|
|
992
1132
|
it 'should return a request with the same URI having the changed ' +
|
|
993
1133
|
'host' do
|
|
994
|
-
@new_request.uri.should == URI.parse('
|
|
1134
|
+
@new_request.uri.should == URI.parse('https://' +
|
|
995
1135
|
'njonsson@gist.github.com' +
|
|
996
1136
|
':123' +
|
|
997
1137
|
'/search/deep?q=http&lang=en' +
|
|
@@ -1010,7 +1150,7 @@ describe HTTY::Request do
|
|
|
1010
1150
|
|
|
1011
1151
|
it 'should return a request with the same URI having the changed ' +
|
|
1012
1152
|
'port' do
|
|
1013
|
-
@new_request.uri.should == URI.parse('
|
|
1153
|
+
@new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1014
1154
|
':8888' +
|
|
1015
1155
|
'/search/deep?q=http&lang=en' +
|
|
1016
1156
|
'#content')
|
|
@@ -1028,7 +1168,7 @@ describe HTTY::Request do
|
|
|
1028
1168
|
|
|
1029
1169
|
it 'should return a request with the same URI having the changed ' +
|
|
1030
1170
|
'path' do
|
|
1031
|
-
@new_request.uri.should == URI.parse('
|
|
1171
|
+
@new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1032
1172
|
':123' +
|
|
1033
1173
|
'/search/deep/foo' +
|
|
1034
1174
|
'?q=http&lang=en#content')
|
|
@@ -1046,7 +1186,7 @@ describe HTTY::Request do
|
|
|
1046
1186
|
|
|
1047
1187
|
it 'should return a request with the same URI having the new query ' +
|
|
1048
1188
|
'parameter' do
|
|
1049
|
-
@new_request.uri.should == URI.parse('
|
|
1189
|
+
@new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1050
1190
|
':123' +
|
|
1051
1191
|
'/search/deep' +
|
|
1052
1192
|
'?q=http&lang=en&foo=bar' +
|
|
@@ -1066,7 +1206,7 @@ describe HTTY::Request do
|
|
|
1066
1206
|
|
|
1067
1207
|
it 'should return a request with the same URI missing the first ' +
|
|
1068
1208
|
'query parameter' do
|
|
1069
|
-
@new_request.uri.should == URI.parse('
|
|
1209
|
+
@new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1070
1210
|
':123' +
|
|
1071
1211
|
'/search/deep?lang=en#content')
|
|
1072
1212
|
end
|
|
@@ -1083,7 +1223,7 @@ describe HTTY::Request do
|
|
|
1083
1223
|
|
|
1084
1224
|
it 'should return a request with the same URI having no query ' +
|
|
1085
1225
|
'string' do
|
|
1086
|
-
@new_request.uri.should == URI.parse('
|
|
1226
|
+
@new_request.uri.should == URI.parse('https://' +
|
|
1087
1227
|
'njonsson@github.com:123' +
|
|
1088
1228
|
'/search/deep#content')
|
|
1089
1229
|
end
|
|
@@ -1100,7 +1240,7 @@ describe HTTY::Request do
|
|
|
1100
1240
|
|
|
1101
1241
|
it 'should return a request with the same URI having the changed ' +
|
|
1102
1242
|
'fragment' do
|
|
1103
|
-
@new_request.uri.should == URI.parse('
|
|
1243
|
+
@new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1104
1244
|
':123' +
|
|
1105
1245
|
'/search/deep?q=http&lang=en' +
|
|
1106
1246
|
'#details')
|
|
@@ -1117,7 +1257,7 @@ describe HTTY::Request do
|
|
|
1117
1257
|
end
|
|
1118
1258
|
|
|
1119
1259
|
it 'should return a request with the same URI missing the fragment' do
|
|
1120
|
-
@new_request.uri.should == URI.parse('
|
|
1260
|
+
@new_request.uri.should == URI.parse('https://' +
|
|
1121
1261
|
'njonsson@github.com:123' +
|
|
1122
1262
|
'/search/deep?q=http&lang=en')
|
|
1123
1263
|
end
|
|
@@ -1133,7 +1273,7 @@ describe HTTY::Request do
|
|
|
1133
1273
|
end
|
|
1134
1274
|
|
|
1135
1275
|
it 'should return a request with an unchanged URI' do
|
|
1136
|
-
@new_request.uri.should == URI.parse('
|
|
1276
|
+
@new_request.uri.should == URI.parse('https://' +
|
|
1137
1277
|
'njonsson@github.com:123' +
|
|
1138
1278
|
'/search/deep?q=http&lang=en' +
|
|
1139
1279
|
'#content')
|
|
@@ -1146,8 +1286,10 @@ describe HTTY::Request do
|
|
|
1146
1286
|
describe '--' do
|
|
1147
1287
|
it 'should return a request with the header, plus the default ' +
|
|
1148
1288
|
'headers' do
|
|
1149
|
-
@new_request.headers.should == [
|
|
1150
|
-
|
|
1289
|
+
@new_request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
1290
|
+
['Authorization', 'Basic ' +
|
|
1291
|
+
'bmpvbnNzb24='],
|
|
1292
|
+
['foo', 'bar']]
|
|
1151
1293
|
end
|
|
1152
1294
|
|
|
1153
1295
|
it 'should return a request without a response' do
|
|
@@ -1162,7 +1304,10 @@ describe HTTY::Request do
|
|
|
1162
1304
|
end
|
|
1163
1305
|
|
|
1164
1306
|
it 'should return a request with only the default headers' do
|
|
1165
|
-
@new_request.headers.should == [
|
|
1307
|
+
@new_request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
1308
|
+
['Authorization', 'Basic ' +
|
|
1309
|
+
'bmpvbnNzb2' +
|
|
1310
|
+
'4=']]
|
|
1166
1311
|
end
|
|
1167
1312
|
end
|
|
1168
1313
|
end
|
|
@@ -1184,7 +1329,7 @@ describe HTTY::Request do
|
|
|
1184
1329
|
end
|
|
1185
1330
|
|
|
1186
1331
|
it 'should return a request with an unchanged URI' do
|
|
1187
|
-
@new_request.uri.should == URI.parse('
|
|
1332
|
+
@new_request.uri.should == URI.parse('https://' +
|
|
1188
1333
|
'njonsson@github.com:123' +
|
|
1189
1334
|
'/search/deep?q=http&lang=en' +
|
|
1190
1335
|
'#content')
|
|
@@ -1200,14 +1345,20 @@ describe HTTY::Request do
|
|
|
1200
1345
|
end
|
|
1201
1346
|
|
|
1202
1347
|
it 'should return a request with only the default headers' do
|
|
1203
|
-
@new_request.headers.should == [
|
|
1348
|
+
@new_request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
1349
|
+
['Authorization', 'Basic ' +
|
|
1350
|
+
'bmpvbnNzb2' +
|
|
1351
|
+
'4=']]
|
|
1204
1352
|
end
|
|
1205
1353
|
|
|
1206
1354
|
it "should return a request with the expected 'Content-Length' " +
|
|
1207
1355
|
"header, plus the 'User-Agent' header if we do not exclude " +
|
|
1208
1356
|
"the 'Content-Length' header" do
|
|
1209
|
-
@new_request.headers(true).should == [['User-Agent',
|
|
1210
|
-
|
|
1357
|
+
@new_request.headers(true).should == [['User-Agent', 'htty/' +
|
|
1358
|
+
'1.1.0'],
|
|
1359
|
+
['Authorization', 'Basic ' +
|
|
1360
|
+
'bmpvbn' +
|
|
1361
|
+
'Nzb24='],
|
|
1211
1362
|
['Content-Length', '3']]
|
|
1212
1363
|
end
|
|
1213
1364
|
|
|
@@ -1226,7 +1377,10 @@ describe HTTY::Request do
|
|
|
1226
1377
|
end
|
|
1227
1378
|
|
|
1228
1379
|
it 'should return a request with only the default headers' do
|
|
1229
|
-
@new_request.headers.should == [
|
|
1380
|
+
@new_request.headers.should == [['User-Agent', 'htty/1.1.0'],
|
|
1381
|
+
['Authorization', 'Basic ' +
|
|
1382
|
+
'bmpvbnNzb2' +
|
|
1383
|
+
'4=']]
|
|
1230
1384
|
end
|
|
1231
1385
|
end
|
|
1232
1386
|
end
|