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/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', Gem.loaded_specs['curb'].version.to_s, '0.7.16').check_version!
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(self.header_str) if @on_header
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
 
@@ -174,7 +174,7 @@ if defined?(EventMachine::HttpClient)
174
174
  WebMock::RequestSignature.new(
175
175
  method.downcase.to_sym,
176
176
  uri.to_s,
177
- :body => body,
177
+ :body => body || (@req.file && File.read(@req.file)),
178
178
  :headers => headers
179
179
  )
180
180
  end
@@ -5,7 +5,7 @@ rescue LoadError
5
5
  end
6
6
 
7
7
  if defined?(Excon)
8
- WebMock::VersionChecker.new('Excon', Excon::VERSION, '0.9.6').check_version!
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
 
@@ -193,7 +193,7 @@ end
193
193
 
194
194
  class StubSocket #:nodoc:
195
195
 
196
- attr_accessor :read_timeout
196
+ attr_accessor :read_timeout, :continue_timeout
197
197
 
198
198
  def initialize(*args)
199
199
  end
@@ -1,7 +1,7 @@
1
- require 'minitest/unit'
1
+ require 'minitest/test'
2
2
  require 'webmock'
3
3
 
4
- MiniTest::Unit::TestCase.class_eval do
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._assertions += 1
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
@@ -1,3 +1,3 @@
1
1
  module WebMock
2
- VERSION = '1.11.0' unless defined?(::WebMock::VERSION)
2
+ VERSION = '1.12.0' unless defined?(::WebMock::VERSION)
3
3
  end
@@ -59,18 +59,20 @@ module WebMock
59
59
  end
60
60
 
61
61
  Config.instance.allow_net_connect ||
62
- (
63
- Config.instance.allow_localhost && WebMock::Util::URI.is_uri_localhost?(uri)) ||
64
- Config.instance.allow && (
65
- (Config.instance.allow.kind_of?(Regexp) && uri.to_s =~ Config.instance.allow) ||
66
- (
67
- Config.instance.allow.respond_to?(:include?) &&
68
- (
69
- Config.instance.allow.include?(uri.host) ||
70
- Config.instance.allow.include?("#{uri.host}:#{uri.port}")
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!
@@ -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 "minitest"
8
+ gem 'minitest'
9
+
9
10
  require 'minitest/autorun'
10
11
  require 'webmock/minitest'
11
12
 
12
- class MiniTest::Unit::TestCase
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
- end
31
+
32
+ end
@@ -1,7 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
2
  require File.expand_path(File.dirname(__FILE__) + '/../test/shared_test')
3
3
 
4
- class MiniTestWebMock < MiniTest::Unit::TestCase
4
+ class MiniTestWebMock < MiniTest::Test
5
5
  include SharedTest
6
-
7
6
  end
@@ -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, _assertions
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, _assertions
16
+ assert_equal 2, assertions
17
17
 
18
18
  assert_not_requested(:post, "http://www.example.com")
19
- assert_equal 4, _assertions
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 = nil
88
+ test = []
89
89
  @curl.on_header do |data|
90
- test = data
90
+ test << data
91
91
  end
92
92
  @curl.http_get
93
- test.should match(/One: 1/)
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)
@@ -17,6 +17,7 @@ module EMHttpRequestSpecHelper
17
17
  http = request.send(method, {
18
18
  :timeout => 30,
19
19
  :body => options[:body],
20
+ :file => options[:file],
20
21
  :query => options[:query],
21
22
  :head => head.merge('authorization' => [uri.user, uri.password])
22
23
  }, &block)
@@ -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){ server.shutdown }
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+\|/, '')
@@ -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.11.0'
29
- s.add_development_dependency 'minitest', '>= 2.2.2'
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: 59
4
+ hash: 39
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 11
8
+ - 12
9
9
  - 0
10
- version: 1.11.0
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-03-04 00:00:00 Z
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: 51
154
+ hash: 71
155
155
  segments:
156
156
  - 0
157
- - 11
157
+ - 22
158
158
  - 0
159
- version: 0.11.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: 3
170
+ hash: 55
171
171
  segments:
172
- - 2
173
- - 2
174
- - 2
175
- version: 2.2.2
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.19
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.