webmock 1.11.0 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|