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/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.