htty 1.5.4 → 1.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +12 -9
- data/.rspec +2 -1
- data/.travis.yml +11 -8
- data/.yardopts +1 -1
- data/Gemfile +22 -10
- data/Guardfile +31 -13
- data/History.markdown +6 -0
- data/README.markdown +29 -13
- data/Rakefile +2 -64
- data/bin/console +10 -0
- data/bin/setup +8 -0
- data/exe/htty +5 -0
- data/htty.gemspec +27 -29
- data/lib/htty.rb +29 -4
- data/lib/htty/cli.rb +9 -16
- data/lib/htty/cli/body_open_command.rb +2 -7
- data/lib/htty/cli/command.rb +10 -18
- data/lib/htty/cli/commands.rb +76 -11
- data/lib/htty/cli/commands/address.rb +1 -14
- data/lib/htty/cli/commands/body_clear.rb +1 -8
- data/lib/htty/cli/commands/body_edit.rb +1 -11
- data/lib/htty/cli/commands/body_request.rb +1 -12
- data/lib/htty/cli/commands/body_request_open.rb +1 -10
- data/lib/htty/cli/commands/body_response.rb +1 -12
- data/lib/htty/cli/commands/body_response_open.rb +1 -11
- data/lib/htty/cli/commands/body_set.rb +1 -10
- data/lib/htty/cli/commands/body_unset.rb +1 -9
- data/lib/htty/cli/commands/cd.rb +1 -8
- data/lib/htty/cli/commands/cookie_add.rb +1 -8
- data/lib/htty/cli/commands/cookie_remove.rb +1 -8
- data/lib/htty/cli/commands/cookies.rb +1 -15
- data/lib/htty/cli/commands/cookies_add.rb +1 -11
- data/lib/htty/cli/commands/cookies_clear.rb +1 -8
- data/lib/htty/cli/commands/cookies_remove.rb +1 -11
- data/lib/htty/cli/commands/cookies_remove_all.rb +1 -11
- data/lib/htty/cli/commands/cookies_use.rb +1 -14
- data/lib/htty/cli/commands/delete.rb +1 -8
- data/lib/htty/cli/commands/exit.rb +1 -8
- data/lib/htty/cli/commands/follow.rb +1 -10
- data/lib/htty/cli/commands/form.rb +1 -7
- data/lib/htty/cli/commands/form_add.rb +1 -7
- data/lib/htty/cli/commands/form_clear.rb +1 -8
- data/lib/htty/cli/commands/form_remove.rb +1 -7
- data/lib/htty/cli/commands/form_remove_all.rb +1 -7
- data/lib/htty/cli/commands/fragment_clear.rb +1 -8
- data/lib/htty/cli/commands/fragment_set.rb +1 -10
- data/lib/htty/cli/commands/fragment_unset.rb +1 -9
- data/lib/htty/cli/commands/get.rb +1 -8
- data/lib/htty/cli/commands/header_set.rb +1 -8
- data/lib/htty/cli/commands/header_unset.rb +1 -8
- data/lib/htty/cli/commands/headers_clear.rb +1 -8
- data/lib/htty/cli/commands/headers_request.rb +1 -15
- data/lib/htty/cli/commands/headers_response.rb +1 -15
- data/lib/htty/cli/commands/headers_set.rb +1 -10
- data/lib/htty/cli/commands/headers_unset.rb +1 -10
- data/lib/htty/cli/commands/headers_unset_all.rb +1 -10
- data/lib/htty/cli/commands/help.rb +4 -12
- data/lib/htty/cli/commands/history.rb +1 -10
- data/lib/htty/cli/commands/history_verbose.rb +1 -12
- data/lib/htty/cli/commands/host_set.rb +1 -8
- data/lib/htty/cli/commands/http_delete.rb +1 -12
- data/lib/htty/cli/commands/http_get.rb +1 -13
- data/lib/htty/cli/commands/http_head.rb +1 -9
- data/lib/htty/cli/commands/http_options.rb +1 -9
- data/lib/htty/cli/commands/http_patch.rb +1 -13
- data/lib/htty/cli/commands/http_post.rb +1 -13
- data/lib/htty/cli/commands/http_put.rb +1 -12
- data/lib/htty/cli/commands/http_trace.rb +1 -9
- data/lib/htty/cli/commands/patch.rb +1 -8
- data/lib/htty/cli/commands/path_set.rb +11 -11
- data/lib/htty/cli/commands/port_set.rb +1 -9
- data/lib/htty/cli/commands/post.rb +1 -8
- data/lib/htty/cli/commands/put.rb +1 -8
- data/lib/htty/cli/commands/query_add.rb +1 -13
- data/lib/htty/cli/commands/query_clear.rb +1 -8
- data/lib/htty/cli/commands/query_remove.rb +1 -13
- data/lib/htty/cli/commands/query_set.rb +1 -13
- data/lib/htty/cli/commands/query_unset.rb +1 -13
- data/lib/htty/cli/commands/query_unset_all.rb +1 -10
- data/lib/htty/cli/commands/quit.rb +1 -7
- data/lib/htty/cli/commands/reuse.rb +5 -12
- data/lib/htty/cli/commands/scheme_set.rb +1 -9
- data/lib/htty/cli/commands/ssl_verification.rb +1 -11
- data/lib/htty/cli/commands/ssl_verification_off.rb +1 -10
- data/lib/htty/cli/commands/ssl_verification_on.rb +1 -10
- data/lib/htty/cli/commands/status.rb +1 -11
- data/lib/htty/cli/commands/undo.rb +1 -7
- data/lib/htty/cli/commands/userinfo_clear.rb +1 -8
- data/lib/htty/cli/commands/userinfo_set.rb +1 -11
- data/lib/htty/cli/commands/userinfo_unset.rb +1 -9
- data/lib/htty/cli/display.rb +4 -6
- data/lib/htty/cli/http_method_command.rb +1 -10
- data/lib/htty/cli/input_device.rb +1 -0
- data/lib/htty/cli/url_escaping.rb +1 -6
- data/lib/htty/cookies_util.rb +3 -3
- data/lib/htty/headers.rb +3 -4
- data/lib/htty/http_patch.rb +20 -23
- data/lib/htty/no_header_error.rb +1 -1
- data/lib/htty/no_location_header_error.rb +1 -3
- data/lib/htty/no_response_error.rb +1 -1
- data/lib/htty/no_set_cookie_header_error.rb +1 -3
- data/lib/htty/payload.rb +1 -5
- data/lib/htty/platform.rb +1 -1
- data/lib/htty/preferences.rb +1 -1
- data/lib/htty/request.rb +3 -13
- data/lib/htty/requests_util.rb +1 -5
- data/lib/htty/response.rb +1 -4
- data/lib/htty/session.rb +1 -3
- data/lib/htty/tempfile_preserving_extname.rb +1 -2
- data/lib/htty/uri.rb +1 -2
- data/lib/htty/version.rb +1 -1
- data/lib/tasks.rb +3 -0
- data/lib/tasks/build_doc.rake +8 -0
- data/lib/tasks/lib_each.rake +25 -0
- data/lib/tasks/spec.rake +68 -0
- data/lib/tasks/spec_each.rake +19 -0
- metadata +48 -209
- data/bin/htty +0 -5
- data/spec/integration/htty/cli/commands/query_add_spec.rb +0 -57
- data/spec/integration/htty/cli/commands/query_remove_spec.rb +0 -55
- data/spec/integration/htty/cli/commands/query_set_spec.rb +0 -78
- data/spec/integration/htty/cli/commands/query_unset_spec.rb +0 -43
- data/spec/spec_helper.rb +0 -76
- data/spec/unit/htty/cli/commands/address_spec.rb +0 -103
- data/spec/unit/htty/cli/commands/body_clear_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/body_edit_spec.rb +0 -18
- data/spec/unit/htty/cli/commands/body_request_spec.rb +0 -67
- data/spec/unit/htty/cli/commands/body_response_spec.rb +0 -72
- data/spec/unit/htty/cli/commands/body_set_spec.rb +0 -71
- data/spec/unit/htty/cli/commands/body_unset_spec.rb +0 -69
- data/spec/unit/htty/cli/commands/cd_spec.rb +0 -57
- data/spec/unit/htty/cli/commands/cookie_add_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/cookie_remove_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/cookies_add_spec.rb +0 -78
- data/spec/unit/htty/cli/commands/cookies_clear_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/cookies_remove_all_spec.rb +0 -73
- data/spec/unit/htty/cli/commands/cookies_remove_spec.rb +0 -69
- data/spec/unit/htty/cli/commands/cookies_spec.rb +0 -76
- data/spec/unit/htty/cli/commands/cookies_use_spec.rb +0 -75
- data/spec/unit/htty/cli/commands/delete_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/exit_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/follow_spec.rb +0 -70
- data/spec/unit/htty/cli/commands/form_add_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/form_clear_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/form_remove_all_spec.rb +0 -66
- data/spec/unit/htty/cli/commands/form_remove_spec.rb +0 -57
- data/spec/unit/htty/cli/commands/form_spec.rb +0 -57
- data/spec/unit/htty/cli/commands/fragment_clear_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/fragment_set_spec.rb +0 -73
- data/spec/unit/htty/cli/commands/fragment_unset_spec.rb +0 -72
- data/spec/unit/htty/cli/commands/get_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/header_set_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/header_unset_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/headers_clear_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/headers_request_spec.rb +0 -81
- data/spec/unit/htty/cli/commands/headers_response_spec.rb +0 -77
- data/spec/unit/htty/cli/commands/headers_set_spec.rb +0 -74
- data/spec/unit/htty/cli/commands/headers_unset_all_spec.rb +0 -71
- data/spec/unit/htty/cli/commands/headers_unset_spec.rb +0 -63
- data/spec/unit/htty/cli/commands/help_spec.rb +0 -67
- data/spec/unit/htty/cli/commands/history_spec.rb +0 -65
- data/spec/unit/htty/cli/commands/history_verbose_spec.rb +0 -72
- data/spec/unit/htty/cli/commands/host_set_spec.rb +0 -71
- data/spec/unit/htty/cli/commands/http_delete_spec.rb +0 -75
- data/spec/unit/htty/cli/commands/http_get_spec.rb +0 -77
- data/spec/unit/htty/cli/commands/http_head_spec.rb +0 -69
- data/spec/unit/htty/cli/commands/http_options_spec.rb +0 -69
- data/spec/unit/htty/cli/commands/http_patch_spec.rb +0 -73
- data/spec/unit/htty/cli/commands/http_post_spec.rb +0 -73
- data/spec/unit/htty/cli/commands/http_put_spec.rb +0 -71
- data/spec/unit/htty/cli/commands/http_trace_spec.rb +0 -69
- data/spec/unit/htty/cli/commands/patch_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/path_set_spec.rb +0 -72
- data/spec/unit/htty/cli/commands/port_set_spec.rb +0 -73
- data/spec/unit/htty/cli/commands/post_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/put_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/query_add_spec.rb +0 -82
- data/spec/unit/htty/cli/commands/query_clear_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/query_remove_spec.rb +0 -82
- data/spec/unit/htty/cli/commands/query_set_spec.rb +0 -82
- data/spec/unit/htty/cli/commands/query_unset_all_spec.rb +0 -74
- data/spec/unit/htty/cli/commands/query_unset_spec.rb +0 -75
- data/spec/unit/htty/cli/commands/quit_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/reuse_spec.rb +0 -72
- data/spec/unit/htty/cli/commands/scheme_set_spec.rb +0 -74
- data/spec/unit/htty/cli/commands/shared_examples_for_commands.rb +0 -55
- data/spec/unit/htty/cli/commands/ssl_verification_off_spec.rb +0 -67
- data/spec/unit/htty/cli/commands/ssl_verification_on_spec.rb +0 -60
- data/spec/unit/htty/cli/commands/ssl_verification_spec.rb +0 -65
- data/spec/unit/htty/cli/commands/status_spec.rb +0 -73
- data/spec/unit/htty/cli/commands/undo_spec.rb +0 -57
- data/spec/unit/htty/cli/commands/userinfo_clear_spec.rb +0 -64
- data/spec/unit/htty/cli/commands/userinfo_set_spec.rb +0 -97
- data/spec/unit/htty/cli/commands/userinfo_unset_spec.rb +0 -72
- data/spec/unit/htty/cli/display_spec.rb +0 -84
- data/spec/unit/htty/cli_spec.rb +0 -28
- data/spec/unit/htty/command.rb +0 -47
- data/spec/unit/htty/headers_spec.rb +0 -40
- data/spec/unit/htty/payload_spec.rb +0 -60
- data/spec/unit/htty/preferences_spec.rb +0 -8
- data/spec/unit/htty/request_follow_spec.rb +0 -94
- data/spec/unit/htty/request_spec.rb +0 -1232
- data/spec/unit/htty/request_userinfo_spec.rb +0 -208
- data/spec/unit/htty/response_spec.rb +0 -0
- data/spec/unit/htty/session_spec.rb +0 -10
- data/spec/unit/htty/shared_examples_for_requests.rb +0 -32
- data/spec/unit/htty/url_escaping.rb +0 -70
- data/spec/unit/htty/version_spec.rb +0 -8
data/spec/unit/htty/cli_spec.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/cli")
|
|
3
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/request")
|
|
4
|
-
|
|
5
|
-
describe HTTY::CLI do
|
|
6
|
-
describe 'with empty arguments' do
|
|
7
|
-
let :cli do
|
|
8
|
-
HTTY::CLI.new([])
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it 'should have a session with the URI http://0.0.0.0:80/' do
|
|
12
|
-
cli.session.requests.should == [HTTY::Request.new('http://0.0.0.0:80/')]
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe 'with an address argument' do
|
|
17
|
-
let :cli do
|
|
18
|
-
HTTY::CLI.new(%w(https://njonsson@github.com/njonsson/htty))
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it 'should have a session with a URI corresponding to the address' do
|
|
22
|
-
cli.session.requests.should == [HTTY::Request.new('https://' +
|
|
23
|
-
'njonsson@github.com' +
|
|
24
|
-
':443' +
|
|
25
|
-
'/njonsson/htty')]
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
data/spec/unit/htty/command.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/request")
|
|
3
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/cli/command")
|
|
4
|
-
|
|
5
|
-
describe HTTY::CLI::Command do
|
|
6
|
-
let(:last_request) {HTTY::Request.new('http://0.0.0.0')}
|
|
7
|
-
let(:requests) {[last_request]}
|
|
8
|
-
let(:session) do
|
|
9
|
-
session = double
|
|
10
|
-
session.stub(:requests) {requests}
|
|
11
|
-
session
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
subject{described_class.new(:session => session)}
|
|
15
|
-
|
|
16
|
-
describe '#add_request_if_new' do
|
|
17
|
-
context 'when command returns nil' do
|
|
18
|
-
it 'should not add the request' do
|
|
19
|
-
expect do
|
|
20
|
-
subject.send(:add_request_if_new) do
|
|
21
|
-
nil
|
|
22
|
-
end
|
|
23
|
-
end.to_not change{subject.session.requests.count}
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
context 'when command returns the same request' do
|
|
28
|
-
it 'should not add the request' do
|
|
29
|
-
expect do
|
|
30
|
-
subject.send(:add_request_if_new) do
|
|
31
|
-
last_request
|
|
32
|
-
end
|
|
33
|
-
end.to_not change{subject.session.requests.count}
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
context 'when command returns a different request' do
|
|
38
|
-
it 'should add the request' do
|
|
39
|
-
expect do
|
|
40
|
-
subject.send(:add_request_if_new) do
|
|
41
|
-
HTTY::Request.new('http://0.0.0.0/foo')
|
|
42
|
-
end
|
|
43
|
-
end.to change{subject.session.requests.count}.by(1)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/headers")
|
|
3
|
-
|
|
4
|
-
describe HTTY::Headers do
|
|
5
|
-
describe 'that is empty' do
|
|
6
|
-
it { should be_empty }
|
|
7
|
-
|
|
8
|
-
describe 'when values are added out of order' do
|
|
9
|
-
before :each do
|
|
10
|
-
subject['foo'] = 'bar'
|
|
11
|
-
subject['baz'] = 'qux'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it { should == {'foo' => 'bar', 'baz' => 'qux'} }
|
|
15
|
-
|
|
16
|
-
it 'should return the expected array when sent #to_a' do
|
|
17
|
-
subject.to_a.should == [%w(foo bar), %w(baz qux)]
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
describe 'that has values out of order' do
|
|
23
|
-
subject { described_class.new('foo' => 'bar', 'baz' => 'qux') }
|
|
24
|
-
|
|
25
|
-
it { should == {'foo' => 'bar', 'baz' => 'qux'} }
|
|
26
|
-
|
|
27
|
-
it 'should index the values as expected' do
|
|
28
|
-
subject['foo'].should == 'bar'
|
|
29
|
-
subject['baz'].should == 'qux'
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
describe 'when sent #clear' do
|
|
33
|
-
before :each do
|
|
34
|
-
subject.clear
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it { should be_empty }
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/payload")
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe HTTY::Payload do
|
|
6
|
-
before(:all) do
|
|
7
|
-
@bare_payload = Class.new(HTTY::Payload)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:body) {nil}
|
|
11
|
-
let(:headers) {[['Accept', 'application/json']]}
|
|
12
|
-
|
|
13
|
-
subject {@bare_payload.new({:body => body, :headers => headers})}
|
|
14
|
-
|
|
15
|
-
it 'should heave headers' do
|
|
16
|
-
subject.should have(1).headers
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe '.headers(key)' do
|
|
20
|
-
it 'should be case insensitive' do
|
|
21
|
-
subject.headers_with_key('Accept').should == [['Accept', 'application/json']]
|
|
22
|
-
subject.headers_with_key('Accept').should == subject.headers_with_key('accept')
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
describe '.header(key)' do
|
|
27
|
-
it 'should return the header with a given key' do
|
|
28
|
-
subject.header('Accept').should == 'application/json'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'should return the header with a given key ignoring the case' do
|
|
32
|
-
['Accept', 'ACCEPT', 'accept', 'AccEpT'].each do |key|
|
|
33
|
-
subject.header(key).should == 'application/json'
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
context 'when key is not found' do
|
|
38
|
-
it 'should raise an exception' do
|
|
39
|
-
expect do
|
|
40
|
-
subject.header('not-found-key')
|
|
41
|
-
end.to raise_error(HTTY::NoHeaderError)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
context 'when given a value as second parameter' do
|
|
45
|
-
it 'should return the default value' do
|
|
46
|
-
subject.header('not-found-key', :default).should == :default
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
context 'when given an exception' do
|
|
51
|
-
it 'should raise that exception' do
|
|
52
|
-
exception_to_raise = Exception.new('key not found')
|
|
53
|
-
expect do
|
|
54
|
-
subject.header('not-found-key', exception_to_raise)
|
|
55
|
-
end.to raise_error(exception_to_raise.class)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/request")
|
|
3
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/response")
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
describe HTTY::Request do
|
|
7
|
-
let(:request_address) {'http://example.com/a?b=c#d'}
|
|
8
|
-
let(:request) {HTTY::Request.new request_address}
|
|
9
|
-
|
|
10
|
-
describe '#follow a response' do
|
|
11
|
-
let(:response) do
|
|
12
|
-
HTTY::Response.new({:headers => {'Location' => response_location}})
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
before :each do
|
|
16
|
-
request.send :response=, response
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe 'with an absolute URI in Location header' do
|
|
20
|
-
let(:response_location) {'http://followme.com/a/b/c'}
|
|
21
|
-
|
|
22
|
-
it 'should return another request' do
|
|
23
|
-
request.follow(response).should_not == request
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'should return a request with the absolute URI as its HTTP URI' do
|
|
27
|
-
request.follow(response).uri.should == URI.parse(response_location)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
describe 'with an absolute path in Location header' do
|
|
32
|
-
let(:response_location) {'/a/b/c'}
|
|
33
|
-
|
|
34
|
-
it 'should return a request with the same URI host ' +
|
|
35
|
-
'and with the URI path changed to the absolute path in Location' do
|
|
36
|
-
expected_uri = URI.parse(request_address)
|
|
37
|
-
expected_uri.path = response_location
|
|
38
|
-
expected_uri.query = nil
|
|
39
|
-
expected_uri.fragment = nil
|
|
40
|
-
request.follow(response).uri.should == expected_uri
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
describe 'with a relative path in Location header' do
|
|
45
|
-
let(:response_location) {'a/b/c'}
|
|
46
|
-
|
|
47
|
-
it 'should return a request with the same URI host ' +
|
|
48
|
-
'and with the URI path changed joining the ' +
|
|
49
|
-
'original URI path to the relative path in Location' do
|
|
50
|
-
expected_uri = URI.parse(request_address)
|
|
51
|
-
expected_uri.path = File.join(expected_uri.path, response_location)
|
|
52
|
-
expected_uri.query = nil
|
|
53
|
-
expected_uri.fragment = nil
|
|
54
|
-
request.follow(response).uri.should == expected_uri
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
context 'when invoked more than once' do
|
|
58
|
-
let(:after_follow) {request.follow(response)}
|
|
59
|
-
|
|
60
|
-
it 'should return always the same request' do
|
|
61
|
-
after_follow.uri.should == after_follow.follow(response).uri
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
describe 'with an URI with query string in Location header' do
|
|
67
|
-
let(:response_location) {'a/b/c?d=e&f=g'}
|
|
68
|
-
|
|
69
|
-
it 'should return a request with URI query string ' +
|
|
70
|
-
'equal to the Location query string' do
|
|
71
|
-
expected_query = URI.parse(response_location).query
|
|
72
|
-
request.follow(response).uri.query.should == expected_query
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it 'should return a request without URI fragment' do
|
|
76
|
-
request.follow(response).uri.fragment.should be_nil
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
describe 'with an URI with fragment in Location header' do
|
|
81
|
-
let(:response_location) {'a/b/c#f'}
|
|
82
|
-
|
|
83
|
-
it 'should return a request with URI fragment ' +
|
|
84
|
-
'equal to the Location fragment' do
|
|
85
|
-
expected_fragment = URI.parse(response_location).fragment
|
|
86
|
-
request.follow(response).uri.fragment.should == expected_fragment
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it 'should return a request without URI query string' do
|
|
90
|
-
request.follow(response).uri.query.should be_nil
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
@@ -1,1232 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/request")
|
|
3
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/response")
|
|
4
|
-
require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/version")
|
|
5
|
-
|
|
6
|
-
require File.expand_path("#{File.dirname __FILE__}/shared_examples_for_requests")
|
|
7
|
-
|
|
8
|
-
describe HTTY::Request do
|
|
9
|
-
let(:username) {'njonsson'}
|
|
10
|
-
let(:password) {nil}
|
|
11
|
-
|
|
12
|
-
describe 'initializing with' do
|
|
13
|
-
let :klass do
|
|
14
|
-
HTTY::Request
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
describe 'a valid FTP address' do
|
|
18
|
-
it 'should raise URI::InvalidURIError' do
|
|
19
|
-
expect do
|
|
20
|
-
klass.new 'ftp://myftpsite.info'
|
|
21
|
-
end.to raise_error(ArgumentError,
|
|
22
|
-
'only http:// and https:// schemes are supported')
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe 'with a nil address' do
|
|
28
|
-
let :request do
|
|
29
|
-
HTTY::Request.new nil
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it 'should have the URI http://0.0.0.0:80/' do
|
|
33
|
-
request.uri.should == URI.parse('http://0.0.0.0:80/')
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it_should_behave_like 'an empty request'
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe 'with an empty address' do
|
|
40
|
-
let :request do
|
|
41
|
-
HTTY::Request.new ''
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it 'should have the URI http://0.0.0.0:80/' do
|
|
45
|
-
request.uri.should == URI.parse('http://0.0.0.0:80/')
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it_should_behave_like 'an empty request'
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
describe 'with an address consisting of' do
|
|
52
|
-
describe 'an IPv4 address' do
|
|
53
|
-
let :request do
|
|
54
|
-
HTTY::Request.new '127.0.0.1'
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it 'should have an HTTP URI for that host' do
|
|
58
|
-
request.uri.should == URI.parse('http://127.0.0.1:80/')
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it_should_behave_like 'an empty request'
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
describe 'a hostname' do
|
|
65
|
-
let :request do
|
|
66
|
-
HTTY::Request.new 'localhost'
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it 'should have HTTP URI for that host' do
|
|
70
|
-
request.uri.should == URI.parse('http://localhost:80/')
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it_should_behave_like 'an empty request'
|
|
74
|
-
|
|
75
|
-
describe '-- when sent #query_set' do
|
|
76
|
-
describe 'with a query parameter --' do
|
|
77
|
-
before :each do
|
|
78
|
-
request.query_set 'foo', 'bar'
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it 'should have a URI including the query parameter' do
|
|
82
|
-
request.uri.should == URI.parse('http://localhost:80/?foo=bar')
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it_should_behave_like 'an empty request'
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
describe 'a hostname and a port' do
|
|
91
|
-
let :request do
|
|
92
|
-
HTTY::Request.new 'localhost:8080'
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it 'should have an HTTP URI for that host on that port' do
|
|
96
|
-
request.uri.should == URI.parse('http://localhost:8080/')
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it_should_behave_like 'an empty request'
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
describe 'the HTTP scheme and a hostname' do
|
|
103
|
-
let :request do
|
|
104
|
-
HTTY::Request.new 'http://localhost'
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it 'should have an HTTP URI for that host' do
|
|
108
|
-
request.uri.should == URI.parse('http://localhost:80/')
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
it_should_behave_like 'an empty request'
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
describe 'the HTTPS scheme, userinfo, and a hostname' do
|
|
115
|
-
let :request do
|
|
116
|
-
HTTY::Request.new 'https://njonsson@github.com'
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it 'should have an HTTPS URI for host with that userinfo' do
|
|
120
|
-
request.uri.should == URI.parse('https://njonsson@github.com:443/')
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
describe 'a hostname and the root path' do
|
|
127
|
-
let :request do
|
|
128
|
-
HTTY::Request.new 'github.com/'
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
it 'should have an HTTP URI for the root of that host' do
|
|
132
|
-
request.uri.should == URI.parse('http://github.com:80/')
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
it_should_behave_like 'an empty request'
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
describe 'a hostname, port 443, and the root path' do
|
|
139
|
-
let :request do
|
|
140
|
-
HTTY::Request.new 'github.com:443/'
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
it 'should have an HTTPS URI for the root of that host' do
|
|
144
|
-
request.uri.should == URI.parse('https://github.com:443/')
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
it_should_behave_like 'an empty request'
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
describe 'the HTTP scheme, a hostname, port 443, and the root path' do
|
|
151
|
-
let :request do
|
|
152
|
-
HTTY::Request.new 'http://github.com:443/'
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
it 'should have an HTTP URI for the root of that host on port 443' do
|
|
156
|
-
request.uri.should == URI.parse('http://github.com:443/')
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
it_should_behave_like 'an empty request'
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
describe 'a hostname and a path' do
|
|
163
|
-
let :request do
|
|
164
|
-
HTTY::Request.new 'github.com/explore'
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
it 'should have an HTTP URI for that path on that host' do
|
|
168
|
-
request.uri.should == URI.parse('http://github.com:80/explore')
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
it_should_behave_like 'an empty request'
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
describe 'a hostname and a query string' do
|
|
175
|
-
let :request do
|
|
176
|
-
HTTY::Request.new 'github.com?search=http'
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
it 'should have an HTTP URI for that query string and the root of ' +
|
|
180
|
-
'that host' do
|
|
181
|
-
request.uri.should == URI.parse('http://github.com:80/?search=http')
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
it_should_behave_like 'an empty request'
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
describe 'a hostname, a path, and a query string' do
|
|
188
|
-
let :request do
|
|
189
|
-
HTTY::Request.new 'github.com/search?q=http&lang=en'
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
it 'should have an HTTP URI for that query string and that path on ' +
|
|
193
|
-
'that host' do
|
|
194
|
-
request.uri.should == URI.parse('http://github.com:80' +
|
|
195
|
-
'/search?q=http&lang=en')
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
it_should_behave_like 'an empty request'
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
describe 'a hostname, a path, and a fragment' do
|
|
202
|
-
let :request do
|
|
203
|
-
HTTY::Request.new 'github.com/explore#trending'
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
it 'should have an HTTP URI for that fragment of that path on that ' +
|
|
207
|
-
'host' do
|
|
208
|
-
request.uri.should == URI.parse('http://github.com:80/explore#trending')
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
it_should_behave_like 'an empty request'
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
describe 'a hostname, a port, a path, a query string, and a fragment' do
|
|
215
|
-
let :request do
|
|
216
|
-
HTTY::Request.new 'github.com:123/search/deep?q=http&lang=en#content'
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
it 'should have an HTTP URI for that query string and that fragment ' +
|
|
220
|
-
'of that path on that host on that port' do
|
|
221
|
-
request.uri.should == URI.parse('http://github.com:123' +
|
|
222
|
-
'/search/deep?q=http&lang=en' +
|
|
223
|
-
'#content')
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
it_should_behave_like 'an empty request'
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
describe 'the HTTPS scheme, userinfo, a hostname, a port, a path, a ' +
|
|
230
|
-
'query string, and a fragment' do
|
|
231
|
-
let :request do
|
|
232
|
-
HTTY::Request.new 'https://njonsson@github.com:123' +
|
|
233
|
-
'/search/deep?q=http&lang=en#content'
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
describe 'and without a response' do
|
|
237
|
-
it 'should not have a response' do
|
|
238
|
-
request.response.should be_nil
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
describe '-- and is untouched --' do
|
|
242
|
-
it 'should have an HTTPS URI for that query string and that ' +
|
|
243
|
-
'fragment of that path on that host on that port with that ' +
|
|
244
|
-
'userinfo' do
|
|
245
|
-
request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
246
|
-
'/search/deep?q=http&lang=en' +
|
|
247
|
-
'#content')
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
describe '-- when sent #address with an address consisting of' do
|
|
254
|
-
describe 'the HTTP scheme and different userinfo, hostname, port, ' +
|
|
255
|
-
'path, query string, and fragment --' do
|
|
256
|
-
before :each do
|
|
257
|
-
request.address 'http://steve@mac.com:456/archives/2010' +
|
|
258
|
-
'?author=jobs&subject=html5#flames'
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
it 'should have an HTTP URI for the new query string and the new ' +
|
|
262
|
-
'fragment of the new path on the new host on the new port ' +
|
|
263
|
-
'with the new userinfo' do
|
|
264
|
-
request.uri.should == URI.parse('http://steve@mac.com:456' +
|
|
265
|
-
'/archives/2010' +
|
|
266
|
-
'?author=jobs&subject=html5' +
|
|
267
|
-
'#flames')
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
it 'should the expected Authorization header plus the default ' +
|
|
271
|
-
'headers' do
|
|
272
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
273
|
-
HTTY::VERSION],
|
|
274
|
-
['Authorization', 'Basic c3RldmU=']]
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
it 'should have no body' do
|
|
278
|
-
request.body.should be_nil
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
it 'should have no response' do
|
|
282
|
-
request.response.should be_nil
|
|
283
|
-
end
|
|
284
|
-
end
|
|
285
|
-
|
|
286
|
-
describe 'a different hostname --' do
|
|
287
|
-
before :each do
|
|
288
|
-
request.address 'mac.com'
|
|
289
|
-
end
|
|
290
|
-
|
|
291
|
-
it 'should have an HTTP URI for the new host' do
|
|
292
|
-
request.uri.should == URI.parse('http://mac.com:80/')
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
it_should_behave_like 'an empty request'
|
|
296
|
-
end
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
describe '-- when sent #scheme_set with' do
|
|
300
|
-
describe 'the same scheme --' do
|
|
301
|
-
before :each do
|
|
302
|
-
request.scheme_set 'https'
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
it 'should have an unchanged URI' do
|
|
306
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
307
|
-
':123' +
|
|
308
|
-
'/search/deep?q=http&lang=en' +
|
|
309
|
-
'#content')
|
|
310
|
-
end
|
|
311
|
-
|
|
312
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
313
|
-
end
|
|
314
|
-
|
|
315
|
-
describe 'a different scheme --' do
|
|
316
|
-
before :each do
|
|
317
|
-
request.scheme_set 'http'
|
|
318
|
-
end
|
|
319
|
-
|
|
320
|
-
it 'should have the same URI, with the changed scheme' do
|
|
321
|
-
request.uri.should == URI.parse('http://njonsson@github.com' +
|
|
322
|
-
':123' +
|
|
323
|
-
'/search/deep?q=http&lang=en' +
|
|
324
|
-
'#content')
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
328
|
-
end
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
describe '-- when sent #host_set with' do
|
|
332
|
-
describe 'the same host --' do
|
|
333
|
-
before :each do
|
|
334
|
-
request.host_set 'github.com'
|
|
335
|
-
end
|
|
336
|
-
|
|
337
|
-
it 'should have an unchanged URI' do
|
|
338
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
339
|
-
':123' +
|
|
340
|
-
'/search/deep?q=http&lang=en' +
|
|
341
|
-
'#content')
|
|
342
|
-
end
|
|
343
|
-
|
|
344
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
345
|
-
end
|
|
346
|
-
|
|
347
|
-
describe 'a different host --' do
|
|
348
|
-
before :each do
|
|
349
|
-
request.host_set 'gist.github.com'
|
|
350
|
-
end
|
|
351
|
-
|
|
352
|
-
it 'should have the same URI, with the changed scheme' do
|
|
353
|
-
request.uri.should == URI.parse('https://' +
|
|
354
|
-
'njonsson@gist.github.com:123' +
|
|
355
|
-
'/search/deep?q=http&lang=en' +
|
|
356
|
-
'#content')
|
|
357
|
-
end
|
|
358
|
-
|
|
359
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
360
|
-
end
|
|
361
|
-
end
|
|
362
|
-
|
|
363
|
-
describe '-- when sent #port_set with' do
|
|
364
|
-
describe 'the same port --' do
|
|
365
|
-
before :each do
|
|
366
|
-
request.port_set 123
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
it 'should have an unchanged URI' do
|
|
370
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
371
|
-
':123' +
|
|
372
|
-
'/search/deep?q=http&lang=en' +
|
|
373
|
-
'#content')
|
|
374
|
-
end
|
|
375
|
-
|
|
376
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
describe 'a different port --' do
|
|
380
|
-
before :each do
|
|
381
|
-
request.port_set 8888
|
|
382
|
-
end
|
|
383
|
-
|
|
384
|
-
it 'should have the same URI, with the changed scheme' do
|
|
385
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
386
|
-
':8888' +
|
|
387
|
-
'/search/deep?q=http&lang=en' +
|
|
388
|
-
'#content')
|
|
389
|
-
end
|
|
390
|
-
|
|
391
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
392
|
-
end
|
|
393
|
-
end
|
|
394
|
-
|
|
395
|
-
describe '-- when sent #path_set with a path consisting of' do
|
|
396
|
-
describe 'a child reference --' do
|
|
397
|
-
before :each do
|
|
398
|
-
request.path_set 'foo'
|
|
399
|
-
end
|
|
400
|
-
|
|
401
|
-
it 'should have the same URI, descending to the expected path' do
|
|
402
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
403
|
-
':123' +
|
|
404
|
-
'/search/deep/foo' +
|
|
405
|
-
'?q=http&lang=en#content')
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
409
|
-
end
|
|
410
|
-
|
|
411
|
-
describe 'a parent reference --' do
|
|
412
|
-
before :each do
|
|
413
|
-
request.path_set '..'
|
|
414
|
-
end
|
|
415
|
-
|
|
416
|
-
it 'should have the same URI, ascending to the expected path' do
|
|
417
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
418
|
-
':123' +
|
|
419
|
-
'/search?q=http&lang=en#content')
|
|
420
|
-
end
|
|
421
|
-
|
|
422
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
423
|
-
end
|
|
424
|
-
|
|
425
|
-
describe 'an absolute reference --' do
|
|
426
|
-
before :each do
|
|
427
|
-
request.path_set '/foo/bar'
|
|
428
|
-
end
|
|
429
|
-
|
|
430
|
-
it 'should have the same URI, changing to the expected path' do
|
|
431
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
432
|
-
':123' +
|
|
433
|
-
'/foo/bar?q=http&lang=en' +
|
|
434
|
-
'#content')
|
|
435
|
-
end
|
|
436
|
-
|
|
437
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
438
|
-
end
|
|
439
|
-
end
|
|
440
|
-
|
|
441
|
-
describe '-- when sent #query_set' do
|
|
442
|
-
describe 'with a new query parameter --' do
|
|
443
|
-
before :each do
|
|
444
|
-
request.query_set 'foo', 'bar'
|
|
445
|
-
end
|
|
446
|
-
|
|
447
|
-
it 'should have a URI including the new query parameter' do
|
|
448
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
449
|
-
':123' +
|
|
450
|
-
'/search/deep' +
|
|
451
|
-
'?q=http&lang=en&foo=bar' +
|
|
452
|
-
'#content')
|
|
453
|
-
end
|
|
454
|
-
|
|
455
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
456
|
-
end
|
|
457
|
-
|
|
458
|
-
describe 'with a new value for the first query parameter --' do
|
|
459
|
-
before :each do
|
|
460
|
-
request.query_set 'q', 'ruby'
|
|
461
|
-
end
|
|
462
|
-
|
|
463
|
-
it 'should have a URI with the new value of the query parameter' do
|
|
464
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
465
|
-
':123' +
|
|
466
|
-
'/search/deep?q=ruby&lang=en' +
|
|
467
|
-
'#content')
|
|
468
|
-
end
|
|
469
|
-
|
|
470
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
471
|
-
end
|
|
472
|
-
|
|
473
|
-
describe 'with a new value for the second query parameter --' do
|
|
474
|
-
before :each do
|
|
475
|
-
request.query_set 'lang', 'fr'
|
|
476
|
-
end
|
|
477
|
-
|
|
478
|
-
it 'should have a URI with the new value of the second query ' +
|
|
479
|
-
'parameter' do
|
|
480
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
481
|
-
':123' +
|
|
482
|
-
'/search/deep?q=http&lang=fr' +
|
|
483
|
-
'#content')
|
|
484
|
-
end
|
|
485
|
-
|
|
486
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
487
|
-
end
|
|
488
|
-
end
|
|
489
|
-
|
|
490
|
-
describe '-- when sent #query_unset' do
|
|
491
|
-
describe 'with a nonexistent query parameter --' do
|
|
492
|
-
before :each do
|
|
493
|
-
request.query_unset 'fizzle'
|
|
494
|
-
end
|
|
495
|
-
|
|
496
|
-
it 'should have an unchanged URI' do
|
|
497
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
498
|
-
':123' +
|
|
499
|
-
'/search/deep?q=http&lang=en' +
|
|
500
|
-
'#content')
|
|
501
|
-
end
|
|
502
|
-
|
|
503
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
504
|
-
end
|
|
505
|
-
|
|
506
|
-
describe 'with the first query parameter --' do
|
|
507
|
-
before :each do
|
|
508
|
-
request.query_unset 'q'
|
|
509
|
-
end
|
|
510
|
-
|
|
511
|
-
it 'should have a URI missing the first query parameter' do
|
|
512
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
513
|
-
':123' +
|
|
514
|
-
'/search/deep?lang=en#content')
|
|
515
|
-
end
|
|
516
|
-
|
|
517
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
518
|
-
end
|
|
519
|
-
|
|
520
|
-
describe 'with the second query parameter --' do
|
|
521
|
-
before :each do
|
|
522
|
-
request.query_unset 'lang'
|
|
523
|
-
end
|
|
524
|
-
|
|
525
|
-
it 'should have a URI missing the second query parameter' do
|
|
526
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
527
|
-
':123' +
|
|
528
|
-
'/search/deep?q=http#content')
|
|
529
|
-
end
|
|
530
|
-
|
|
531
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
532
|
-
end
|
|
533
|
-
end
|
|
534
|
-
|
|
535
|
-
describe '-- when sent #query_unset_all --' do
|
|
536
|
-
before :each do
|
|
537
|
-
request.query_unset_all
|
|
538
|
-
end
|
|
539
|
-
|
|
540
|
-
it 'should have a URI having no query string' do
|
|
541
|
-
request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
542
|
-
'/search/deep#content')
|
|
543
|
-
end
|
|
544
|
-
|
|
545
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
546
|
-
end
|
|
547
|
-
|
|
548
|
-
describe '-- when sent #fragment_set with' do
|
|
549
|
-
describe 'the same fragment --' do
|
|
550
|
-
before :each do
|
|
551
|
-
request.fragment_set 'content'
|
|
552
|
-
end
|
|
553
|
-
|
|
554
|
-
it 'should have an unchanged URI' do
|
|
555
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
556
|
-
':123' +
|
|
557
|
-
'/search/deep?q=http&lang=en' +
|
|
558
|
-
'#content')
|
|
559
|
-
end
|
|
560
|
-
|
|
561
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
562
|
-
end
|
|
563
|
-
|
|
564
|
-
describe 'different fragment --' do
|
|
565
|
-
before :each do
|
|
566
|
-
request.fragment_set 'details'
|
|
567
|
-
end
|
|
568
|
-
|
|
569
|
-
it 'should have the same URI, with the changed fragment' do
|
|
570
|
-
request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
571
|
-
':123' +
|
|
572
|
-
'/search/deep?q=http&lang=en' +
|
|
573
|
-
'#details')
|
|
574
|
-
end
|
|
575
|
-
|
|
576
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
577
|
-
end
|
|
578
|
-
end
|
|
579
|
-
|
|
580
|
-
describe '-- when sent #fragment_unset --' do
|
|
581
|
-
before :each do
|
|
582
|
-
request.fragment_unset
|
|
583
|
-
end
|
|
584
|
-
|
|
585
|
-
it 'should have the same URI, without fragment' do
|
|
586
|
-
request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
587
|
-
'/search/deep?q=http&lang=en')
|
|
588
|
-
end
|
|
589
|
-
|
|
590
|
-
it_should_behave_like 'an empty, authenticated request'
|
|
591
|
-
end
|
|
592
|
-
|
|
593
|
-
describe '-- when sent #header_set with a new header' do
|
|
594
|
-
before :each do
|
|
595
|
-
request.header_set 'foo', 'bar'
|
|
596
|
-
end
|
|
597
|
-
|
|
598
|
-
it 'should have an unchanged URI' do
|
|
599
|
-
request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
600
|
-
'/search/deep?q=http&lang=en' +
|
|
601
|
-
'#content')
|
|
602
|
-
end
|
|
603
|
-
|
|
604
|
-
describe '--' do
|
|
605
|
-
it 'should have the header, plus the default headers' do
|
|
606
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
607
|
-
HTTY::VERSION],
|
|
608
|
-
['Authorization', 'Basic ' +
|
|
609
|
-
'bmpvbnNzb24='],
|
|
610
|
-
['foo', 'bar']]
|
|
611
|
-
end
|
|
612
|
-
end
|
|
613
|
-
|
|
614
|
-
describe 'and then #header_unset' do
|
|
615
|
-
describe 'with the same header name --' do
|
|
616
|
-
before :each do
|
|
617
|
-
request.header_unset 'foo'
|
|
618
|
-
end
|
|
619
|
-
|
|
620
|
-
it 'should have only the default headers' do
|
|
621
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
622
|
-
HTTY::VERSION],
|
|
623
|
-
['Authorization', 'Basic ' +
|
|
624
|
-
'bmpvbnNzb24=']]
|
|
625
|
-
end
|
|
626
|
-
end
|
|
627
|
-
|
|
628
|
-
describe 'with a different header name --' do
|
|
629
|
-
before :each do
|
|
630
|
-
request.header_unset 'qux'
|
|
631
|
-
end
|
|
632
|
-
|
|
633
|
-
it 'should have the header, plus the default headers' do
|
|
634
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
635
|
-
HTTY::VERSION],
|
|
636
|
-
['Authorization', 'Basic ' +
|
|
637
|
-
'bmpvbnNzb24='],
|
|
638
|
-
['foo', 'bar']]
|
|
639
|
-
end
|
|
640
|
-
end
|
|
641
|
-
end
|
|
642
|
-
|
|
643
|
-
describe 'and then #headers_unset_all --' do
|
|
644
|
-
before :each do
|
|
645
|
-
request.headers_unset_all
|
|
646
|
-
end
|
|
647
|
-
|
|
648
|
-
it 'should have no headers' do
|
|
649
|
-
request.headers.should be_empty
|
|
650
|
-
end
|
|
651
|
-
end
|
|
652
|
-
end
|
|
653
|
-
|
|
654
|
-
describe '-- when sent #cookie_add with a cookie' do
|
|
655
|
-
before :each do
|
|
656
|
-
request.cookie_add 'foo', 'bar'
|
|
657
|
-
end
|
|
658
|
-
|
|
659
|
-
it 'should have an unchanged URI' do
|
|
660
|
-
request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
661
|
-
'/search/deep?q=http&lang=en' +
|
|
662
|
-
'#content')
|
|
663
|
-
end
|
|
664
|
-
|
|
665
|
-
describe '--' do
|
|
666
|
-
it 'should have the cookie' do
|
|
667
|
-
request.cookies.should == [%w(foo bar)]
|
|
668
|
-
end
|
|
669
|
-
|
|
670
|
-
it 'should have the cookie header, plus the default headers' do
|
|
671
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
672
|
-
HTTY::VERSION],
|
|
673
|
-
['Authorization', 'Basic ' +
|
|
674
|
-
'bmpvbnNzb24='],
|
|
675
|
-
['Cookie', 'foo=bar']]
|
|
676
|
-
end
|
|
677
|
-
end
|
|
678
|
-
|
|
679
|
-
describe 'and then #cookie_add' do
|
|
680
|
-
describe 'with the same cookie name --' do
|
|
681
|
-
before :each do
|
|
682
|
-
request.cookie_add 'foo', 'qux'
|
|
683
|
-
end
|
|
684
|
-
|
|
685
|
-
it 'should have the new cookie, plus the old cookie' do
|
|
686
|
-
request.cookies.should == [%w(foo bar), %w(foo qux)]
|
|
687
|
-
end
|
|
688
|
-
|
|
689
|
-
it 'should have the new cookie header, plus the default ' +
|
|
690
|
-
'headers' do
|
|
691
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
692
|
-
HTTY::VERSION],
|
|
693
|
-
['Authorization', 'Basic ' +
|
|
694
|
-
'bmpvbnNzb24='],
|
|
695
|
-
['Cookie', 'foo=bar; ' +
|
|
696
|
-
'foo=qux']]
|
|
697
|
-
end
|
|
698
|
-
end
|
|
699
|
-
|
|
700
|
-
describe 'with a different cookie name --' do
|
|
701
|
-
before :each do
|
|
702
|
-
request.cookie_add 'baz', 'qux'
|
|
703
|
-
end
|
|
704
|
-
|
|
705
|
-
it 'should have the new cookie' do
|
|
706
|
-
request.cookies.should == [%w(foo bar), %w(baz qux)]
|
|
707
|
-
end
|
|
708
|
-
|
|
709
|
-
it 'should have the new cookie header, plus the default ' +
|
|
710
|
-
'headers' do
|
|
711
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
712
|
-
HTTY::VERSION],
|
|
713
|
-
['Authorization', 'Basic ' +
|
|
714
|
-
'bmpvbnNzb24='],
|
|
715
|
-
['Cookie', 'foo=bar; ' +
|
|
716
|
-
'baz=qux']]
|
|
717
|
-
end
|
|
718
|
-
end
|
|
719
|
-
|
|
720
|
-
describe 'with a different cookie name and no value --' do
|
|
721
|
-
before :each do
|
|
722
|
-
request.cookie_add 'baz'
|
|
723
|
-
end
|
|
724
|
-
|
|
725
|
-
it 'should have the new cookie' do
|
|
726
|
-
request.cookies.should == [['foo', 'bar'], ['baz', nil]]
|
|
727
|
-
end
|
|
728
|
-
|
|
729
|
-
it 'should have the new cookie header, plus the default ' +
|
|
730
|
-
'headers' do
|
|
731
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
732
|
-
HTTY::VERSION],
|
|
733
|
-
['Authorization', 'Basic ' +
|
|
734
|
-
'bmpvbnNzb24='],
|
|
735
|
-
['Cookie', 'foo=bar; baz']]
|
|
736
|
-
end
|
|
737
|
-
end
|
|
738
|
-
end
|
|
739
|
-
|
|
740
|
-
describe 'and then #cookie_remove' do
|
|
741
|
-
describe 'with the same cookie name --' do
|
|
742
|
-
before :each do
|
|
743
|
-
request.cookie_remove 'foo'
|
|
744
|
-
end
|
|
745
|
-
|
|
746
|
-
it 'should have no cookie' do
|
|
747
|
-
request.cookies.should be_empty
|
|
748
|
-
end
|
|
749
|
-
|
|
750
|
-
it 'should have only the default headers' do
|
|
751
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
752
|
-
HTTY::VERSION],
|
|
753
|
-
['Authorization', 'Basic ' +
|
|
754
|
-
'bmpvbnNzb24=']]
|
|
755
|
-
end
|
|
756
|
-
end
|
|
757
|
-
|
|
758
|
-
describe 'with a different cookie name --' do
|
|
759
|
-
before :each do
|
|
760
|
-
request.cookie_remove 'qux'
|
|
761
|
-
end
|
|
762
|
-
|
|
763
|
-
it 'should have the cookie' do
|
|
764
|
-
request.cookies.should == [%w(foo bar)]
|
|
765
|
-
end
|
|
766
|
-
|
|
767
|
-
it 'should have the cookie header, plus the default headers' do
|
|
768
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
769
|
-
HTTY::VERSION],
|
|
770
|
-
['Authorization', 'Basic ' +
|
|
771
|
-
'bmpvbnNzb24='],
|
|
772
|
-
['Cookie', 'foo=bar']]
|
|
773
|
-
end
|
|
774
|
-
end
|
|
775
|
-
end
|
|
776
|
-
|
|
777
|
-
describe 'and then #cookies_remove_all --' do
|
|
778
|
-
before :each do
|
|
779
|
-
request.cookies_remove_all
|
|
780
|
-
end
|
|
781
|
-
|
|
782
|
-
it 'should have no cookies' do
|
|
783
|
-
request.cookies.should be_empty
|
|
784
|
-
end
|
|
785
|
-
|
|
786
|
-
it 'should have only the default headers' do
|
|
787
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
788
|
-
HTTY::VERSION],
|
|
789
|
-
['Authorization', 'Basic ' +
|
|
790
|
-
'bmpvbnNzb24=']]
|
|
791
|
-
end
|
|
792
|
-
end
|
|
793
|
-
|
|
794
|
-
describe 'and then #address' do
|
|
795
|
-
describe 'with the same host --' do
|
|
796
|
-
before :each do
|
|
797
|
-
request.address 'http://github.com'
|
|
798
|
-
end
|
|
799
|
-
|
|
800
|
-
it 'should have the cookie' do
|
|
801
|
-
request.cookies.should == [%w(foo bar)]
|
|
802
|
-
end
|
|
803
|
-
|
|
804
|
-
it 'should have the cookie header, plus the default headers' do
|
|
805
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
806
|
-
HTTY::VERSION],
|
|
807
|
-
['Cookie', 'foo=bar']]
|
|
808
|
-
end
|
|
809
|
-
end
|
|
810
|
-
|
|
811
|
-
describe 'with a different host --' do
|
|
812
|
-
before :each do
|
|
813
|
-
request.address 'http://google.com'
|
|
814
|
-
end
|
|
815
|
-
|
|
816
|
-
it 'should have no cookies' do
|
|
817
|
-
request.cookies.should == []
|
|
818
|
-
request.cookies.should be_empty
|
|
819
|
-
end
|
|
820
|
-
|
|
821
|
-
it 'should have only the default headers' do
|
|
822
|
-
request.headers.should == [['User-Agent',
|
|
823
|
-
"htty/#{HTTY::VERSION}"]]
|
|
824
|
-
end
|
|
825
|
-
end
|
|
826
|
-
end
|
|
827
|
-
end
|
|
828
|
-
|
|
829
|
-
describe "-- when sent #cookie_add with a new cookie containing '='" do
|
|
830
|
-
before :each do
|
|
831
|
-
request.cookie_add 'foo', 'bar=baz=qux'
|
|
832
|
-
end
|
|
833
|
-
|
|
834
|
-
describe '--' do
|
|
835
|
-
it 'should have the cookie' do
|
|
836
|
-
request.cookies.should == [%w(foo bar=baz=qux)]
|
|
837
|
-
end
|
|
838
|
-
|
|
839
|
-
it 'should have the cookie header, plus the default headers' do
|
|
840
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
841
|
-
HTTY::VERSION],
|
|
842
|
-
['Authorization', 'Basic ' +
|
|
843
|
-
'bmpvbnNzb24='],
|
|
844
|
-
['Cookie', 'foo=bar=baz=qux']]
|
|
845
|
-
end
|
|
846
|
-
end
|
|
847
|
-
end
|
|
848
|
-
|
|
849
|
-
describe '-- when sent #body_set with a body' do
|
|
850
|
-
before :each do
|
|
851
|
-
request.body_set 'foo'
|
|
852
|
-
end
|
|
853
|
-
|
|
854
|
-
it 'should have an unchanged URI' do
|
|
855
|
-
request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
856
|
-
'/search/deep?q=http&lang=en' +
|
|
857
|
-
'#content')
|
|
858
|
-
end
|
|
859
|
-
|
|
860
|
-
describe '--' do
|
|
861
|
-
it 'should have the body' do
|
|
862
|
-
request.body.should == 'foo'
|
|
863
|
-
end
|
|
864
|
-
|
|
865
|
-
it 'should have only the default headers' do
|
|
866
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
867
|
-
HTTY::VERSION],
|
|
868
|
-
['Authorization', 'Basic ' +
|
|
869
|
-
'bmpvbnNzb24=']]
|
|
870
|
-
end
|
|
871
|
-
|
|
872
|
-
it "should have the expected 'Content-Length' header, plus the " +
|
|
873
|
-
"'User-Agent' header if we do not exclude the " +
|
|
874
|
-
"'Content-Length' header" do
|
|
875
|
-
request.headers(true).should == [['User-Agent', 'htty/' +
|
|
876
|
-
HTTY::VERSION],
|
|
877
|
-
['Authorization', 'Basic ' +
|
|
878
|
-
'bmpvbnNz' +
|
|
879
|
-
'b24='],
|
|
880
|
-
['Content-Length', '3']]
|
|
881
|
-
end
|
|
882
|
-
end
|
|
883
|
-
|
|
884
|
-
describe 'and then #body_unset' do
|
|
885
|
-
before :each do
|
|
886
|
-
request.body_unset
|
|
887
|
-
end
|
|
888
|
-
|
|
889
|
-
it 'should have no body' do
|
|
890
|
-
request.body.should be_nil
|
|
891
|
-
end
|
|
892
|
-
|
|
893
|
-
it 'should have only the default headers' do
|
|
894
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
895
|
-
HTTY::VERSION],
|
|
896
|
-
['Authorization', 'Basic ' +
|
|
897
|
-
'bmpvbnNzb24=']]
|
|
898
|
-
end
|
|
899
|
-
end
|
|
900
|
-
end
|
|
901
|
-
end
|
|
902
|
-
|
|
903
|
-
describe 'and with a response' do
|
|
904
|
-
let :response do
|
|
905
|
-
HTTY::Response.new
|
|
906
|
-
end
|
|
907
|
-
|
|
908
|
-
before :each do
|
|
909
|
-
request.send :response=, response
|
|
910
|
-
end
|
|
911
|
-
|
|
912
|
-
it 'should not affect the URI' do
|
|
913
|
-
request.uri.should == URI.parse('https://njonsson@github.com:123' +
|
|
914
|
-
'/search/deep?q=http&lang=en' +
|
|
915
|
-
'#content')
|
|
916
|
-
end
|
|
917
|
-
|
|
918
|
-
it 'should not affect the headers' do
|
|
919
|
-
request.headers.should == [['User-Agent', 'htty/' +
|
|
920
|
-
HTTY::VERSION],
|
|
921
|
-
['Authorization', 'Basic ' +
|
|
922
|
-
'bmpvbnNzb24=']]
|
|
923
|
-
end
|
|
924
|
-
|
|
925
|
-
it 'should not affect the body' do
|
|
926
|
-
request.body.should be_nil
|
|
927
|
-
end
|
|
928
|
-
|
|
929
|
-
it 'should not affect the response' do
|
|
930
|
-
request.response.should == response
|
|
931
|
-
end
|
|
932
|
-
|
|
933
|
-
describe '-- when sent #address with a different hostname --' do
|
|
934
|
-
let :new_request do
|
|
935
|
-
request.address 'mac.com'
|
|
936
|
-
end
|
|
937
|
-
|
|
938
|
-
it 'should return a request with an HTTP URI for the new host' do
|
|
939
|
-
new_request.uri.should == URI.parse('http://mac.com:80/')
|
|
940
|
-
end
|
|
941
|
-
|
|
942
|
-
it 'should return a request without a response' do
|
|
943
|
-
new_request.response.should be_nil
|
|
944
|
-
end
|
|
945
|
-
end
|
|
946
|
-
|
|
947
|
-
describe '-- when sent #scheme_set with a different scheme --' do
|
|
948
|
-
let :new_request do
|
|
949
|
-
request.scheme_set 'http'
|
|
950
|
-
end
|
|
951
|
-
|
|
952
|
-
it 'should return a request with the same URI having the changed ' +
|
|
953
|
-
'scheme' do
|
|
954
|
-
new_request.uri.should == URI.parse('http://njonsson@github.com' +
|
|
955
|
-
':123' +
|
|
956
|
-
'/search/deep?q=http&lang=en' +
|
|
957
|
-
'#content')
|
|
958
|
-
end
|
|
959
|
-
|
|
960
|
-
it 'should return a request without a response' do
|
|
961
|
-
new_request.response.should be_nil
|
|
962
|
-
end
|
|
963
|
-
end
|
|
964
|
-
|
|
965
|
-
describe '-- when sent #host_set with a different host --' do
|
|
966
|
-
let :new_request do
|
|
967
|
-
request.host_set 'gist.github.com'
|
|
968
|
-
end
|
|
969
|
-
|
|
970
|
-
it 'should return a request with the same URI having the changed ' +
|
|
971
|
-
'host' do
|
|
972
|
-
new_request.uri.should == URI.parse('https://' +
|
|
973
|
-
'njonsson@gist.github.com' +
|
|
974
|
-
':123' +
|
|
975
|
-
'/search/deep?q=http&lang=en' +
|
|
976
|
-
'#content')
|
|
977
|
-
end
|
|
978
|
-
|
|
979
|
-
it 'should return a request without a response' do
|
|
980
|
-
new_request.response.should be_nil
|
|
981
|
-
end
|
|
982
|
-
end
|
|
983
|
-
|
|
984
|
-
describe '-- when sent #port_set with a different port --' do
|
|
985
|
-
let :new_request do
|
|
986
|
-
request.port_set 8888
|
|
987
|
-
end
|
|
988
|
-
|
|
989
|
-
it 'should return a request with the same URI having the changed ' +
|
|
990
|
-
'port' do
|
|
991
|
-
new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
992
|
-
':8888' +
|
|
993
|
-
'/search/deep?q=http&lang=en' +
|
|
994
|
-
'#content')
|
|
995
|
-
end
|
|
996
|
-
|
|
997
|
-
it 'should return a request without a response' do
|
|
998
|
-
new_request.response.should be_nil
|
|
999
|
-
end
|
|
1000
|
-
end
|
|
1001
|
-
|
|
1002
|
-
describe '-- when sent #path_set with a different path --' do
|
|
1003
|
-
let :new_request do
|
|
1004
|
-
request.path_set 'foo'
|
|
1005
|
-
end
|
|
1006
|
-
|
|
1007
|
-
it 'should return a request with the same URI having the changed ' +
|
|
1008
|
-
'path' do
|
|
1009
|
-
new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1010
|
-
':123' +
|
|
1011
|
-
'/search/deep/foo' +
|
|
1012
|
-
'?q=http&lang=en#content')
|
|
1013
|
-
end
|
|
1014
|
-
|
|
1015
|
-
it 'should return a request without a response' do
|
|
1016
|
-
new_request.response.should be_nil
|
|
1017
|
-
end
|
|
1018
|
-
end
|
|
1019
|
-
|
|
1020
|
-
describe '-- when sent #query_set with a query parameter --' do
|
|
1021
|
-
let :new_request do
|
|
1022
|
-
request.query_set 'foo', 'bar'
|
|
1023
|
-
end
|
|
1024
|
-
|
|
1025
|
-
it 'should return a request with the same URI having the new query ' +
|
|
1026
|
-
'parameter' do
|
|
1027
|
-
new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1028
|
-
':123' +
|
|
1029
|
-
'/search/deep' +
|
|
1030
|
-
'?q=http&lang=en&foo=bar' +
|
|
1031
|
-
'#content')
|
|
1032
|
-
end
|
|
1033
|
-
|
|
1034
|
-
it 'should return a request without a response' do
|
|
1035
|
-
new_request.response.should be_nil
|
|
1036
|
-
end
|
|
1037
|
-
end
|
|
1038
|
-
|
|
1039
|
-
describe '-- when sent #query_unset with the first query ' +
|
|
1040
|
-
'parameter --' do
|
|
1041
|
-
let :new_request do
|
|
1042
|
-
request.query_unset 'q'
|
|
1043
|
-
end
|
|
1044
|
-
|
|
1045
|
-
it 'should return a request with the same URI missing the first ' +
|
|
1046
|
-
'query parameter' do
|
|
1047
|
-
new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1048
|
-
':123' +
|
|
1049
|
-
'/search/deep?lang=en#content')
|
|
1050
|
-
end
|
|
1051
|
-
|
|
1052
|
-
it 'should return a request without a response' do
|
|
1053
|
-
new_request.response.should be_nil
|
|
1054
|
-
end
|
|
1055
|
-
end
|
|
1056
|
-
|
|
1057
|
-
describe '-- when sent #query_unset_all --' do
|
|
1058
|
-
let :new_request do
|
|
1059
|
-
request.query_unset_all
|
|
1060
|
-
end
|
|
1061
|
-
|
|
1062
|
-
it 'should return a request with the same URI having no query ' +
|
|
1063
|
-
'string' do
|
|
1064
|
-
new_request.uri.should == URI.parse('https://' +
|
|
1065
|
-
'njonsson@github.com:123' +
|
|
1066
|
-
'/search/deep#content')
|
|
1067
|
-
end
|
|
1068
|
-
|
|
1069
|
-
it 'should return a request without a response' do
|
|
1070
|
-
new_request.response.should be_nil
|
|
1071
|
-
end
|
|
1072
|
-
end
|
|
1073
|
-
|
|
1074
|
-
describe '-- when sent #fragment_set with a different fragment --' do
|
|
1075
|
-
let :new_request do
|
|
1076
|
-
request.fragment_set 'details'
|
|
1077
|
-
end
|
|
1078
|
-
|
|
1079
|
-
it 'should return a request with the same URI having the changed ' +
|
|
1080
|
-
'fragment' do
|
|
1081
|
-
new_request.uri.should == URI.parse('https://njonsson@github.com' +
|
|
1082
|
-
':123' +
|
|
1083
|
-
'/search/deep?q=http&lang=en' +
|
|
1084
|
-
'#details')
|
|
1085
|
-
end
|
|
1086
|
-
|
|
1087
|
-
it 'should return a request without a response' do
|
|
1088
|
-
new_request.response.should be_nil
|
|
1089
|
-
end
|
|
1090
|
-
end
|
|
1091
|
-
|
|
1092
|
-
describe '-- when sent #fragment_unset --' do
|
|
1093
|
-
let :new_request do
|
|
1094
|
-
request.fragment_unset
|
|
1095
|
-
end
|
|
1096
|
-
|
|
1097
|
-
it 'should return a request with the same URI missing the fragment' do
|
|
1098
|
-
new_request.uri.should == URI.parse('https://' +
|
|
1099
|
-
'njonsson@github.com:123' +
|
|
1100
|
-
'/search/deep?q=http&lang=en')
|
|
1101
|
-
end
|
|
1102
|
-
|
|
1103
|
-
it 'should return a request without a response' do
|
|
1104
|
-
new_request.response.should be_nil
|
|
1105
|
-
end
|
|
1106
|
-
end
|
|
1107
|
-
|
|
1108
|
-
describe '-- when sent #header_set with a new header' do
|
|
1109
|
-
let :new_request do
|
|
1110
|
-
request.header_set 'foo', 'bar'
|
|
1111
|
-
end
|
|
1112
|
-
|
|
1113
|
-
it 'should return a request with an unchanged URI' do
|
|
1114
|
-
new_request.uri.should == URI.parse('https://' +
|
|
1115
|
-
'njonsson@github.com:123' +
|
|
1116
|
-
'/search/deep?q=http&lang=en' +
|
|
1117
|
-
'#content')
|
|
1118
|
-
end
|
|
1119
|
-
|
|
1120
|
-
it 'should return a request with no response' do
|
|
1121
|
-
new_request.response.should be_nil
|
|
1122
|
-
end
|
|
1123
|
-
|
|
1124
|
-
describe '--' do
|
|
1125
|
-
it 'should return a request with the header, plus the default ' +
|
|
1126
|
-
'headers' do
|
|
1127
|
-
new_request.headers.should == [['User-Agent', 'htty/' +
|
|
1128
|
-
HTTY::VERSION],
|
|
1129
|
-
['Authorization', 'Basic ' +
|
|
1130
|
-
'bmpvbnNzb24='],
|
|
1131
|
-
['foo', 'bar']]
|
|
1132
|
-
end
|
|
1133
|
-
|
|
1134
|
-
it 'should return a request without a response' do
|
|
1135
|
-
new_request.response.should be_nil
|
|
1136
|
-
end
|
|
1137
|
-
end
|
|
1138
|
-
|
|
1139
|
-
describe 'and then #header_unset' do
|
|
1140
|
-
describe 'with the same header name --' do
|
|
1141
|
-
let :new_request do
|
|
1142
|
-
request.header_unset 'foo'
|
|
1143
|
-
end
|
|
1144
|
-
|
|
1145
|
-
it 'should return a request with only the default headers' do
|
|
1146
|
-
new_request.headers.should == [['User-Agent', 'htty/' +
|
|
1147
|
-
HTTY::VERSION],
|
|
1148
|
-
['Authorization', 'Basic ' +
|
|
1149
|
-
'bmpvbnNzb2' +
|
|
1150
|
-
'4=']]
|
|
1151
|
-
end
|
|
1152
|
-
end
|
|
1153
|
-
end
|
|
1154
|
-
|
|
1155
|
-
describe 'and then #headers_unset_all --' do
|
|
1156
|
-
let :new_request do
|
|
1157
|
-
request.headers_unset_all
|
|
1158
|
-
end
|
|
1159
|
-
|
|
1160
|
-
it 'should return a request with no headers' do
|
|
1161
|
-
new_request.headers.should be_empty
|
|
1162
|
-
end
|
|
1163
|
-
end
|
|
1164
|
-
end
|
|
1165
|
-
|
|
1166
|
-
describe '-- when sent #body_set with a body' do
|
|
1167
|
-
let :new_request do
|
|
1168
|
-
request.body_set 'foo'
|
|
1169
|
-
end
|
|
1170
|
-
|
|
1171
|
-
it 'should return a request with an unchanged URI' do
|
|
1172
|
-
new_request.uri.should == URI.parse('https://' +
|
|
1173
|
-
'njonsson@github.com:123' +
|
|
1174
|
-
'/search/deep?q=http&lang=en' +
|
|
1175
|
-
'#content')
|
|
1176
|
-
end
|
|
1177
|
-
|
|
1178
|
-
it 'should return a request with no response' do
|
|
1179
|
-
new_request.response.should be_nil
|
|
1180
|
-
end
|
|
1181
|
-
|
|
1182
|
-
describe '--' do
|
|
1183
|
-
it 'should return a request with the body' do
|
|
1184
|
-
new_request.body.should == 'foo'
|
|
1185
|
-
end
|
|
1186
|
-
|
|
1187
|
-
it 'should return a request with only the default headers' do
|
|
1188
|
-
new_request.headers.should == [['User-Agent', 'htty/' +
|
|
1189
|
-
HTTY::VERSION],
|
|
1190
|
-
['Authorization', 'Basic ' +
|
|
1191
|
-
'bmpvbnNzb2' +
|
|
1192
|
-
'4=']]
|
|
1193
|
-
end
|
|
1194
|
-
|
|
1195
|
-
it "should return a request with the expected 'Content-Length' " +
|
|
1196
|
-
"header, plus the 'User-Agent' header if we do not exclude " +
|
|
1197
|
-
"the 'Content-Length' header" do
|
|
1198
|
-
new_request.headers(true).should == [['User-Agent', 'htty/' +
|
|
1199
|
-
HTTY::VERSION],
|
|
1200
|
-
['Authorization', 'Basic ' +
|
|
1201
|
-
'bmpvbn' +
|
|
1202
|
-
'Nzb24='],
|
|
1203
|
-
['Content-Length', '3']]
|
|
1204
|
-
end
|
|
1205
|
-
|
|
1206
|
-
it 'should return a request without a response' do
|
|
1207
|
-
new_request.response.should be_nil
|
|
1208
|
-
end
|
|
1209
|
-
end
|
|
1210
|
-
|
|
1211
|
-
describe 'and then #body_unset' do
|
|
1212
|
-
let :new_request do
|
|
1213
|
-
request.body_unset
|
|
1214
|
-
end
|
|
1215
|
-
|
|
1216
|
-
it 'should return a request with no body' do
|
|
1217
|
-
new_request.body.should be_nil
|
|
1218
|
-
end
|
|
1219
|
-
|
|
1220
|
-
it 'should return a request with only the default headers' do
|
|
1221
|
-
new_request.headers.should == [['User-Agent', 'htty/' +
|
|
1222
|
-
HTTY::VERSION],
|
|
1223
|
-
['Authorization', 'Basic ' +
|
|
1224
|
-
'bmpvbnNzb2' +
|
|
1225
|
-
'4=']]
|
|
1226
|
-
end
|
|
1227
|
-
end
|
|
1228
|
-
end
|
|
1229
|
-
end
|
|
1230
|
-
end
|
|
1231
|
-
end
|
|
1232
|
-
end
|