rubysl-net-http 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +0 -1
- data/.travis.yml +7 -0
- data/README.md +2 -2
- data/Rakefile +0 -1
- data/lib/net/http.rb +1 -0
- data/lib/rubysl/net/http.rb +2 -0
- data/lib/rubysl/net/http/http.rb +2290 -0
- data/lib/rubysl/net/http/https.rb +173 -0
- data/lib/{rubysl-net-http → rubysl/net/http}/version.rb +2 -2
- data/rubysl-net-http.gemspec +18 -18
- data/spec/HTTPBadResponse_spec.rb +7 -0
- data/spec/HTTPError_spec.rb +11 -0
- data/spec/HTTPFatalError_spec.rb +11 -0
- data/spec/HTTPHeaderSyntaxError_spec.rb +7 -0
- data/spec/HTTPRetriableError_spec.rb +11 -0
- data/spec/HTTPServerException_spec.rb +11 -0
- data/spec/http/Proxy_spec.rb +34 -0
- data/spec/http/active_spec.rb +7 -0
- data/spec/http/address_spec.rb +8 -0
- data/spec/http/close_on_empty_response_spec.rb +9 -0
- data/spec/http/copy_spec.rb +26 -0
- data/spec/http/default_port_spec.rb +7 -0
- data/spec/http/delete_spec.rb +26 -0
- data/spec/http/finish_spec.rb +30 -0
- data/spec/http/fixtures/http_server.rb +97 -0
- data/spec/http/get2_spec.rb +7 -0
- data/spec/http/get_print_spec.rb +28 -0
- data/spec/http/get_response_spec.rb +28 -0
- data/spec/http/get_spec.rb +52 -0
- data/spec/http/head2_spec.rb +8 -0
- data/spec/http/head_spec.rb +30 -0
- data/spec/http/http_default_port_spec.rb +7 -0
- data/spec/http/https_default_port_spec.rb +7 -0
- data/spec/http/initialize_spec.rb +45 -0
- data/spec/http/inspect_spec.rb +25 -0
- data/spec/http/is_version_1_1_spec.rb +6 -0
- data/spec/http/is_version_1_2_spec.rb +6 -0
- data/spec/http/lock_spec.rb +26 -0
- data/spec/http/mkcol_spec.rb +26 -0
- data/spec/http/move_spec.rb +30 -0
- data/spec/http/new_spec.rb +96 -0
- data/spec/http/newobj_spec.rb +47 -0
- data/spec/http/open_timeout_spec.rb +23 -0
- data/spec/http/options_spec.rb +30 -0
- data/spec/http/port_spec.rb +8 -0
- data/spec/http/post2_spec.rb +7 -0
- data/spec/http/post_form_spec.rb +20 -0
- data/spec/http/post_spec.rb +43 -0
- data/spec/http/propfind_spec.rb +29 -0
- data/spec/http/proppatch_spec.rb +29 -0
- data/spec/http/proxy_address_spec.rb +30 -0
- data/spec/http/proxy_class_spec.rb +8 -0
- data/spec/http/proxy_pass_spec.rb +38 -0
- data/spec/http/proxy_port_spec.rb +38 -0
- data/spec/http/proxy_user_spec.rb +38 -0
- data/spec/http/put2_spec.rb +7 -0
- data/spec/http/put_spec.rb +29 -0
- data/spec/http/read_timeout_spec.rb +23 -0
- data/spec/http/request_get_spec.rb +7 -0
- data/spec/http/request_head_spec.rb +7 -0
- data/spec/http/request_post_spec.rb +7 -0
- data/spec/http/request_put_spec.rb +7 -0
- data/spec/http/request_spec.rb +114 -0
- data/spec/http/request_types_spec.rb +253 -0
- data/spec/http/send_request_spec.rb +123 -0
- data/spec/http/set_debug_output_spec.rb +34 -0
- data/spec/http/shared/request_get.rb +49 -0
- data/spec/http/shared/request_head.rb +49 -0
- data/spec/http/shared/request_post.rb +49 -0
- data/spec/http/shared/request_put.rb +49 -0
- data/spec/http/shared/started.rb +28 -0
- data/spec/http/shared/version_1_1.rb +19 -0
- data/spec/http/shared/version_1_2.rb +6 -0
- data/spec/http/socket_type_spec.rb +7 -0
- data/spec/http/start_spec.rb +115 -0
- data/spec/http/started_spec.rb +7 -0
- data/spec/http/trace_spec.rb +29 -0
- data/spec/http/unlock_spec.rb +29 -0
- data/spec/http/use_ssl_spec.rb +8 -0
- data/spec/http/version_1_1_spec.rb +21 -0
- data/spec/http/version_1_2_spec.rb +19 -0
- data/spec/httpexceptions/fixtures/classes.rb +5 -0
- data/spec/httpexceptions/initialize_spec.rb +16 -0
- data/spec/httpexceptions/response_spec.rb +9 -0
- data/spec/httpgenericrequest/body_exist_spec.rb +26 -0
- data/spec/httpgenericrequest/body_spec.rb +29 -0
- data/spec/httpgenericrequest/body_stream_spec.rb +31 -0
- data/spec/httpgenericrequest/exec_spec.rb +135 -0
- data/spec/httpgenericrequest/inspect_spec.rb +24 -0
- data/spec/httpgenericrequest/method_spec.rb +14 -0
- data/spec/httpgenericrequest/path_spec.rb +11 -0
- data/spec/httpgenericrequest/request_body_permitted_spec.rb +11 -0
- data/spec/httpgenericrequest/response_body_permitted_spec.rb +11 -0
- data/spec/httpgenericrequest/set_body_internal_spec.rb +20 -0
- data/spec/httpheader/add_field_spec.rb +30 -0
- data/spec/httpheader/basic_auth_spec.rb +13 -0
- data/spec/httpheader/canonical_each_spec.rb +7 -0
- data/spec/httpheader/chunked_spec.rb +21 -0
- data/spec/httpheader/content_length_spec.rb +53 -0
- data/spec/httpheader/content_range_spec.rb +33 -0
- data/spec/httpheader/content_type_spec.rb +25 -0
- data/spec/httpheader/delete_spec.rb +29 -0
- data/spec/httpheader/each_capitalized_name_spec.rb +44 -0
- data/spec/httpheader/each_capitalized_spec.rb +8 -0
- data/spec/httpheader/each_header_spec.rb +7 -0
- data/spec/httpheader/each_key_spec.rb +7 -0
- data/spec/httpheader/each_name_spec.rb +7 -0
- data/spec/httpheader/each_spec.rb +7 -0
- data/spec/httpheader/each_value_spec.rb +45 -0
- data/spec/httpheader/element_reference_spec.rb +38 -0
- data/spec/httpheader/element_set_spec.rb +40 -0
- data/spec/httpheader/fetch_spec.rb +68 -0
- data/spec/httpheader/fixtures/classes.rb +11 -0
- data/spec/httpheader/form_data_spec.rb +7 -0
- data/spec/httpheader/get_fields_spec.rb +38 -0
- data/spec/httpheader/initialize_http_header_spec.rb +28 -0
- data/spec/httpheader/key_spec.rb +20 -0
- data/spec/httpheader/length_spec.rb +7 -0
- data/spec/httpheader/main_type_spec.rb +23 -0
- data/spec/httpheader/proxy_basic_auth_spec.rb +13 -0
- data/spec/httpheader/range_length_spec.rb +31 -0
- data/spec/httpheader/range_spec.rb +47 -0
- data/spec/httpheader/set_content_type_spec.rb +7 -0
- data/spec/httpheader/set_form_data_spec.rb +7 -0
- data/spec/httpheader/set_range_spec.rb +7 -0
- data/spec/httpheader/shared/each_capitalized.rb +42 -0
- data/spec/httpheader/shared/each_header.rb +42 -0
- data/spec/httpheader/shared/each_name.rb +39 -0
- data/spec/httpheader/shared/set_content_type.rb +20 -0
- data/spec/httpheader/shared/set_form_data.rb +27 -0
- data/spec/httpheader/shared/set_range.rb +89 -0
- data/spec/httpheader/shared/size.rb +18 -0
- data/spec/httpheader/size_spec.rb +7 -0
- data/spec/httpheader/sub_type_spec.rb +31 -0
- data/spec/httpheader/to_hash_spec.rb +24 -0
- data/spec/httpheader/type_params_spec.rb +23 -0
- data/spec/httprequest/initialize_spec.rb +44 -0
- data/spec/httpresponse/body_permitted_spec.rb +12 -0
- data/spec/httpresponse/body_spec.rb +6 -0
- data/spec/httpresponse/code_spec.rb +23 -0
- data/spec/httpresponse/code_type_spec.rb +23 -0
- data/spec/httpresponse/entity_spec.rb +6 -0
- data/spec/httpresponse/error_spec.rb +23 -0
- data/spec/httpresponse/error_type_spec.rb +23 -0
- data/spec/httpresponse/exception_type_spec.rb +12 -0
- data/spec/httpresponse/header_spec.rb +8 -0
- data/spec/httpresponse/http_version_spec.rb +11 -0
- data/spec/httpresponse/initialize_spec.rb +10 -0
- data/spec/httpresponse/inspect_spec.rb +14 -0
- data/spec/httpresponse/message_spec.rb +8 -0
- data/spec/httpresponse/msg_spec.rb +8 -0
- data/spec/httpresponse/read_body_spec.rb +85 -0
- data/spec/httpresponse/read_header_spec.rb +8 -0
- data/spec/httpresponse/read_new_spec.rb +21 -0
- data/spec/httpresponse/reading_body_spec.rb +57 -0
- data/spec/httpresponse/response_spec.rb +8 -0
- data/spec/httpresponse/shared/body.rb +18 -0
- data/spec/httpresponse/to_ary_spec.rb +25 -0
- data/spec/httpresponse/value_spec.rb +23 -0
- metadata +366 -88
- data/lib/rubysl-net-http.rb +0 -9
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::HTTPHeader#fetch" do
|
5
|
+
before(:each) do
|
6
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "when passed key" do
|
10
|
+
it "returns the header entry for the passed key" do
|
11
|
+
@headers["My-Header"] = "test"
|
12
|
+
@headers.fetch("My-Header").should == "test"
|
13
|
+
|
14
|
+
@headers.add_field("My-Other-Header", "a")
|
15
|
+
@headers.add_field("My-Other-Header", "b")
|
16
|
+
@headers.add_field("My-Other-Header", "c")
|
17
|
+
@headers.fetch("My-Other-Header").should == "a, b, c"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "is case-insensitive" do
|
21
|
+
@headers["My-Header"] = "test"
|
22
|
+
@headers.fetch("my-header").should == "test"
|
23
|
+
@headers.fetch("MY-HEADER").should == "test"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns nil when there is no entry for the passed key" do
|
27
|
+
lambda { @headers.fetch("my-header") }.should raise_error(IndexError)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "when passed key, default" do
|
32
|
+
it "returns the header entry for the passed key" do
|
33
|
+
@headers["My-Header"] = "test"
|
34
|
+
@headers.fetch("My-Header", "bla").should == "test"
|
35
|
+
|
36
|
+
@headers.add_field("My-Other-Header", "a")
|
37
|
+
@headers.add_field("My-Other-Header", "b")
|
38
|
+
@headers.add_field("My-Other-Header", "c")
|
39
|
+
@headers.fetch("My-Other-Header", "bla").should == "a, b, c"
|
40
|
+
end
|
41
|
+
|
42
|
+
# TODO: This raises a NoMethodError: undefined method `join' for "bla":String
|
43
|
+
ruby_bug "http://redmine.ruby-lang.org/issues/show/445", "1.8.7" do
|
44
|
+
it "returns the default value when there is no entry for the passed key" do
|
45
|
+
@headers.fetch("My-Header", "bla").should == "bla"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "when passed key and block" do
|
51
|
+
it "returns the header entry for the passed key" do
|
52
|
+
@headers["My-Header"] = "test"
|
53
|
+
@headers.fetch("My-Header") {}.should == "test"
|
54
|
+
|
55
|
+
@headers.add_field("My-Other-Header", "a")
|
56
|
+
@headers.add_field("My-Other-Header", "b")
|
57
|
+
@headers.add_field("My-Other-Header", "c")
|
58
|
+
@headers.fetch("My-Other-Header", "bla") {}.should == "a, b, c"
|
59
|
+
end
|
60
|
+
|
61
|
+
# TODO: This raises a NoMethodError: undefined method `join' for "redaeh-ym":String
|
62
|
+
ruby_bug "http://redmine.ruby-lang.org/issues/show/445", "1.8.7" do
|
63
|
+
it "yieldsand returns the block's return value when there is no entry for the passed key" do
|
64
|
+
@headers.fetch("My-Header") { |key| key.reverse }.should == "redaeh-ym"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::HTTPHeader#get_fields when passed key" do
|
5
|
+
before(:each) do
|
6
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns an Array containing the values of the header entry with the passed key" do
|
10
|
+
@headers["My-Header"] = "a"
|
11
|
+
@headers.get_fields("My-Header").should == ["a"]
|
12
|
+
|
13
|
+
@headers.add_field("My-Header", "b")
|
14
|
+
@headers.get_fields("My-Header").should == ["a", "b"]
|
15
|
+
end
|
16
|
+
|
17
|
+
it "returns a copy of the header entry values" do
|
18
|
+
@headers["My-Header"] = "a"
|
19
|
+
|
20
|
+
@headers.get_fields("My-Header").clear
|
21
|
+
@headers.get_fields("My-Header").should == ["a"]
|
22
|
+
|
23
|
+
@headers.get_fields("My-Header") << "b"
|
24
|
+
@headers.get_fields("My-Header").should == ["a"]
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns nil for non-existing header entries" do
|
28
|
+
@headers.get_fields("My-Header").should be_nil
|
29
|
+
@headers.get_fields("My-Other-header").should be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it "is case-insensitive" do
|
33
|
+
@headers["My-Header"] = "test"
|
34
|
+
@headers.get_fields("My-Header").should == ["test"]
|
35
|
+
@headers.get_fields("my-header").should == ["test"]
|
36
|
+
@headers.get_fields("MY-HEADER").should == ["test"]
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::HTTPHeader#initialize_http_header when passed Hash" do
|
5
|
+
before(:each) do
|
6
|
+
@headers = NetHTTPHeaderSpecs::Example.allocate
|
7
|
+
end
|
8
|
+
|
9
|
+
it "initializes the HTTP Header using the passed Hash" do
|
10
|
+
@headers.initialize_http_header("My-Header" => "test", "My-Other-Header" => "another test")
|
11
|
+
@headers["My-Header"].should == "test"
|
12
|
+
@headers["My-Other-Header"].should == "another test"
|
13
|
+
end
|
14
|
+
|
15
|
+
# TODO: Doesn't work, but works in IRB. No idea what's up here.
|
16
|
+
#
|
17
|
+
# it "complains about duplicate keys when in verbose mode" do
|
18
|
+
# old_verbose, $VERBOSE = $VERBOSE, true
|
19
|
+
#
|
20
|
+
# begin
|
21
|
+
# lambda do
|
22
|
+
# @headers.initialize_http_header("My-Header" => "test", "my-header" => "another test")
|
23
|
+
# end.should complain("net/http: warning: duplicated HTTP header: My-Header\n")
|
24
|
+
# ensure
|
25
|
+
# $VERBOSE = old_verbose
|
26
|
+
# end
|
27
|
+
# end
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::HTTPHeader#key? when passed key" do
|
5
|
+
before(:each) do
|
6
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns true if the header entry with the passed key exists" do
|
10
|
+
@headers.key?("My-Header").should be_false
|
11
|
+
@headers["My-Header"] = "test"
|
12
|
+
@headers.key?("My-Header").should be_true
|
13
|
+
end
|
14
|
+
|
15
|
+
it "is case-insensitive" do
|
16
|
+
@headers["My-Header"] = "test"
|
17
|
+
@headers.key?("my-header").should be_true
|
18
|
+
@headers.key?("MY-HEADER").should be_true
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::HTTPHeader#main_type" do
|
5
|
+
before(:each) do
|
6
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns the 'main-content-type', as per 'Content-Type' header entry" do
|
10
|
+
@headers["Content-Type"] = "text/html"
|
11
|
+
@headers.main_type.should == "text"
|
12
|
+
|
13
|
+
@headers["Content-Type"] = "application/pdf"
|
14
|
+
@headers.main_type.should == "application"
|
15
|
+
|
16
|
+
@headers["Content-Type"] = "text/html;charset=utf-8"
|
17
|
+
@headers.main_type.should == "text"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns nil if the 'Content-Type' header entry does not exist" do
|
21
|
+
@headers.main_type.should be_nil
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::HTTPHeader#proxy_basic_auth when passed account, password" do
|
5
|
+
before(:each) do
|
6
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "sets the 'Proxy-Authorization' Header entry for basic authorization" do
|
10
|
+
@headers.proxy_basic_auth("rubyspec", "rocks")
|
11
|
+
@headers["Proxy-Authorization"].should == "Basic cnVieXNwZWM6cm9ja3M="
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::HTTPHeader#range_length" do
|
5
|
+
before(:each) do
|
6
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns the length of the Range represented by the 'Content-Range' header entry" do
|
10
|
+
@headers["Content-Range"] = "bytes 0-499/1234"
|
11
|
+
@headers.range_length.should eql(500)
|
12
|
+
|
13
|
+
@headers["Content-Range"] = "bytes 500-1233/1234"
|
14
|
+
@headers.range_length.should eql(734)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "returns nil when there is no 'Content-Range' header entry" do
|
18
|
+
@headers.range_length.should be_nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it "raises a Net::HTTPHeaderSyntaxError when the 'Content-Range' has an invalid format" do
|
22
|
+
@headers["Content-Range"] = "invalid"
|
23
|
+
lambda { @headers.range_length }.should raise_error(Net::HTTPHeaderSyntaxError)
|
24
|
+
|
25
|
+
@headers["Content-Range"] = "bytes 123-abc"
|
26
|
+
lambda { @headers.range_length }.should raise_error(Net::HTTPHeaderSyntaxError)
|
27
|
+
|
28
|
+
@headers["Content-Range"] = "bytes abc-123"
|
29
|
+
lambda { @headers.range_length }.should raise_error(Net::HTTPHeaderSyntaxError)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
require File.expand_path('../shared/set_range', __FILE__)
|
4
|
+
|
5
|
+
describe "Net::HTTPHeader#range" do
|
6
|
+
before(:each) do
|
7
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns a Range object that represents the 'Range' header entry" do
|
11
|
+
@headers["Range"] = "bytes=0-499"
|
12
|
+
@headers.range.should == [0..499]
|
13
|
+
|
14
|
+
@headers["Range"] = "bytes=500-1233"
|
15
|
+
@headers.range.should == [500..1233]
|
16
|
+
|
17
|
+
@headers["Range"] = "bytes=10-"
|
18
|
+
@headers.range.should == [10..-1]
|
19
|
+
|
20
|
+
@headers["Range"] = "bytes=-10"
|
21
|
+
@headers.range.should == [-10..-1]
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns nil when there is no 'Range' header entry" do
|
25
|
+
@headers.range.should be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "raises a Net::HTTPHeaderSyntaxError when the 'Range' has an invalid format" do
|
29
|
+
@headers["Range"] = "invalid"
|
30
|
+
lambda { @headers.range }.should raise_error(Net::HTTPHeaderSyntaxError)
|
31
|
+
|
32
|
+
@headers["Range"] = "bytes 123-abc"
|
33
|
+
lambda { @headers.range }.should raise_error(Net::HTTPHeaderSyntaxError)
|
34
|
+
|
35
|
+
@headers["Range"] = "bytes abc-123"
|
36
|
+
lambda { @headers.range }.should raise_error(Net::HTTPHeaderSyntaxError)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "raises a Net::HTTPHeaderSyntaxError when the 'Range' was not specified" do
|
40
|
+
@headers["Range"] = "bytes=-"
|
41
|
+
lambda { @headers.range }.should raise_error(Net::HTTPHeaderSyntaxError)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "Net::HTTPHeader#range=" do
|
46
|
+
it_behaves_like :net_httpheader_set_range, :range=
|
47
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
3
|
+
require File.expand_path('../shared/set_content_type', __FILE__)
|
4
|
+
|
5
|
+
describe "Net::HTTPHeader#set_content_type" do
|
6
|
+
it_behaves_like :net_httpheader_set_content_type, :set_content_type
|
7
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
describe :net_httpheader_each_capitalized, :shared => true do
|
2
|
+
before(:each) do
|
3
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
4
|
+
@headers["my-header"] = "test"
|
5
|
+
@headers.add_field("my-Other-Header", "a")
|
6
|
+
@headers.add_field("My-Other-header", "b")
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "when passed a block" do
|
10
|
+
it "yields each header entry to the passed block (capitalized keys, values joined)" do
|
11
|
+
res = []
|
12
|
+
@headers.send(@method) do |key, value|
|
13
|
+
res << [key, value]
|
14
|
+
end
|
15
|
+
res.sort.should == [["My-Header", "test"], ["My-Other-Header", "a, b"]]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "when passed no block" do
|
20
|
+
ruby_version_is "" ... "1.8.7" do
|
21
|
+
it "raises a LocalJumpError" do
|
22
|
+
lambda { @headers.send(@method) }.should raise_error(LocalJumpError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# TODO: This should return an Enumerator and not raise an Error
|
27
|
+
ruby_version_is "1.8.7" do
|
28
|
+
ruby_bug "http://redmine.ruby-lang.org/issues/show/447", "1.8.7" do
|
29
|
+
it "returns an Enumerator" do
|
30
|
+
enumerator = @headers.send(@method)
|
31
|
+
enumerator.should be_an_instance_of(enumerator_class)
|
32
|
+
|
33
|
+
res = []
|
34
|
+
enumerator.each do |*key|
|
35
|
+
res << key
|
36
|
+
end
|
37
|
+
res.sort.should == [["My-Header", "test"], ["My-Other-Header", "a, b"]]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
describe :net_httpheader_each_header, :shared => true do
|
2
|
+
before(:each) do
|
3
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
4
|
+
@headers["My-Header"] = "test"
|
5
|
+
@headers.add_field("My-Other-Header", "a")
|
6
|
+
@headers.add_field("My-Other-Header", "b")
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "when passed a block" do
|
10
|
+
it "yields each header entry to the passed block (keys in lower case, values joined)" do
|
11
|
+
res = []
|
12
|
+
@headers.send(@method) do |key, value|
|
13
|
+
res << [key, value]
|
14
|
+
end
|
15
|
+
res.sort.should == [["my-header", "test"], ["my-other-header", "a, b"]]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "when passed no block" do
|
20
|
+
ruby_version_is "" ... "1.8.7" do
|
21
|
+
it "raises a LocalJumpError" do
|
22
|
+
lambda { @headers.send(@method) }.should raise_error(LocalJumpError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# TODO: This should return an Enumerator and not raise an Error
|
27
|
+
ruby_version_is "1.8.7" do
|
28
|
+
ruby_bug "http://redmine.ruby-lang.org/issues/show/447", "1.8.7" do
|
29
|
+
it "returns an Enumerator" do
|
30
|
+
enumerator = @headers.send(@method)
|
31
|
+
enumerator.should be_an_instance_of(enumerator_class)
|
32
|
+
|
33
|
+
res = []
|
34
|
+
enumerator.each do |*key|
|
35
|
+
res << key
|
36
|
+
end
|
37
|
+
res.sort.should == [["my-header", "test"], ["my-other-header", "a, b"]]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
describe :net_httpheader_each_name, :shared => true do
|
2
|
+
before(:each) do
|
3
|
+
@headers = NetHTTPHeaderSpecs::Example.new
|
4
|
+
@headers["My-Header"] = "test"
|
5
|
+
@headers.add_field("My-Other-Header", "a")
|
6
|
+
@headers.add_field("My-Other-Header", "b")
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "when passed a block" do
|
10
|
+
it "yields each header key to the passed block (keys in lower case)" do
|
11
|
+
res = []
|
12
|
+
@headers.send(@method) do |key|
|
13
|
+
res << key
|
14
|
+
end
|
15
|
+
res.sort.should == ["my-header", "my-other-header"]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "when passed no block" do
|
20
|
+
ruby_version_is "" ... "1.8.7" do
|
21
|
+
it "raises a LocalJumpError" do
|
22
|
+
lambda { @headers.send(@method) }.should raise_error(LocalJumpError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
ruby_version_is "1.8.7" do
|
27
|
+
it "returns an Enumerator" do
|
28
|
+
enumerator = @headers.send(@method)
|
29
|
+
enumerator.should be_an_instance_of(enumerator_class)
|
30
|
+
|
31
|
+
res = []
|
32
|
+
enumerator.each do |key|
|
33
|
+
res << key
|
34
|
+
end
|
35
|
+
res.sort.should == ["my-header", "my-other-header"]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|