webmock 1.7.5 → 1.7.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/.rspec-tm +2 -0
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile +2 -2
  4. data/README.md +1 -0
  5. data/Rakefile +3 -3
  6. data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +11 -4
  7. data/lib/webmock/version.rb +1 -1
  8. data/spec/{curb_spec.rb → acceptance/curb/curb_spec.rb} +9 -9
  9. data/spec/{curb_spec_helper.rb → acceptance/curb/curb_spec_helper.rb} +0 -0
  10. data/spec/{em_http_request_spec.rb → acceptance/em_http_request/em_http_request_spec.rb} +13 -13
  11. data/spec/{em_http_request_spec_helper.rb → acceptance/em_http_request/em_http_request_spec_helper.rb} +0 -0
  12. data/spec/acceptance/httpclient/httpclient_spec.rb +67 -0
  13. data/spec/{httpclient_spec_helper.rb → acceptance/httpclient/httpclient_spec_helper.rb} +0 -0
  14. data/spec/{net_http_shared.rb → acceptance/net_http/net_http_shared.rb} +0 -0
  15. data/spec/{net_http_spec.rb → acceptance/net_http/net_http_spec.rb} +6 -6
  16. data/spec/{net_http_spec_helper.rb → acceptance/net_http/net_http_spec_helper.rb} +0 -0
  17. data/spec/{real_net_http_spec.rb → acceptance/net_http/real_net_http_spec.rb} +1 -1
  18. data/spec/{patron_spec.rb → acceptance/patron/patron_spec.rb} +12 -12
  19. data/spec/{patron_spec_helper.rb → acceptance/patron/patron_spec_helper.rb} +0 -0
  20. data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +142 -0
  21. data/spec/acceptance/shared/callbacks.rb +130 -0
  22. data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +96 -0
  23. data/spec/acceptance/shared/precedence_of_stubs.rb +15 -0
  24. data/spec/acceptance/shared/request_expectations.rb +620 -0
  25. data/spec/acceptance/shared/returning_declared_responses.rb +377 -0
  26. data/spec/acceptance/shared/stubbing_requests.rb +314 -0
  27. data/spec/{typhoeus_hydra_spec.rb → acceptance/typhoeus/typhoeus_hydra_spec.rb} +5 -5
  28. data/spec/{typhoeus_hydra_spec_helper.rb → acceptance/typhoeus/typhoeus_hydra_spec_helper.rb} +0 -0
  29. data/spec/acceptance/webmock_shared.rb +38 -0
  30. data/spec/spec_helper.rb +4 -2
  31. data/spec/{example_curl_output.txt → support/example_curl_output.txt} +0 -0
  32. data/spec/{my_rack_app.rb → support/my_rack_app.rb} +0 -0
  33. data/spec/{network_connection.rb → support/network_connection.rb} +0 -0
  34. data/spec/{errors_spec.rb → unit/errors_spec.rb} +1 -1
  35. data/spec/{http_lib_adapters → unit/http_lib_adapters}/http_lib_adapter_registry_spec.rb +1 -1
  36. data/spec/{http_lib_adapters → unit/http_lib_adapters}/http_lib_adapter_spec.rb +1 -1
  37. data/spec/{rack_response_spec.rb → unit/rack_response_spec.rb} +1 -1
  38. data/spec/{request_execution_verifier_spec.rb → unit/request_execution_verifier_spec.rb} +1 -1
  39. data/spec/{request_pattern_spec.rb → unit/request_pattern_spec.rb} +1 -1
  40. data/spec/{request_registry_spec.rb → unit/request_registry_spec.rb} +1 -1
  41. data/spec/{request_signature_spec.rb → unit/request_signature_spec.rb} +1 -1
  42. data/spec/{request_stub_spec.rb → unit/request_stub_spec.rb} +1 -1
  43. data/spec/{response_spec.rb → unit/response_spec.rb} +4 -4
  44. data/spec/{stub_registry_spec.rb → unit/stub_registry_spec.rb} +1 -1
  45. data/spec/{stub_request_snippet_spec.rb → unit/stub_request_snippet_spec.rb} +1 -1
  46. data/spec/{util → unit/util}/hash_counter_spec.rb +1 -1
  47. data/spec/{util → unit/util}/hash_keys_stringifier_spec.rb +1 -1
  48. data/spec/{util → unit/util}/headers_spec.rb +1 -1
  49. data/spec/{util → unit/util}/json_spec.rb +1 -1
  50. data/spec/{util → unit/util}/uri_spec.rb +1 -1
  51. data/spec/{webmock_spec.rb → unit/webmock_spec.rb} +1 -1
  52. data/webmock.gemspec +1 -1
  53. metadata +111 -116
  54. data/spec/httpclient_spec.rb +0 -43
  55. data/spec/vendor/addressable/lib/addressable/uri.rb +0 -8
  56. data/spec/vendor/addressable/lib/uri.rb +0 -1
  57. data/spec/vendor/crack/lib/crack.rb +0 -1
  58. data/spec/vendor/right_http_connection-1.2.4/History.txt +0 -59
  59. data/spec/vendor/right_http_connection-1.2.4/Manifest.txt +0 -7
  60. data/spec/vendor/right_http_connection-1.2.4/README.txt +0 -54
  61. data/spec/vendor/right_http_connection-1.2.4/Rakefile +0 -103
  62. data/spec/vendor/right_http_connection-1.2.4/lib/net_fix.rb +0 -160
  63. data/spec/vendor/right_http_connection-1.2.4/lib/right_http_connection.rb +0 -435
  64. data/spec/vendor/right_http_connection-1.2.4/setup.rb +0 -1585
  65. data/spec/webmock_shared.rb +0 -1770
