webmock 1.11.0 → 1.12.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/.gitignore +2 -0
- data/.travis.yml +1 -2
- data/CHANGELOG.md +42 -1
- data/Gemfile +2 -1
- data/README.md +350 -225
- data/Rakefile +0 -12
- data/lib/webmock/http_lib_adapters/curb_adapter.rb +2 -2
- data/lib/webmock/http_lib_adapters/em_http_request/em_http_request_1_x.rb +1 -1
- data/lib/webmock/http_lib_adapters/excon_adapter.rb +2 -2
- data/lib/webmock/http_lib_adapters/net_http.rb +1 -1
- data/lib/webmock/minitest.rb +3 -3
- data/lib/webmock/rack_response.rb +5 -0
- data/lib/webmock/util/query_mapper.rb +4 -3
- data/lib/webmock/version.rb +1 -1
- data/lib/webmock/webmock.rb +14 -12
- data/minitest/test_helper.rb +6 -3
- data/minitest/test_webmock.rb +1 -2
- data/minitest/webmock_spec.rb +3 -3
- data/spec/acceptance/curb/curb_spec.rb +6 -3
- data/spec/acceptance/em_http_request/em_http_request_spec.rb +7 -0
- data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +1 -0
- data/spec/acceptance/net_http/net_http_spec.rb +5 -0
- data/spec/support/webmock_server.rb +5 -1
- data/webmock.gemspec +2 -2
- metadata +25 -26
- data/.rvmrc +0 -1
data/Rakefile
CHANGED
@@ -46,18 +46,6 @@ end
|
|
46
46
|
|
47
47
|
task :default => [:spec, :spec_http_without_webmock, :test, :minitest]
|
48
48
|
|
49
|
-
require 'rdoc/task'
|
50
|
-
RDoc::Task.new do |rdoc|
|
51
|
-
$:.push File.expand_path('../lib', __FILE__)
|
52
|
-
require 'webmock/version'
|
53
|
-
|
54
|
-
rdoc.rdoc_dir = 'rdoc'
|
55
|
-
rdoc.title = "webmock #{WebMock::VERSION}"
|
56
|
-
rdoc.rdoc_files.include('README*')
|
57
|
-
rdoc.rdoc_files.include('lib/webmock/webmock.rb')
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
49
|
task :require_ruby_18 do
|
62
50
|
raise "This must be run on Ruby 1.8" unless RUBY_VERSION =~ /^1\.8/
|
63
51
|
end
|
@@ -5,7 +5,7 @@ rescue LoadError
|
|
5
5
|
end
|
6
6
|
|
7
7
|
if defined?(Curl)
|
8
|
-
WebMock::VersionChecker.new('Curb',
|
8
|
+
WebMock::VersionChecker.new('Curb', Curl::CURB_VERSION, '0.7.16').check_version!
|
9
9
|
|
10
10
|
module WebMock
|
11
11
|
module HttpLibAdapters
|
@@ -143,7 +143,7 @@ if defined?(Curl)
|
|
143
143
|
|
144
144
|
def invoke_curb_callbacks
|
145
145
|
@on_progress.call(0.0,1.0,0.0,1.0) if @on_progress
|
146
|
-
@on_header.call
|
146
|
+
self.header_str.lines.each { |header_line| @on_header.call header_line } if @on_header
|
147
147
|
@on_body.call(self.body_str) if @on_body
|
148
148
|
@on_complete.call(self) if @on_complete
|
149
149
|
|
@@ -5,7 +5,7 @@ rescue LoadError
|
|
5
5
|
end
|
6
6
|
|
7
7
|
if defined?(Excon)
|
8
|
-
WebMock::VersionChecker.new('Excon', Excon::VERSION, '0.
|
8
|
+
WebMock::VersionChecker.new('Excon', Excon::VERSION, '0.22.0').check_version!
|
9
9
|
|
10
10
|
module WebMock
|
11
11
|
module HttpLibAdapters
|
@@ -122,7 +122,7 @@ if defined?(Excon)
|
|
122
122
|
mock = WebMock::Response.new
|
123
123
|
mock.status = real.status
|
124
124
|
mock.headers = real.headers
|
125
|
-
mock.body = real.body
|
125
|
+
mock.body = real.body.dup
|
126
126
|
mock
|
127
127
|
end
|
128
128
|
|
data/lib/webmock/minitest.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require 'minitest/
|
1
|
+
require 'minitest/test'
|
2
2
|
require 'webmock'
|
3
3
|
|
4
|
-
MiniTest::
|
4
|
+
MiniTest::Test.class_eval do
|
5
5
|
include WebMock::API
|
6
6
|
|
7
7
|
alias_method :teardown_without_webmock, :teardown
|
@@ -14,7 +14,7 @@ MiniTest::Unit::TestCase.class_eval do
|
|
14
14
|
[:assert_request_requested, :assert_request_not_requested].each do |name|
|
15
15
|
alias_method :"#{name}_without_assertions_count", name
|
16
16
|
define_method :"#{name}_with_assertions_count" do |*args|
|
17
|
-
self.
|
17
|
+
self.assertions += 1
|
18
18
|
send :"#{name}_without_assertions_count", *args
|
19
19
|
end
|
20
20
|
alias_method name, :"#{name}_with_assertions_count"
|
@@ -49,6 +49,7 @@ module WebMock
|
|
49
49
|
env['rack.url_scheme'] = uri.scheme
|
50
50
|
env['rack.run_once'] = true
|
51
51
|
env['rack.session'] = session
|
52
|
+
env['rack.session.options'] = session_options
|
52
53
|
|
53
54
|
headers.each do |k, v|
|
54
55
|
env["HTTP_#{k.tr('-','_').upcase}"] = v
|
@@ -60,5 +61,9 @@ module WebMock
|
|
60
61
|
def session
|
61
62
|
@session ||= {}
|
62
63
|
end
|
64
|
+
|
65
|
+
def session_options
|
66
|
+
@session_options ||= {}
|
67
|
+
end
|
63
68
|
end
|
64
69
|
end
|
@@ -114,6 +114,7 @@ module WebMock::Util
|
|
114
114
|
#
|
115
115
|
# @param [Hash, #to_hash, Array] new_query_values The new query values.
|
116
116
|
def self.values_to_query(new_query_values)
|
117
|
+
|
117
118
|
if new_query_values == nil
|
118
119
|
return nil
|
119
120
|
end
|
@@ -146,7 +147,7 @@ module WebMock::Util
|
|
146
147
|
if value.is_a?(Hash)
|
147
148
|
value = value.map do |key, val|
|
148
149
|
[
|
149
|
-
Addressable::URI.encode_component(key, Addressable::URI::CharacterClasses::UNRESERVED),
|
150
|
+
Addressable::URI.encode_component(key.dup, Addressable::URI::CharacterClasses::UNRESERVED),
|
150
151
|
val
|
151
152
|
]
|
152
153
|
end
|
@@ -168,7 +169,7 @@ module WebMock::Util
|
|
168
169
|
return parent
|
169
170
|
else
|
170
171
|
encoded_value = Addressable::URI.encode_component(
|
171
|
-
value, Addressable::URI::CharacterClasses::UNRESERVED
|
172
|
+
value.dup, Addressable::URI::CharacterClasses::UNRESERVED
|
172
173
|
)
|
173
174
|
return "#{parent}=#{encoded_value}"
|
174
175
|
end
|
@@ -178,7 +179,7 @@ module WebMock::Util
|
|
178
179
|
buffer = ""
|
179
180
|
new_query_values.each do |parent, value|
|
180
181
|
encoded_parent = Addressable::URI.encode_component(
|
181
|
-
parent, Addressable::URI::CharacterClasses::UNRESERVED
|
182
|
+
parent.dup, Addressable::URI::CharacterClasses::UNRESERVED
|
182
183
|
)
|
183
184
|
buffer << "#{to_query.call(encoded_parent, value)}&"
|
184
185
|
end
|
data/lib/webmock/version.rb
CHANGED
data/lib/webmock/webmock.rb
CHANGED
@@ -59,18 +59,20 @@ module WebMock
|
|
59
59
|
end
|
60
60
|
|
61
61
|
Config.instance.allow_net_connect ||
|
62
|
-
(
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
62
|
+
( Config.instance.allow_localhost && WebMock::Util::URI.is_uri_localhost?(uri) ||
|
63
|
+
Config.instance.allow && net_connect_explicit_allowed?(Config.instance.allow, uri) )
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.net_connect_explicit_allowed?(allowed, uri=nil)
|
67
|
+
case allowed
|
68
|
+
when Array
|
69
|
+
allowed.any? { |allowed_item| net_connect_explicit_allowed?(allowed_item, uri) }
|
70
|
+
when Regexp
|
71
|
+
uri.to_s =~ allowed
|
72
|
+
when String
|
73
|
+
allowed == uri.host ||
|
74
|
+
allowed == "#{uri.host}:#{uri.port}"
|
75
|
+
end
|
74
76
|
end
|
75
77
|
|
76
78
|
def self.reset!
|
data/minitest/test_helper.rb
CHANGED
@@ -5,11 +5,13 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
5
5
|
|
6
6
|
require File.expand_path(File.dirname(__FILE__) + '/../test/http_request')
|
7
7
|
|
8
|
-
gem
|
8
|
+
gem 'minitest'
|
9
|
+
|
9
10
|
require 'minitest/autorun'
|
10
11
|
require 'webmock/minitest'
|
11
12
|
|
12
|
-
class MiniTest::
|
13
|
+
class MiniTest::Test
|
14
|
+
|
13
15
|
def assert_raise(*exp, &block)
|
14
16
|
assert_raises(*exp, &block)
|
15
17
|
end
|
@@ -26,4 +28,5 @@ class MiniTest::Unit::TestCase
|
|
26
28
|
def assert_fail(message, &block)
|
27
29
|
assert_raise_with_message(MiniTest::Assertion, message, &block)
|
28
30
|
end
|
29
|
-
|
31
|
+
|
32
|
+
end
|
data/minitest/test_webmock.rb
CHANGED
data/minitest/webmock_spec.rb
CHANGED
@@ -9,14 +9,14 @@ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should update assertions count" do
|
12
|
-
assert_equal 0,
|
12
|
+
assert_equal 0, assertions
|
13
13
|
http_request(:get, "http://www.example.com/")
|
14
14
|
|
15
15
|
assert_requested(@stub_http)
|
16
|
-
assert_equal 2,
|
16
|
+
assert_equal 2, assertions
|
17
17
|
|
18
18
|
assert_not_requested(:post, "http://www.example.com")
|
19
|
-
assert_equal 4,
|
19
|
+
assert_equal 4, assertions
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should raise error on non stubbed request" do
|
@@ -85,12 +85,15 @@ unless RUBY_PLATFORM =~ /java/
|
|
85
85
|
stub_request(:any, "example.com").
|
86
86
|
to_return(:headers => {:one => 1})
|
87
87
|
|
88
|
-
test =
|
88
|
+
test = []
|
89
89
|
@curl.on_header do |data|
|
90
|
-
test
|
90
|
+
test << data
|
91
91
|
end
|
92
92
|
@curl.http_get
|
93
|
-
test.should
|
93
|
+
test.should == [
|
94
|
+
"HTTP/1.1 200 \r\n",
|
95
|
+
'One: 1'
|
96
|
+
]
|
94
97
|
end
|
95
98
|
|
96
99
|
it "should call on_complete when request is complete" do
|
@@ -199,6 +199,13 @@ unless RUBY_PLATFORM =~ /java/
|
|
199
199
|
http_request(:post, "http://www.example.com", :body => {:a => "1", :b => "2"}).body.should == "ok"
|
200
200
|
end
|
201
201
|
|
202
|
+
if defined?(EventMachine::HttpConnection)
|
203
|
+
it "should work when a file is passed as body" do
|
204
|
+
stub_request(:post, "www.example.com").with(:body => File.read(__FILE__)).to_return(:body => "ok")
|
205
|
+
http_request(:post, "http://www.example.com", :file => __FILE__).body.should == "ok"
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
202
209
|
it "should work with UTF-8 strings" do
|
203
210
|
body = "Привет, Мир!"
|
204
211
|
stub_request(:post, "www.example.com").to_return(:body => body)
|
@@ -203,6 +203,11 @@ describe "Net:HTTP" do
|
|
203
203
|
response = Net::HTTP.get('www.google.com','/')
|
204
204
|
end
|
205
205
|
|
206
|
+
it "should connect to the server if the URI matches any regex the array", :net_connect => true do
|
207
|
+
WebMock.disable_net_connect!(:allow => [/google.com/, /yahoo.com/])
|
208
|
+
response = Net::HTTP.get('www.google.com','/')
|
209
|
+
end
|
210
|
+
|
206
211
|
end
|
207
212
|
|
208
213
|
end
|
@@ -29,7 +29,11 @@ class WebMockServer
|
|
29
29
|
|
30
30
|
concurrent do
|
31
31
|
['TERM', 'INT'].each do |signal|
|
32
|
-
trap(signal)
|
32
|
+
trap(signal) do
|
33
|
+
Thread.new do
|
34
|
+
server.shutdown
|
35
|
+
end
|
36
|
+
end
|
33
37
|
end
|
34
38
|
server.start do |socket|
|
35
39
|
socket.puts <<-EOT.gsub(/^\s+\|/, '')
|
data/webmock.gemspec
CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_development_dependency 'em-synchrony', '>= 1.0.0' if RUBY_VERSION >= "1.9"
|
26
26
|
s.add_development_dependency 'curb', '>= 0.8.0' unless RUBY_PLATFORM =~ /java/
|
27
27
|
s.add_development_dependency 'typhoeus', '>= 0.5.0' unless RUBY_PLATFORM =~ /java/
|
28
|
-
s.add_development_dependency 'excon', '>= 0.
|
29
|
-
s.add_development_dependency 'minitest', '
|
28
|
+
s.add_development_dependency 'excon', '>= 0.22.0'
|
29
|
+
s.add_development_dependency 'minitest', '~> 5.0.0'
|
30
30
|
s.add_development_dependency 'rdoc', ((RUBY_VERSION == '1.8.6') ? '<= 3.5.0' : '>3.5.0')
|
31
31
|
|
32
32
|
s.files = `git ls-files`.split("\n")
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webmock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 39
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
8
|
+
- 12
|
9
9
|
- 0
|
10
|
-
version: 1.
|
10
|
+
version: 1.12.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bartosz Blimke
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-
|
18
|
+
date: 2013-06-25 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: addressable
|
@@ -30,8 +30,8 @@ dependencies:
|
|
30
30
|
- 2
|
31
31
|
- 7
|
32
32
|
version: 2.2.7
|
33
|
-
type: :runtime
|
34
33
|
prerelease: false
|
34
|
+
type: :runtime
|
35
35
|
requirement: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: crack
|
@@ -46,8 +46,8 @@ dependencies:
|
|
46
46
|
- 3
|
47
47
|
- 2
|
48
48
|
version: 0.3.2
|
49
|
-
type: :runtime
|
50
49
|
prerelease: false
|
50
|
+
type: :runtime
|
51
51
|
requirement: *id002
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
53
|
name: rspec
|
@@ -61,8 +61,8 @@ dependencies:
|
|
61
61
|
- 2
|
62
62
|
- 10
|
63
63
|
version: "2.10"
|
64
|
-
type: :development
|
65
64
|
prerelease: false
|
65
|
+
type: :development
|
66
66
|
requirement: *id003
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: httpclient
|
@@ -77,8 +77,8 @@ dependencies:
|
|
77
77
|
- 2
|
78
78
|
- 4
|
79
79
|
version: 2.2.4
|
80
|
-
type: :development
|
81
80
|
prerelease: false
|
81
|
+
type: :development
|
82
82
|
requirement: *id004
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: patron
|
@@ -93,8 +93,8 @@ dependencies:
|
|
93
93
|
- 4
|
94
94
|
- 18
|
95
95
|
version: 0.4.18
|
96
|
-
type: :development
|
97
96
|
prerelease: false
|
97
|
+
type: :development
|
98
98
|
requirement: *id005
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: em-http-request
|
@@ -109,8 +109,8 @@ dependencies:
|
|
109
109
|
- 0
|
110
110
|
- 2
|
111
111
|
version: 1.0.2
|
112
|
-
type: :development
|
113
112
|
prerelease: false
|
113
|
+
type: :development
|
114
114
|
requirement: *id006
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: curb
|
@@ -125,8 +125,8 @@ dependencies:
|
|
125
125
|
- 8
|
126
126
|
- 0
|
127
127
|
version: 0.8.0
|
128
|
-
type: :development
|
129
128
|
prerelease: false
|
129
|
+
type: :development
|
130
130
|
requirement: *id007
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: typhoeus
|
@@ -141,8 +141,8 @@ dependencies:
|
|
141
141
|
- 5
|
142
142
|
- 0
|
143
143
|
version: 0.5.0
|
144
|
-
type: :development
|
145
144
|
prerelease: false
|
145
|
+
type: :development
|
146
146
|
requirement: *id008
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: excon
|
@@ -151,30 +151,30 @@ dependencies:
|
|
151
151
|
requirements:
|
152
152
|
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
hash:
|
154
|
+
hash: 71
|
155
155
|
segments:
|
156
156
|
- 0
|
157
|
-
-
|
157
|
+
- 22
|
158
158
|
- 0
|
159
|
-
version: 0.
|
160
|
-
type: :development
|
159
|
+
version: 0.22.0
|
161
160
|
prerelease: false
|
161
|
+
type: :development
|
162
162
|
requirement: *id009
|
163
163
|
- !ruby/object:Gem::Dependency
|
164
164
|
name: minitest
|
165
165
|
version_requirements: &id010 !ruby/object:Gem::Requirement
|
166
166
|
none: false
|
167
167
|
requirements:
|
168
|
-
- -
|
168
|
+
- - ~>
|
169
169
|
- !ruby/object:Gem::Version
|
170
|
-
hash:
|
170
|
+
hash: 55
|
171
171
|
segments:
|
172
|
-
-
|
173
|
-
-
|
174
|
-
-
|
175
|
-
version:
|
176
|
-
type: :development
|
172
|
+
- 5
|
173
|
+
- 0
|
174
|
+
- 0
|
175
|
+
version: 5.0.0
|
177
176
|
prerelease: false
|
177
|
+
type: :development
|
178
178
|
requirement: *id010
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: rdoc
|
@@ -189,8 +189,8 @@ dependencies:
|
|
189
189
|
- 5
|
190
190
|
- 0
|
191
191
|
version: 3.5.0
|
192
|
-
type: :development
|
193
192
|
prerelease: false
|
193
|
+
type: :development
|
194
194
|
requirement: *id011
|
195
195
|
description: WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.
|
196
196
|
email:
|
@@ -205,7 +205,6 @@ files:
|
|
205
205
|
- .gemtest
|
206
206
|
- .gitignore
|
207
207
|
- .rspec-tm
|
208
|
-
- .rvmrc
|
209
208
|
- .travis.yml
|
210
209
|
- CHANGELOG.md
|
211
210
|
- Gemfile
|
@@ -346,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
346
345
|
requirements: []
|
347
346
|
|
348
347
|
rubyforge_project: webmock
|
349
|
-
rubygems_version: 1.8.
|
348
|
+
rubygems_version: 1.8.25
|
350
349
|
signing_key:
|
351
350
|
specification_version: 3
|
352
351
|
summary: Library for stubbing HTTP requests in Ruby.
|