cotweet-fakeweb 1.3.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/.autotest +5 -0
- data/.gitignore +7 -0
- data/CHANGELOG +215 -0
- data/LICENSE.txt +19 -0
- data/README.rdoc +189 -0
- data/Rakefile +67 -0
- data/fakeweb.gemspec +126 -0
- data/lib/fake_web.rb +215 -0
- data/lib/fake_web/ext/net_http.rb +72 -0
- data/lib/fake_web/registry.rb +127 -0
- data/lib/fake_web/responder.rb +122 -0
- data/lib/fake_web/response.rb +10 -0
- data/lib/fake_web/stub_socket.rb +15 -0
- data/lib/fake_web/utility.rb +90 -0
- data/lib/fakeweb.rb +2 -0
- data/test/fixtures/google_response_from_curl +12 -0
- data/test/fixtures/google_response_with_transfer_encoding +17 -0
- data/test/fixtures/google_response_without_transfer_encoding +11 -0
- data/test/fixtures/test_example.txt +1 -0
- data/test/fixtures/test_txt_file +3 -0
- data/test/test_allow_net_connect.rb +168 -0
- data/test/test_deprecations.rb +54 -0
- data/test/test_fake_authentication.rb +92 -0
- data/test/test_fake_web.rb +590 -0
- data/test/test_fake_web_open_uri.rb +58 -0
- data/test/test_helper.rb +90 -0
- data/test/test_last_request.rb +29 -0
- data/test/test_missing_open_uri.rb +25 -0
- data/test/test_missing_pathname.rb +37 -0
- data/test/test_other_net_http_libraries.rb +36 -0
- data/test/test_precedence.rb +79 -0
- data/test/test_query_string.rb +45 -0
- data/test/test_regexes.rb +157 -0
- data/test/test_response_headers.rb +79 -0
- data/test/test_trailing_slashes.rb +53 -0
- data/test/test_utility.rb +83 -0
- data/test/vendor/right_http_connection-1.2.4/History.txt +59 -0
- data/test/vendor/right_http_connection-1.2.4/Manifest.txt +7 -0
- data/test/vendor/right_http_connection-1.2.4/README.txt +54 -0
- data/test/vendor/right_http_connection-1.2.4/Rakefile +103 -0
- data/test/vendor/right_http_connection-1.2.4/lib/net_fix.rb +160 -0
- data/test/vendor/right_http_connection-1.2.4/lib/right_http_connection.rb +435 -0
- data/test/vendor/right_http_connection-1.2.4/setup.rb +1585 -0
- data/test/vendor/samuel-0.2.1/.document +5 -0
- data/test/vendor/samuel-0.2.1/.gitignore +5 -0
- data/test/vendor/samuel-0.2.1/LICENSE +20 -0
- data/test/vendor/samuel-0.2.1/README.rdoc +70 -0
- data/test/vendor/samuel-0.2.1/Rakefile +62 -0
- data/test/vendor/samuel-0.2.1/VERSION +1 -0
- data/test/vendor/samuel-0.2.1/lib/samuel.rb +52 -0
- data/test/vendor/samuel-0.2.1/lib/samuel/net_http.rb +10 -0
- data/test/vendor/samuel-0.2.1/lib/samuel/request.rb +96 -0
- data/test/vendor/samuel-0.2.1/samuel.gemspec +69 -0
- data/test/vendor/samuel-0.2.1/test/request_test.rb +193 -0
- data/test/vendor/samuel-0.2.1/test/samuel_test.rb +42 -0
- data/test/vendor/samuel-0.2.1/test/test_helper.rb +66 -0
- data/test/vendor/samuel-0.2.1/test/thread_test.rb +32 -0
- metadata +167 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TestDeprecations < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_register_uri_without_method_argument_prints_deprecation_warning
|
|
6
|
+
warning = capture_stderr do
|
|
7
|
+
FakeWeb.register_uri("http://example.com", :body => "test")
|
|
8
|
+
end
|
|
9
|
+
assert_match %r(deprecation warning: fakeweb)i, warning
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_registered_uri_without_method_argument_prints_deprecation_warning
|
|
13
|
+
warning = capture_stderr do
|
|
14
|
+
FakeWeb.registered_uri?("http://example.com")
|
|
15
|
+
end
|
|
16
|
+
assert_match %r(deprecation warning: fakeweb)i, warning
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_response_for_without_method_argument_prints_deprecation_warning
|
|
20
|
+
warning = capture_stderr do
|
|
21
|
+
FakeWeb.response_for("http://example.com")
|
|
22
|
+
end
|
|
23
|
+
assert_match %r(deprecation warning: fakeweb)i, warning
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_register_uri_without_method_argument_prints_deprecation_warning_with_correct_caller
|
|
27
|
+
warning = capture_stderr do
|
|
28
|
+
FakeWeb.register_uri("http://example.com", :body => "test")
|
|
29
|
+
end
|
|
30
|
+
assert_match %r(Called at.*?test_deprecations\.rb)i, warning
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_register_uri_with_string_option_prints_deprecation_warning
|
|
34
|
+
warning = capture_stderr do
|
|
35
|
+
FakeWeb.register_uri(:get, "http://example.com", :string => "test")
|
|
36
|
+
end
|
|
37
|
+
assert_match %r(deprecation warning: fakeweb's :string option)i, warning
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_register_uri_with_file_option_prints_deprecation_warning
|
|
41
|
+
warning = capture_stderr do
|
|
42
|
+
FakeWeb.register_uri(:get, "http://example.com", :file => fixture_path("test_example.txt"))
|
|
43
|
+
end
|
|
44
|
+
assert_match %r(deprecation warning: fakeweb's :file option)i, warning
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_register_uri_with_string_option_prints_deprecation_warning_with_correct_caller
|
|
48
|
+
warning = capture_stderr do
|
|
49
|
+
FakeWeb.register_uri(:get, "http://example.com", :string => "test")
|
|
50
|
+
end
|
|
51
|
+
assert_match %r(Called at.*?test_deprecations\.rb)i, warning
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TestFakeAuthentication < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_register_uri_with_authentication
|
|
6
|
+
FakeWeb.register_uri(:get, 'http://user:pass@mock/test_example.txt', :body => "example")
|
|
7
|
+
assert FakeWeb.registered_uri?(:get, 'http://user:pass@mock/test_example.txt')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_register_uri_with_authentication_doesnt_trigger_without
|
|
11
|
+
FakeWeb.register_uri(:get, 'http://user:pass@mock/test_example.txt', :body => "example")
|
|
12
|
+
assert !FakeWeb.registered_uri?(:get, 'http://mock/test_example.txt')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_register_uri_with_authentication_doesnt_trigger_with_incorrect_credentials
|
|
16
|
+
FakeWeb.register_uri(:get, 'http://user:pass@mock/test_example.txt', :body => "example")
|
|
17
|
+
assert !FakeWeb.registered_uri?(:get, 'http://user:wrong@mock/test_example.txt')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_unauthenticated_request
|
|
21
|
+
FakeWeb.register_uri(:get, 'http://mock/auth.txt', :body => 'unauthorized')
|
|
22
|
+
http = Net::HTTP.new('mock', 80)
|
|
23
|
+
req = Net::HTTP::Get.new('/auth.txt')
|
|
24
|
+
assert_equal 'unauthorized', http.request(req).body
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_authenticated_request
|
|
28
|
+
FakeWeb.register_uri(:get, 'http://user:pass@mock/auth.txt', :body => 'authorized')
|
|
29
|
+
http = Net::HTTP.new('mock',80)
|
|
30
|
+
req = Net::HTTP::Get.new('/auth.txt')
|
|
31
|
+
req.basic_auth 'user', 'pass'
|
|
32
|
+
assert_equal 'authorized', http.request(req).body
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_authenticated_request_where_only_userinfo_differs
|
|
36
|
+
FakeWeb.register_uri(:get, 'http://user:pass@mock/auth.txt', :body => 'first user')
|
|
37
|
+
FakeWeb.register_uri(:get, 'http://user2:pass@mock/auth.txt', :body => 'second user')
|
|
38
|
+
http = Net::HTTP.new('mock')
|
|
39
|
+
req = Net::HTTP::Get.new('/auth.txt')
|
|
40
|
+
req.basic_auth 'user2', 'pass'
|
|
41
|
+
assert_equal 'second user', http.request(req).body
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_basic_auth_support_is_transparent_to_oauth
|
|
45
|
+
FakeWeb.register_uri(:get, "http://sp.example.com/protected", :body => "secret")
|
|
46
|
+
|
|
47
|
+
# from http://oauth.net/core/1.0/#auth_header
|
|
48
|
+
auth_header = <<-HEADER
|
|
49
|
+
OAuth realm="http://sp.example.com/",
|
|
50
|
+
oauth_consumer_key="0685bd9184jfhq22",
|
|
51
|
+
oauth_token="ad180jjd733klru7",
|
|
52
|
+
oauth_signature_method="HMAC-SHA1",
|
|
53
|
+
oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
|
|
54
|
+
oauth_timestamp="137131200",
|
|
55
|
+
oauth_nonce="4572616e48616d6d65724c61686176",
|
|
56
|
+
oauth_version="1.0"
|
|
57
|
+
HEADER
|
|
58
|
+
auth_header.gsub!(/\s+/, " ").strip!
|
|
59
|
+
|
|
60
|
+
http = Net::HTTP.new("sp.example.com", 80)
|
|
61
|
+
response = nil
|
|
62
|
+
http.start do |request|
|
|
63
|
+
response = request.get("/protected", {"authorization" => auth_header})
|
|
64
|
+
end
|
|
65
|
+
assert_equal "secret", response.body
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_basic_auth_when_userinfo_contains_allowed_unencoded_characters
|
|
69
|
+
FakeWeb.register_uri(:get, "http://roses&hel1o,(+$):so;longs=@example.com", :body => "authorized")
|
|
70
|
+
http = Net::HTTP.new("example.com")
|
|
71
|
+
request = Net::HTTP::Get.new("/")
|
|
72
|
+
request.basic_auth("roses&hel1o,(+$)", "so;longs=")
|
|
73
|
+
assert_equal "authorized", http.request(request).body
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_basic_auth_when_userinfo_contains_encoded_at_sign
|
|
77
|
+
FakeWeb.register_uri(:get, "http://user%40example.com:secret@example.com", :body => "authorized")
|
|
78
|
+
http = Net::HTTP.new("example.com")
|
|
79
|
+
request = Net::HTTP::Get.new("/")
|
|
80
|
+
request.basic_auth("user@example.com", "secret")
|
|
81
|
+
assert_equal "authorized", http.request(request).body
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_basic_auth_when_userinfo_contains_allowed_encoded_characters
|
|
85
|
+
FakeWeb.register_uri(:get, "http://us%20er:sec%20%2F%2Fret%3F@example.com", :body => "authorized")
|
|
86
|
+
http = Net::HTTP.new("example.com")
|
|
87
|
+
request = Net::HTTP::Get.new("/")
|
|
88
|
+
request.basic_auth("us er", "sec //ret?")
|
|
89
|
+
assert_equal "authorized", http.request(request).body
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TestFakeWeb < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_register_uri
|
|
6
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => "example")
|
|
7
|
+
assert FakeWeb.registered_uri?(:get, 'http://mock/test_example.txt')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_register_uri_with_wrong_number_of_arguments
|
|
11
|
+
assert_raises ArgumentError do
|
|
12
|
+
FakeWeb.register_uri("http://example.com")
|
|
13
|
+
end
|
|
14
|
+
assert_raises ArgumentError do
|
|
15
|
+
FakeWeb.register_uri(:get, "http://example.com", "/example", :body => "example")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_registered_uri_with_wrong_number_of_arguments
|
|
20
|
+
assert_raises ArgumentError do
|
|
21
|
+
FakeWeb.registered_uri?
|
|
22
|
+
end
|
|
23
|
+
assert_raises ArgumentError do
|
|
24
|
+
FakeWeb.registered_uri?(:get, "http://example.com", "/example")
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_response_for_with_wrong_number_of_arguments
|
|
29
|
+
assert_raises ArgumentError do
|
|
30
|
+
FakeWeb.response_for
|
|
31
|
+
end
|
|
32
|
+
assert_raises ArgumentError do
|
|
33
|
+
FakeWeb.response_for(:get, "http://example.com", "/example")
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_register_uri_without_domain_name
|
|
38
|
+
assert_raises URI::InvalidURIError do
|
|
39
|
+
FakeWeb.register_uri(:get, 'test_example2.txt', fixture_path("test_example.txt"))
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_register_uri_with_port_and_check_with_port
|
|
44
|
+
FakeWeb.register_uri(:get, 'http://example.com:3000/', :body => 'foo')
|
|
45
|
+
assert FakeWeb.registered_uri?(:get, 'http://example.com:3000/')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_register_uri_with_port_and_check_without_port
|
|
49
|
+
FakeWeb.register_uri(:get, 'http://example.com:3000/', :body => 'foo')
|
|
50
|
+
assert !FakeWeb.registered_uri?(:get, 'http://example.com/')
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_register_uri_with_default_port_for_http_and_check_without_port
|
|
54
|
+
FakeWeb.register_uri(:get, 'http://example.com:80/', :body => 'foo')
|
|
55
|
+
assert FakeWeb.registered_uri?(:get, 'http://example.com/')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_register_uri_with_default_port_for_https_and_check_without_port
|
|
59
|
+
FakeWeb.register_uri(:get, 'https://example.com:443/', :body => 'foo')
|
|
60
|
+
assert FakeWeb.registered_uri?(:get, 'https://example.com/')
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_register_uri_with_no_port_for_http_and_check_with_default_port
|
|
64
|
+
FakeWeb.register_uri(:get, 'http://example.com/', :body => 'foo')
|
|
65
|
+
assert FakeWeb.registered_uri?(:get, 'http://example.com:80/')
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_register_uri_with_no_port_for_https_and_check_with_default_port
|
|
69
|
+
FakeWeb.register_uri(:get, 'https://example.com/', :body => 'foo')
|
|
70
|
+
assert FakeWeb.registered_uri?(:get, 'https://example.com:443/')
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_register_uri_with_no_port_for_https_and_check_with_443_on_http
|
|
74
|
+
FakeWeb.register_uri(:get, 'https://example.com/', :body => 'foo')
|
|
75
|
+
assert !FakeWeb.registered_uri?(:get, 'http://example.com:443/')
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_register_uri_with_no_port_for_http_and_check_with_80_on_https
|
|
79
|
+
FakeWeb.register_uri(:get, 'http://example.com/', :body => 'foo')
|
|
80
|
+
assert !FakeWeb.registered_uri?(:get, 'https://example.com:80/')
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_register_uri_for_any_method_explicitly
|
|
84
|
+
FakeWeb.register_uri(:any, "http://example.com/rpc_endpoint", :body => "OK")
|
|
85
|
+
assert FakeWeb.registered_uri?(:get, "http://example.com/rpc_endpoint")
|
|
86
|
+
assert FakeWeb.registered_uri?(:post, "http://example.com/rpc_endpoint")
|
|
87
|
+
assert FakeWeb.registered_uri?(:put, "http://example.com/rpc_endpoint")
|
|
88
|
+
assert FakeWeb.registered_uri?(:delete, "http://example.com/rpc_endpoint")
|
|
89
|
+
assert FakeWeb.registered_uri?(:any, "http://example.com/rpc_endpoint")
|
|
90
|
+
capture_stderr do # silence deprecation warning
|
|
91
|
+
assert FakeWeb.registered_uri?("http://example.com/rpc_endpoint")
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def test_register_uri_for_get_method_only
|
|
96
|
+
FakeWeb.register_uri(:get, "http://example.com/users", :body => "User list")
|
|
97
|
+
assert FakeWeb.registered_uri?(:get, "http://example.com/users")
|
|
98
|
+
assert !FakeWeb.registered_uri?(:post, "http://example.com/users")
|
|
99
|
+
assert !FakeWeb.registered_uri?(:put, "http://example.com/users")
|
|
100
|
+
assert !FakeWeb.registered_uri?(:delete, "http://example.com/users")
|
|
101
|
+
assert !FakeWeb.registered_uri?(:any, "http://example.com/users")
|
|
102
|
+
capture_stderr do # silence deprecation warning
|
|
103
|
+
assert !FakeWeb.registered_uri?("http://example.com/users")
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_clean_registry_affects_registered_uri
|
|
108
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => "registered")
|
|
109
|
+
assert FakeWeb.registered_uri?(:get, "http://example.com")
|
|
110
|
+
FakeWeb.clean_registry
|
|
111
|
+
assert !FakeWeb.registered_uri?(:get, "http://example.com")
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def test_clean_registry_affects_net_http_requests
|
|
115
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => "registered")
|
|
116
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/") }
|
|
117
|
+
assert_equal "registered", response.body
|
|
118
|
+
FakeWeb.clean_registry
|
|
119
|
+
assert_raise FakeWeb::NetConnectNotAllowedError do
|
|
120
|
+
Net::HTTP.start("example.com") { |query| query.get("/") }
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def test_response_for_with_registered_uri
|
|
125
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => fixture_path("test_example.txt"))
|
|
126
|
+
assert_equal 'test example content', FakeWeb.response_for(:get, 'http://mock/test_example.txt').body
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_response_for_with_unknown_uri
|
|
130
|
+
assert_nil FakeWeb.response_for(:get, 'http://example.com/')
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_response_for_with_put_method
|
|
134
|
+
FakeWeb.register_uri(:put, "http://example.com", :body => "response")
|
|
135
|
+
assert_equal 'response', FakeWeb.response_for(:put, "http://example.com").body
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def test_response_for_with_any_method_explicitly
|
|
139
|
+
FakeWeb.register_uri(:any, "http://example.com", :body => "response")
|
|
140
|
+
assert_equal 'response', FakeWeb.response_for(:get, "http://example.com").body
|
|
141
|
+
assert_equal 'response', FakeWeb.response_for(:any, "http://example.com").body
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_content_for_registered_uri_with_port_and_request_with_port
|
|
145
|
+
FakeWeb.register_uri(:get, 'http://example.com:3000/', :body => 'test example content')
|
|
146
|
+
response = Net::HTTP.start('example.com', 3000) { |http| http.get('/') }
|
|
147
|
+
assert_equal 'test example content', response.body
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def test_content_for_registered_uri_with_default_port_for_http_and_request_without_port
|
|
151
|
+
FakeWeb.register_uri(:get, 'http://example.com:80/', :body => 'test example content')
|
|
152
|
+
response = Net::HTTP.start('example.com') { |http| http.get('/') }
|
|
153
|
+
assert_equal 'test example content', response.body
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def test_content_for_registered_uri_with_no_port_for_http_and_request_with_default_port
|
|
157
|
+
FakeWeb.register_uri(:get, 'http://example.com/', :body => 'test example content')
|
|
158
|
+
response = Net::HTTP.start('example.com', 80) { |http| http.get('/') }
|
|
159
|
+
assert_equal 'test example content', response.body
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def test_content_for_registered_uri_with_default_port_for_https_and_request_with_default_port
|
|
163
|
+
FakeWeb.register_uri(:get, 'https://example.com:443/', :body => 'test example content')
|
|
164
|
+
http = Net::HTTP.new('example.com', 443)
|
|
165
|
+
http.use_ssl = true
|
|
166
|
+
response = http.get('/')
|
|
167
|
+
assert_equal 'test example content', response.body
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def test_content_for_registered_uri_with_no_port_for_https_and_request_with_default_port
|
|
171
|
+
FakeWeb.register_uri(:get, 'https://example.com/', :body => 'test example content')
|
|
172
|
+
http = Net::HTTP.new('example.com', 443)
|
|
173
|
+
http.use_ssl = true
|
|
174
|
+
response = http.get('/')
|
|
175
|
+
assert_equal 'test example content', response.body
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def test_content_for_registered_uris_with_ports_on_same_domain_and_request_without_port
|
|
179
|
+
FakeWeb.register_uri(:get, 'http://example.com:3000/', :body => 'port 3000')
|
|
180
|
+
FakeWeb.register_uri(:get, 'http://example.com/', :body => 'port 80')
|
|
181
|
+
response = Net::HTTP.start('example.com') { |http| http.get('/') }
|
|
182
|
+
assert_equal 'port 80', response.body
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def test_content_for_registered_uris_with_ports_on_same_domain_and_request_with_port
|
|
186
|
+
FakeWeb.register_uri(:get, 'http://example.com:3000/', :body => 'port 3000')
|
|
187
|
+
FakeWeb.register_uri(:get, 'http://example.com/', :body => 'port 80')
|
|
188
|
+
response = Net::HTTP.start('example.com', 3000) { |http| http.get('/') }
|
|
189
|
+
assert_equal 'port 3000', response.body
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def test_content_for_registered_uri_with_get_method_only
|
|
193
|
+
FakeWeb.allow_net_connect = false
|
|
194
|
+
FakeWeb.register_uri(:get, "http://example.com/", :body => "test example content")
|
|
195
|
+
http = Net::HTTP.new('example.com')
|
|
196
|
+
assert_equal 'test example content', http.get('/').body
|
|
197
|
+
assert_raises(FakeWeb::NetConnectNotAllowedError) { http.post('/', nil) }
|
|
198
|
+
assert_raises(FakeWeb::NetConnectNotAllowedError) { http.put('/', nil) }
|
|
199
|
+
assert_raises(FakeWeb::NetConnectNotAllowedError) { http.delete('/') }
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_content_for_registered_uri_with_any_method_explicitly
|
|
203
|
+
FakeWeb.allow_net_connect = false
|
|
204
|
+
FakeWeb.register_uri(:any, "http://example.com/", :body => "test example content")
|
|
205
|
+
http = Net::HTTP.new('example.com')
|
|
206
|
+
assert_equal 'test example content', http.get('/').body
|
|
207
|
+
assert_equal 'test example content', http.post('/', nil).body
|
|
208
|
+
assert_equal 'test example content', http.put('/', nil).body
|
|
209
|
+
assert_equal 'test example content', http.delete('/').body
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def test_content_for_registered_uri_with_any_method_implicitly
|
|
213
|
+
FakeWeb.allow_net_connect = false
|
|
214
|
+
capture_stderr do # silence deprecation warning
|
|
215
|
+
FakeWeb.register_uri("http://example.com/", :body => "test example content")
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
http = Net::HTTP.new('example.com')
|
|
219
|
+
assert_equal 'test example content', http.get('/').body
|
|
220
|
+
assert_equal 'test example content', http.post('/', nil).body
|
|
221
|
+
assert_equal 'test example content', http.put('/', nil).body
|
|
222
|
+
assert_equal 'test example content', http.delete('/').body
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def test_mock_request_with_block
|
|
226
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => fixture_path("test_example.txt"))
|
|
227
|
+
response = Net::HTTP.start('mock') { |http| http.get('/test_example.txt') }
|
|
228
|
+
assert_equal 'test example content', response.body
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def test_request_with_registered_body_yields_the_response_body_to_a_request_block
|
|
232
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => "content")
|
|
233
|
+
body = nil
|
|
234
|
+
Net::HTTP.start("example.com") do |http|
|
|
235
|
+
http.get("/") do |response_body|
|
|
236
|
+
body = response_body
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
assert_equal "content", body
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def test_request_with_registered_response_yields_the_response_body_to_a_request_block
|
|
243
|
+
fake_response = Net::HTTPOK.new('1.1', '200', 'OK')
|
|
244
|
+
fake_response.instance_variable_set(:@body, "content")
|
|
245
|
+
FakeWeb.register_uri(:get, 'http://example.com', :response => fake_response)
|
|
246
|
+
body = nil
|
|
247
|
+
Net::HTTP.start("example.com") do |http|
|
|
248
|
+
http.get("/") do |response_body|
|
|
249
|
+
body = response_body
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
assert_equal "content", body
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def test_mock_request_with_undocumented_full_uri_argument_style
|
|
256
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => fixture_path("test_example.txt"))
|
|
257
|
+
response = Net::HTTP.start('mock') { |query| query.get('http://mock/test_example.txt') }
|
|
258
|
+
assert_equal 'test example content', response.body
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def test_mock_request_with_undocumented_full_uri_argument_style_and_query
|
|
262
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt?a=b', :body => 'test query content')
|
|
263
|
+
response = Net::HTTP.start('mock') { |query| query.get('http://mock/test_example.txt?a=b') }
|
|
264
|
+
assert_equal 'test query content', response.body
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def test_mock_post
|
|
268
|
+
FakeWeb.register_uri(:post, 'http://mock/test_example.txt', :body => fixture_path("test_example.txt"))
|
|
269
|
+
response = Net::HTTP.start('mock') { |query| query.post('/test_example.txt', '') }
|
|
270
|
+
assert_equal 'test example content', response.body
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
def test_mock_post_with_string_as_registered_uri
|
|
274
|
+
FakeWeb.register_uri(:post, 'http://mock/test_string.txt', :body => 'foo')
|
|
275
|
+
response = Net::HTTP.start('mock') { |query| query.post('/test_string.txt', '') }
|
|
276
|
+
assert_equal 'foo', response.body
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def test_mock_post_with_body_sets_the_request_body
|
|
280
|
+
FakeWeb.register_uri(:post, "http://example.com/posts", :status => [201, "Created"])
|
|
281
|
+
http = Net::HTTP.new("example.com")
|
|
282
|
+
request = Net::HTTP::Post.new("/posts")
|
|
283
|
+
http.request(request, "title=Test")
|
|
284
|
+
assert_equal "title=Test", request.body
|
|
285
|
+
assert_equal 10, request.content_length
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
def test_mock_post_with_body_using_other_syntax_sets_the_request_body
|
|
289
|
+
FakeWeb.register_uri(:post, "http://example.com/posts", :status => [201, "Created"])
|
|
290
|
+
http = Net::HTTP.new("example.com")
|
|
291
|
+
request = Net::HTTP::Post.new("/posts")
|
|
292
|
+
request.body = "title=Test"
|
|
293
|
+
http.request(request)
|
|
294
|
+
assert_equal "title=Test", request.body
|
|
295
|
+
assert_equal 10, request.content_length
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
def test_real_post_with_body_sets_the_request_body
|
|
299
|
+
FakeWeb.allow_net_connect = true
|
|
300
|
+
setup_expectations_for_real_apple_hot_news_request :method => "POST",
|
|
301
|
+
:path => "/posts", :request_body => "title=Test"
|
|
302
|
+
http = Net::HTTP.new("images.apple.com")
|
|
303
|
+
request = Net::HTTP::Post.new("/posts")
|
|
304
|
+
request["Content-Type"] = "application/x-www-form-urlencoded"
|
|
305
|
+
http.request(request, "title=Test")
|
|
306
|
+
assert_equal "title=Test", request.body
|
|
307
|
+
assert_equal 10, request.content_length
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
def test_mock_get_with_request_as_registered_uri
|
|
311
|
+
fake_response = Net::HTTPOK.new('1.1', '200', 'OK')
|
|
312
|
+
FakeWeb.register_uri(:get, 'http://mock/test_response', :response => fake_response)
|
|
313
|
+
response = Net::HTTP.start('mock') { |query| query.get('/test_response') }
|
|
314
|
+
assert_equal fake_response, response
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
def test_mock_get_with_request_from_file_as_registered_uri
|
|
318
|
+
FakeWeb.register_uri(:get, 'http://www.google.com/', :response => fixture_path("google_response_without_transfer_encoding"))
|
|
319
|
+
response = Net::HTTP.start('www.google.com') { |query| query.get('/') }
|
|
320
|
+
assert_equal '200', response.code
|
|
321
|
+
assert response.body.include?('<title>Google</title>')
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def test_mock_post_with_request_from_file_as_registered_uri
|
|
325
|
+
FakeWeb.register_uri(:post, 'http://www.google.com/', :response => fixture_path("google_response_without_transfer_encoding"))
|
|
326
|
+
response = Net::HTTP.start('www.google.com') { |query| query.post('/', '') }
|
|
327
|
+
assert_equal "200", response.code
|
|
328
|
+
assert response.body.include?('<title>Google</title>')
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def test_proxy_request
|
|
332
|
+
FakeWeb.register_uri(:get, 'http://www.example.com/', :body => "hello world")
|
|
333
|
+
FakeWeb.register_uri(:get, 'http://your.proxy.host/', :body => "lala")
|
|
334
|
+
|
|
335
|
+
response = nil
|
|
336
|
+
Net::HTTP::Proxy('your.proxy.host', 8080).start('www.example.com') do |http|
|
|
337
|
+
response = http.get('/')
|
|
338
|
+
end
|
|
339
|
+
assert_equal "hello world", response.body
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def test_https_request
|
|
343
|
+
FakeWeb.register_uri(:get, 'https://www.example.com/', :body => "Hello World")
|
|
344
|
+
http = Net::HTTP.new('www.example.com', 443)
|
|
345
|
+
http.use_ssl = true
|
|
346
|
+
response = http.get('/')
|
|
347
|
+
assert_equal "Hello World", response.body
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
def test_register_unimplemented_response
|
|
351
|
+
FakeWeb.register_uri(:get, 'http://mock/unimplemented', :response => 1)
|
|
352
|
+
assert_raises StandardError do
|
|
353
|
+
Net::HTTP.start('mock') { |q| q.get('/unimplemented') }
|
|
354
|
+
end
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
def test_specifying_nil_for_body
|
|
358
|
+
FakeWeb.register_uri(:head, "http://example.com", :body => nil)
|
|
359
|
+
response = Net::HTTP.start("example.com") { |query| query.head("/") }
|
|
360
|
+
assert_equal "", response.body
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
def test_real_http_request
|
|
364
|
+
FakeWeb.allow_net_connect = true
|
|
365
|
+
setup_expectations_for_real_apple_hot_news_request
|
|
366
|
+
|
|
367
|
+
resp = nil
|
|
368
|
+
Net::HTTP.start('images.apple.com') do |query|
|
|
369
|
+
resp = query.get('/main/rss/hotnews/hotnews.rss')
|
|
370
|
+
end
|
|
371
|
+
assert resp.body.include?('Apple')
|
|
372
|
+
assert resp.body.include?('News')
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
def test_real_http_request_with_undocumented_full_uri_argument_style
|
|
376
|
+
FakeWeb.allow_net_connect = true
|
|
377
|
+
setup_expectations_for_real_apple_hot_news_request(:path => 'http://images.apple.com/main/rss/hotnews/hotnews.rss')
|
|
378
|
+
|
|
379
|
+
resp = nil
|
|
380
|
+
Net::HTTP.start('images.apple.com') do |query|
|
|
381
|
+
resp = query.get('http://images.apple.com/main/rss/hotnews/hotnews.rss')
|
|
382
|
+
end
|
|
383
|
+
assert resp.body.include?('Apple')
|
|
384
|
+
assert resp.body.include?('News')
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
def test_real_https_request
|
|
388
|
+
FakeWeb.allow_net_connect = true
|
|
389
|
+
setup_expectations_for_real_apple_hot_news_request(:port => 443)
|
|
390
|
+
|
|
391
|
+
http = Net::HTTP.new('images.apple.com', 443)
|
|
392
|
+
http.use_ssl = true
|
|
393
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE # silence certificate warning
|
|
394
|
+
response = http.get('/main/rss/hotnews/hotnews.rss')
|
|
395
|
+
assert response.body.include?('Apple')
|
|
396
|
+
assert response.body.include?('News')
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
def test_real_request_on_same_domain_as_mock
|
|
400
|
+
FakeWeb.allow_net_connect = true
|
|
401
|
+
setup_expectations_for_real_apple_hot_news_request
|
|
402
|
+
|
|
403
|
+
FakeWeb.register_uri(:get, 'http://images.apple.com/test_string.txt', :body => 'foo')
|
|
404
|
+
|
|
405
|
+
resp = nil
|
|
406
|
+
Net::HTTP.start('images.apple.com') do |query|
|
|
407
|
+
resp = query.get('/main/rss/hotnews/hotnews.rss')
|
|
408
|
+
end
|
|
409
|
+
assert resp.body.include?('Apple')
|
|
410
|
+
assert resp.body.include?('News')
|
|
411
|
+
end
|
|
412
|
+
|
|
413
|
+
def test_mock_request_on_real_domain
|
|
414
|
+
FakeWeb.register_uri(:get, 'http://images.apple.com/test_string.txt', :body => 'foo')
|
|
415
|
+
resp = nil
|
|
416
|
+
Net::HTTP.start('images.apple.com') do |query|
|
|
417
|
+
resp = query.get('/test_string.txt')
|
|
418
|
+
end
|
|
419
|
+
assert_equal 'foo', resp.body
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
def test_mock_post_that_raises_exception
|
|
423
|
+
FakeWeb.register_uri(:post, 'http://mock/raising_exception.txt', :exception => StandardError)
|
|
424
|
+
assert_raises(StandardError) do
|
|
425
|
+
Net::HTTP.start('mock') do |query|
|
|
426
|
+
query.post('/raising_exception.txt', 'some data')
|
|
427
|
+
end
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
def test_mock_post_that_raises_an_http_error
|
|
432
|
+
FakeWeb.register_uri(:post, 'http://mock/raising_exception.txt', :exception => Net::HTTPError)
|
|
433
|
+
assert_raises(Net::HTTPError) do
|
|
434
|
+
Net::HTTP.start('mock') do |query|
|
|
435
|
+
query.post('/raising_exception.txt', '')
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
def test_raising_an_exception_that_requires_an_argument_to_instantiate
|
|
441
|
+
FakeWeb.register_uri(:get, "http://example.com/timeout.txt", :exception => Timeout::Error)
|
|
442
|
+
assert_raises(Timeout::Error) do
|
|
443
|
+
Net::HTTP.get(URI.parse("http://example.com/timeout.txt"))
|
|
444
|
+
end
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
def test_mock_instance_syntax
|
|
448
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => fixture_path("test_example.txt"))
|
|
449
|
+
response = nil
|
|
450
|
+
uri = URI.parse('http://mock/test_example.txt')
|
|
451
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
452
|
+
response = http.start do
|
|
453
|
+
http.get(uri.path)
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
assert_equal 'test example content', response.body
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
def test_mock_via_nil_proxy
|
|
460
|
+
response = nil
|
|
461
|
+
proxy_address = nil
|
|
462
|
+
proxy_port = nil
|
|
463
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => fixture_path("test_example.txt"))
|
|
464
|
+
uri = URI.parse('http://mock/test_example.txt')
|
|
465
|
+
http = Net::HTTP::Proxy(proxy_address, proxy_port).new(
|
|
466
|
+
uri.host, (uri.port or 80))
|
|
467
|
+
response = http.start do
|
|
468
|
+
http.get(uri.path)
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
assert_equal 'test example content', response.body
|
|
472
|
+
end
|
|
473
|
+
|
|
474
|
+
def test_response_type
|
|
475
|
+
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => "test")
|
|
476
|
+
response = Net::HTTP.start('mock') { |http| http.get('/test_example.txt') }
|
|
477
|
+
assert_kind_of Net::HTTPSuccess, response
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
def test_mock_request_that_raises_an_http_error_with_a_specific_status
|
|
481
|
+
FakeWeb.register_uri(:get, 'http://mock/raising_exception.txt', :exception => Net::HTTPError, :status => ['404', 'Not Found'])
|
|
482
|
+
exception = assert_raises(Net::HTTPError) do
|
|
483
|
+
Net::HTTP.start('mock') { |http| http.get('/raising_exception.txt') }
|
|
484
|
+
end
|
|
485
|
+
assert_equal '404', exception.response.code
|
|
486
|
+
assert_equal 'Not Found', exception.response.msg
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
def test_mock_rotate_responses
|
|
490
|
+
FakeWeb.register_uri(:get, 'http://mock/multiple_test_example.txt',
|
|
491
|
+
[ {:body => fixture_path("test_example.txt"), :times => 2},
|
|
492
|
+
{:body => "thrice", :times => 3},
|
|
493
|
+
{:body => "ever_more"} ])
|
|
494
|
+
|
|
495
|
+
uri = URI.parse('http://mock/multiple_test_example.txt')
|
|
496
|
+
2.times { assert_equal 'test example content', Net::HTTP.get(uri) }
|
|
497
|
+
3.times { assert_equal 'thrice', Net::HTTP.get(uri) }
|
|
498
|
+
4.times { assert_equal 'ever_more', Net::HTTP.get(uri) }
|
|
499
|
+
end
|
|
500
|
+
|
|
501
|
+
def test_mock_request_using_response_with_transfer_encoding_header_has_valid_transfer_encoding_header
|
|
502
|
+
FakeWeb.register_uri(:get, 'http://www.google.com/', :response => fixture_path("google_response_with_transfer_encoding"))
|
|
503
|
+
response = Net::HTTP.start('www.google.com') { |query| query.get('/') }
|
|
504
|
+
assert_not_nil response['transfer-encoding']
|
|
505
|
+
assert response['transfer-encoding'] == 'chunked'
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
def test_mock_request_using_response_without_transfer_encoding_header_does_not_have_a_transfer_encoding_header
|
|
509
|
+
FakeWeb.register_uri(:get, 'http://www.google.com/', :response => fixture_path("google_response_without_transfer_encoding"))
|
|
510
|
+
response = nil
|
|
511
|
+
response = Net::HTTP.start('www.google.com') { |query| query.get('/') }
|
|
512
|
+
assert !response.key?('transfer-encoding')
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
def test_mock_request_using_response_from_curl_has_original_transfer_encoding_header
|
|
516
|
+
FakeWeb.register_uri(:get, 'http://www.google.com/', :response => fixture_path("google_response_from_curl"))
|
|
517
|
+
response = Net::HTTP.start('www.google.com') { |query| query.get('/') }
|
|
518
|
+
assert_not_nil response['transfer-encoding']
|
|
519
|
+
assert response['transfer-encoding'] == 'chunked'
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
def test_txt_file_should_have_three_lines
|
|
523
|
+
FakeWeb.register_uri(:get, 'http://www.google.com/', :body => fixture_path("test_txt_file"))
|
|
524
|
+
response = Net::HTTP.start('www.google.com') { |query| query.get('/') }
|
|
525
|
+
assert response.body.split(/\n/).size == 3, "response has #{response.body.split(/\n/).size} lines should have 3"
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
def test_requiring_fakeweb_instead_of_fake_web
|
|
529
|
+
require "fakeweb"
|
|
530
|
+
end
|
|
531
|
+
|
|
532
|
+
def test_registering_with_string_containing_null_byte
|
|
533
|
+
# Regression test for File.exists? raising an ArgumentError ("string
|
|
534
|
+
# contains null byte") since :response first tries to find by filename.
|
|
535
|
+
# The string should be treated as a response body, instead, and an
|
|
536
|
+
# EOFError is raised when the byte is encountered.
|
|
537
|
+
FakeWeb.register_uri(:get, "http://example.com", :response => "test\0test")
|
|
538
|
+
assert_raise EOFError do
|
|
539
|
+
Net::HTTP.get(URI.parse("http://example.com"))
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => "test\0test")
|
|
543
|
+
body = Net::HTTP.get(URI.parse("http://example.com"))
|
|
544
|
+
assert_equal "test\0test", body
|
|
545
|
+
end
|
|
546
|
+
|
|
547
|
+
def test_registering_with_string_that_is_a_directory_name
|
|
548
|
+
# Similar to above, but for Errno::EISDIR being raised since File.exists?
|
|
549
|
+
# returns true for directories
|
|
550
|
+
FakeWeb.register_uri(:get, "http://example.com", :response => File.dirname(__FILE__))
|
|
551
|
+
assert_raise EOFError do
|
|
552
|
+
body = Net::HTTP.get(URI.parse("http://example.com"))
|
|
553
|
+
end
|
|
554
|
+
|
|
555
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => File.dirname(__FILE__))
|
|
556
|
+
body = Net::HTTP.get(URI.parse("http://example.com"))
|
|
557
|
+
assert_equal File.dirname(__FILE__), body
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
def test_registering_with_a_body_pointing_to_a_pathname
|
|
561
|
+
path = Pathname.new(fixture_path("test_example.txt"))
|
|
562
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => path)
|
|
563
|
+
response = Net::HTTP.start("example.com") { |http| http.get("/") }
|
|
564
|
+
assert_equal "test example content", response.body
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
def test_registering_with_a_response_pointing_to_a_pathname
|
|
568
|
+
path = Pathname.new(fixture_path("google_response_without_transfer_encoding"))
|
|
569
|
+
FakeWeb.register_uri(:get, "http://google.com", :response => path)
|
|
570
|
+
response = Net::HTTP.start("google.com") { |http| http.get("/") }
|
|
571
|
+
assert response.body.include?("<title>Google</title>")
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
def test_http_version_from_string_response
|
|
575
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => "example")
|
|
576
|
+
response = Net::HTTP.start("example.com") { |http| http.get("/") }
|
|
577
|
+
assert_equal "1.0", response.http_version
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
def test_http_version_from_file_response
|
|
581
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => fixture_path("test_example.txt"))
|
|
582
|
+
response = Net::HTTP.start("example.com") { |http| http.get("/") }
|
|
583
|
+
assert_equal "1.0", response.http_version
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
def test_version
|
|
587
|
+
assert_equal "1.3.0", FakeWeb::VERSION
|
|
588
|
+
end
|
|
589
|
+
|
|
590
|
+
end
|