@@ -1,43 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require 'webmock_shared'
3
- require 'ostruct'
4
-
5
- require 'httpclient_spec_helper'
6
-
7
- describe "Webmock with HTTPClient" do
8
- include HTTPClientSpecHelper
9
-
10
- before(:each) do
11
- HTTPClientSpecHelper.async_mode = false
12
- end
13
-
14
- it_should_behave_like "WebMock"
15
-
16
- it "should yield block on response if block provided" do
17
- stub_http_request(:get, "www.example.com").to_return(:body => "abc")
18
- response_body = ""
19
- http_request(:get, "http://www.example.com/") do |body|
20
- response_body = body
21
- end
22
- response_body.should == "abc"
23
- end
24
-
25
- it "should match requests if headers are the same but in different order" do
26
- stub_http_request(:get, "www.example.com").with(:headers => {"a" => ["b", "c"]} )
27
- http_request(
28
- :get, "http://www.example.com/",
29
- :headers => {"a" => ["c", "b"]}).status.should == "200"
30
- end
31
-
32
-
33
- describe "async requests" do
34
-
35
- before(:each) do
36
- HTTPClientSpecHelper.async_mode = true
37
- end
38
-
39
- it_should_behave_like "WebMock"
40
-
41
- end
42
-
43
- end
@@ -1,8 +0,0 @@
1
- module Addressable
2
- class URI
3
- module CharacterClasses
4
- UNRESERVED = "123"
5
- SUB_DELIMS = "123"
6
- end
7
- end
8
- end
@@ -1,59 +0,0 @@
1
- == 0.0.1 2007-05-15
2
- * 1 major enhancement:
3
- * Initial release
4
-
5
- == 0.1.2 2007-06-27
6
-
7
- * No major changes.
8
-
9
- == 0.1.3 2007-07-09
10
-
11
- * No change.
12
-
13
- == 0.1.4 2007-08-10
14
-
15
- * r1442, todd, 2007-08-07 15:45:24
16
- * # 373, Add support in right_http_connection for bailing out to a block while
17
- reading the HTTP response (to support GET streaming...)
18
-
19
- * r1411, todd, 2007-08-03 15:14:45
20
- * # 373, Stream uploads (PUTs) if the source is a file, stream, or anything
21
- read()-able
22
-
23
- == 1.1.0 2007-08-15
24
- Initial public release
25
-
26
- == 1.2.0 2007-10-05
27
-
28
- * r1867, konstantin, 2007-10-05 06:19:45
29
- * # 220, (re)open connection to server if none exists or connection params
30
- have changed
31
-
32
- == 1.2.1
33
-
34
- * r2648, konstantin, 01-24-08 11:12:00
35
- * net_fix.rb moved from right_aws gem to fix the problem with uploading the streamable
36
- objects to S3
37
-
38
- * r2764, konstantin, 02-08-08 00:05:00 +03:00
39
- * "RightAws: incompatible Net::HTTP monkey-patch" exception is raised if our net_fix
40
- patch was overriden (by attachment_fu for example, to avoid this load attachment_fu
41
- before loading the right_http_connection gem).
42
-
43
- == 1.2.2
44
-
45
- * r3524, konstantin, 2008-04-17 11:35:42 +0400
46
- * Fixed a problem with incorrect error handling (connection retries always failed).
47
-
48
- == 1.2.3
49
-
50
- - Added support for setting retry & timeout parameters in the constructor
51
- - Improve handling of data streams during upload: if there is a failure and a retry, reset
52
- the seek pointer for the subsequent re-request
53
-
54
- == 1.2.4
55
-
56
- * r4984, konstantin, 2008-08-11 14:49:18 +0400
57
- * fixed a bug: <NoMethodError: You have a nil object when you didn't expect it!
58
- The error occurred while evaluating nil.body_stream>
59
-
@@ -1,7 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- README.txt
4
- Rakefile
5
- lib/net_fix.rb
6
- lib/right_http_connection.rb
7
- setup.rb
@@ -1,54 +0,0 @@
1
- RightScale::HttpConnection
2
- by RightScale, Inc.
3
- www.RightScale.com
4
-
5
- == DESCRIPTION:
6
-
7
- Rightscale::HttpConnection is a robust HTTP/S library. It implements a retry
8
- algorithm for low-level network errors.
9
-
10
- == FEATURES:
11
-
12
- - provides put/get streaming
13
- - does configurable retries on connect and read timeouts, DNS failures, etc.
14
- - HTTPS certificate checking
15
-
16
- == SYNOPSIS:
17
-
18
-
19
- == REQUIREMENTS:
20
-
21
- - 2/11/08: If you use RightScale::HttpConnection in conjunction with attachment_fu, the
22
- HttpConnection gem must be included (using the require statement) AFTER
23
- attachment_fu.
24
- This is due to a conflict between the HttpConnection gem and another
25
- gem required by attachment_fu.
26
-
27
-
28
-
29
- == INSTALL:
30
-
31
- sudo gem install right_http_connection
32
-
33
- == LICENSE:
34
-
35
- Copyright (c) 2007-2008 RightScale, Inc.
36
-
37
- Permission is hereby granted, free of charge, to any person obtaining
38
- a copy of this software and associated documentation files (the
39
- 'Software'), to deal in the Software without restriction, including
40
- without limitation the rights to use, copy, modify, merge, publish,
41
- distribute, sublicense, and/or sell copies of the Software, and to
42
- permit persons to whom the Software is furnished to do so, subject to
43
- the following conditions:
44
-
45
- The above copyright notice and this permission notice shall be
46
- included in all copies or substantial portions of the Software.
47
-
48
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
49
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
50
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
51
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
52
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
53
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
54
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,103 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'rake/clean'
4
- require 'rake/testtask'
5
- require 'rake/packagetask'
6
- require 'rake/gempackagetask'
7
- require 'rake/rdoctask'
8
- require 'rake/contrib/rubyforgepublisher'
9
- require 'fileutils'
10
- require 'hoe'
11
- include FileUtils
12
- require File.join(File.dirname(__FILE__), 'lib', 'right_http_connection')
13
-
14
- AUTHOR = 'RightScale' # can also be an array of Authors
15
- EMAIL = "rubygems@rightscale.com"
16
- DESCRIPTION = "RightScale's robust HTTP/S connection module"
17
- GEM_NAME = 'right_http_connection' # what ppl will type to install your gem
18
- RUBYFORGE_PROJECT = 'rightscale' # The unix name for your project
19
- HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
20
- DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
21
-
22
- NAME = "right_http_connection"
23
- REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
24
- VERS = RightHttpConnection::VERSION::STRING + (REV ? ".#{REV}" : "")
25
- CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']
26
- RDOC_OPTS = ['--quiet', '--title', 'right_http_connection documentation',
27
- "--opname", "index.html",
28
- "--line-numbers",
29
- "--main", "README",
30
- "--inline-source"]
31
-
32
- # Suppress Hoe's self-inclusion as a dependency for our Gem. This also keeps
33
- # Rake & rubyforge out of the dependency list. Users must manually install
34
- # these gems to run tests, etc.
35
- # TRB 2/19/09: also do this for the extra_dev_deps array present in newer hoes.
36
- # Older versions of RubyGems will try to install developer-dependencies as
37
- # required runtime dependencies....
38
- class Hoe
39
- def extra_deps
40
- @extra_deps.reject do |x|
41
- Array(x).first == 'hoe'
42
- end
43
- end
44
- def extra_dev_deps
45
- @extra_dev_deps.reject do |x|
46
- Array(x).first == 'hoe'
47
- end
48
- end
49
- end
50
-
51
- # Generate all the Rake tasks
52
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
53
- hoe = Hoe.new(GEM_NAME, VERS) do |p|
54
- p.author = AUTHOR
55
- p.description = DESCRIPTION
56
- p.email = EMAIL
57
- p.summary = DESCRIPTION
58
- p.url = HOMEPATH
59
- p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
60
- p.test_globs = ["test/**/test_*.rb"]
61
- p.clean_globs = CLEAN #An array of file patterns to delete on clean.
62
- p.remote_rdoc_dir = "right_http_gem_doc"
63
-
64
- # == Optional
65
- p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
66
- #p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
67
- #p.spec_extras = {} # A hash of extra values to set in the gemspec.
68
- end
69
-
70
-
71
- desc 'Generate website files'
72
- task :website_generate do
73
- Dir['website/**/*.txt'].each do |txt|
74
- sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
75
- end
76
- end
77
-
78
- desc 'Upload website files to rubyforge'
79
- task :website_upload do
80
- config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
81
- host = "#{config["username"]}@rubyforge.org"
82
- remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/"
83
- # remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
84
- local_dir = 'website'
85
- sh %{rsync -av #{local_dir}/ #{host}:#{remote_dir}}
86
- end
87
-
88
- desc 'Generate and upload website files'
89
- task :website => [:website_generate, :website_upload]
90
-
91
- desc 'Release the website and new gem version'
92
- task :deploy => [:check_version, :website, :release]
93
-
94
- task :check_version do
95
- unless ENV['VERSION']
96
- puts 'Must pass a VERSION=x.y.z release version'
97
- exit
98
- end
99
- unless ENV['VERSION'] == VERS
100
- puts "Please update your version.rb to match the release version, currently #{VERS}"
101
- exit
102
- end
103
- end
@@ -1,160 +0,0 @@
1
- #
2
- # Copyright (c) 2008 RightScale Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #
23
- #
24
-
25
- # Net::HTTP and Net::HTTPGenericRequest fixes to support 100-continue on
26
- # POST and PUT. The request must have 'expect' field set to '100-continue'.
27
-
28
-
29
- module Net
30
-
31
- class BufferedIO #:nodoc:
32
- # Monkey-patch Net::BufferedIO to read > 1024 bytes from the socket at a time
33
-
34
- # Default size (in bytes) of the max read from a socket into the user space read buffers for socket IO
35
- DEFAULT_SOCKET_READ_SIZE = 16*1024
36
-
37
- @@socket_read_size = DEFAULT_SOCKET_READ_SIZE
38
-
39
- def self.socket_read_size=(readsize)
40
- if(readsize <= 0)
41
- return
42
- end
43
- @@socket_read_size = readsize
44
- end
45
-
46
- def self.socket_read_size?()
47
- @@socket_read_size
48
- end
49
-
50
- def rbuf_fill
51
- timeout(@read_timeout) {
52
- @rbuf << @io.sysread(@@socket_read_size)
53
- }
54
- end
55
- end
56
-
57
-
58
- #-- Net::HTTPGenericRequest --
59
-
60
- class HTTPGenericRequest
61
- # Monkey-patch Net::HTTPGenericRequest to read > 1024 bytes from the local data
62
- # source at a time (used in streaming PUTs)
63
-
64
- # Default size (in bytes) of the max read from a local source (File, String,
65
- # etc.) to the user space write buffers for socket IO.
66
- DEFAULT_LOCAL_READ_SIZE = 16*1024
67
-
68
- @@local_read_size = DEFAULT_LOCAL_READ_SIZE
69
-
70
- def self.local_read_size=(readsize)
71
- if(readsize <= 0)
72
- return
73
- end
74
- @@local_read_size = readsize
75
- end
76
-
77
- def self.local_read_size?()
78
- @@local_read_size
79
- end
80
-
81
- def exec(sock, ver, path, send_only=nil) #:nodoc: internal use only
82
- if @body
83
- send_request_with_body sock, ver, path, @body, send_only
84
- elsif @body_stream
85
- send_request_with_body_stream sock, ver, path, @body_stream, send_only
86
- else
87
- write_header(sock, ver, path)
88
- end
89
- end
90
-
91
- private
92
-
93
- def send_request_with_body(sock, ver, path, body, send_only=nil)
94
- self.content_length = body.length
95
- delete 'Transfer-Encoding'
96
- supply_default_content_type
97
- write_header(sock, ver, path) unless send_only == :body
98
- sock.write(body) unless send_only == :header
99
- end
100
-
101
- def send_request_with_body_stream(sock, ver, path, f, send_only=nil)
102
- unless content_length() or chunked?
103
- raise ArgumentError,
104
- "Content-Length not given and Transfer-Encoding is not `chunked'"
105
- end
106
- supply_default_content_type
107
- write_header(sock, ver, path) unless send_only == :body
108
- unless send_only == :header
109
- if chunked?
110
- while s = f.read(@@local_read_size)
111
- sock.write(sprintf("%x\r\n", s.length) << s << "\r\n")
112
- end
113
- sock.write "0\r\n\r\n"
114
- else
115
- while s = f.read(@@local_read_size)
116
- sock.write s
117
- end
118
- end
119
- end
120
- end
121
- end
122
-
123
-
124
- #-- Net::HTTP --
125
-
126
- class HTTP
127
- def request(req, body = nil, &block) # :yield: +response+
128
- unless started?
129
- start {
130
- req['connection'] ||= 'close'
131
- return request(req, body, &block)
132
- }
133
- end
134
- if proxy_user()
135
- unless use_ssl?
136
- req.proxy_basic_auth proxy_user(), proxy_pass()
137
- end
138
- end
139
- # set body
140
- req.set_body_internal body
141
- begin_transport req
142
- # if we expect 100-continue then send a header first
143
- send_only = ((req.is_a?(Post)||req.is_a?(Put)) && (req['expect']=='100-continue')) ? :header : nil
144
- req.exec @socket, @curr_http_version, edit_path(req.path), send_only
145
- begin
146
- res = HTTPResponse.read_new(@socket)
147
- # if we expected 100-continue then send a body
148
- if res.is_a?(HTTPContinue) && send_only && req['content-length'].to_i > 0
149
- req.exec @socket, @curr_http_version, edit_path(req.path), :body
150
- end
151
- end while res.kind_of?(HTTPContinue)
152
- res.reading_body(@socket, req.response_body_permitted?) {
153
- yield res if block_given?
154
- }
155
- end_transport req, res
156
- res
157
- end
158
- end
159
-
160
- end