webmock 1.7.10 → 1.8.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/.travis.yml +2 -2
- data/CHANGELOG.md +98 -24
- data/Gemfile +2 -3
- data/README.md +45 -4
- data/Rakefile +2 -2
- data/lib/webmock.rb +3 -0
- data/lib/webmock/api.rb +34 -6
- data/lib/webmock/http_lib_adapters/curb_adapter.rb +4 -41
- 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 +94 -0
- data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +31 -4
- data/lib/webmock/http_lib_adapters/net_http.rb +2 -0
- data/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +4 -3
- data/lib/webmock/matchers/hash_including_matcher.rb +25 -0
- data/lib/webmock/rack_response.rb +8 -1
- data/lib/webmock/request_pattern.rb +108 -77
- data/lib/webmock/request_signature.rb +1 -0
- data/lib/webmock/stub_registry.rb +9 -8
- data/lib/webmock/version.rb +1 -1
- data/lib/webmock/webmock.rb +5 -2
- data/minitest/webmock_spec.rb +22 -2
- data/spec/acceptance/curb/curb_spec_helper.rb +12 -2
- data/spec/acceptance/em_http_request/em_http_request_spec.rb +42 -33
- data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +4 -2
- data/spec/acceptance/excon/excon_spec.rb +15 -0
- data/spec/acceptance/excon/excon_spec_helper.rb +37 -0
- data/spec/acceptance/net_http/net_http_spec.rb +7 -0
- data/spec/acceptance/net_http/net_http_spec_helper.rb +3 -1
- data/spec/acceptance/patron/patron_spec.rb +12 -3
- data/spec/acceptance/patron/patron_spec_helper.rb +2 -2
- data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +3 -3
- data/spec/acceptance/shared/callbacks.rb +22 -6
- data/spec/acceptance/shared/complex_cross_concern_behaviors.rb +21 -0
- data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +10 -11
- data/spec/acceptance/shared/precedence_of_stubs.rb +1 -1
- data/spec/acceptance/shared/request_expectations.rb +49 -3
- data/spec/acceptance/shared/returning_declared_responses.rb +9 -21
- data/spec/acceptance/shared/stubbing_requests.rb +80 -4
- data/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +1 -1
- data/spec/acceptance/webmock_shared.rb +11 -8
- data/spec/spec_helper.rb +3 -3
- data/spec/support/my_rack_app.rb +25 -1
- data/spec/support/webmock_server.rb +9 -6
- data/spec/unit/rack_response_spec.rb +18 -0
- data/spec/unit/request_pattern_spec.rb +205 -96
- data/spec/unit/request_signature_spec.rb +36 -34
- data/spec/unit/util/uri_spec.rb +14 -2
- data/test/shared_test.rb +31 -2
- data/webmock.gemspec +9 -7
- metadata +86 -73
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,79 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.8.0
|
4
|
+
|
5
|
+
* Matching request body against partial hash.
|
6
|
+
|
7
|
+
stub_http_request(:post, "www.example.com").
|
8
|
+
with(:body => hash_including({:data => {:a => '1', :b => 'five'}}))
|
9
|
+
|
10
|
+
RestClient.post('www.example.com', "data[a]=1&data[b]=five&x=1",
|
11
|
+
:content_type => 'application/x-www-form-urlencoded') # ===> Success
|
12
|
+
|
13
|
+
request(:post, "www.example.com").
|
14
|
+
with(:body => hash_including({:data => {:a => '1', :b => 'five'}}),
|
15
|
+
:headers => 'Content-Type' => 'application/json').should have_been_made # ===> Success
|
16
|
+
|
17
|
+
Thanks to [Marnen Laibow-Koser](https://github.com/marnen) for help with this solution
|
18
|
+
|
19
|
+
* Matching request query params against partial hash.
|
20
|
+
|
21
|
+
stub_http_request(:get, "www.example.com").with(:query => hash_including({"a" => ["b", "c"]}))
|
22
|
+
|
23
|
+
RestClient.get("http://www.example.com/?a[]=b&a[]=c&x=1") # ===> Success
|
24
|
+
|
25
|
+
request(:get, "www.example.com").
|
26
|
+
with(:query => hash_including({"a" => ["b", "c"]})).should have_been_made # ===> Success
|
27
|
+
|
28
|
+
* Added support for Excon.
|
29
|
+
|
30
|
+
Thanks to [Dimitrij Denissenko](https://github.com/dim)
|
31
|
+
|
32
|
+
* Added support for setting expectations on the request stub with `assert_requested`
|
33
|
+
|
34
|
+
stub_get = stub_request(:get, "www.example.com")
|
35
|
+
stub_post = stub_request(:post, "www.example.com")
|
36
|
+
|
37
|
+
Net::HTTP.get('www.example.com', '/')
|
38
|
+
|
39
|
+
assert_requested(stub_get)
|
40
|
+
assert_not_requested(stub_post)
|
41
|
+
|
42
|
+
Thanks to [Nicolas Fouché](https://github.com/nfo)
|
43
|
+
|
44
|
+
* `WebMock.disable_net_connect!` accepts `RegExp` as `:allow` parameter
|
45
|
+
|
46
|
+
Thanks to [Frank Schumacher](https://github.com/thenoseman)
|
47
|
+
|
48
|
+
* Ensure multiple values for the same header can be recorded and played back
|
49
|
+
|
50
|
+
Thanks to [Myron Marston](https://github.com/myronmarston)
|
51
|
+
|
52
|
+
* Updated dependency on Addressable to version >= 2.2.7 to handle nested hash query values. I.e. `?one[two][three][]=four&one[two][three][]=five`
|
53
|
+
|
54
|
+
* Fixed compatibility with Curb >= 0.7.16 This breaks compatibility with Curb < 0.7.16
|
55
|
+
|
56
|
+
* Fix #to_rack to handle non-array response bodies.
|
57
|
+
|
58
|
+
Thanks to [Tammer Saleh](https://github.com/tsaleh)
|
59
|
+
|
60
|
+
* Added `read_timeout` accessor to StubSocket which fixes compatibility with aws-sdk
|
61
|
+
|
62
|
+
Thanks to [Lin Jen-Shin](https://github.com/godfat)
|
63
|
+
|
64
|
+
* Fix warning "instance variable @query_params not initialized"
|
65
|
+
|
66
|
+
Thanks to [Joe Van Dyk](https://github.com/joevandyk)
|
67
|
+
|
68
|
+
* Using bytesize of message instead of its length for content-length header in em-http-request adapter.
|
69
|
+
This fixes a problem with messages getting truncated in Ruby >= 1.9
|
70
|
+
|
71
|
+
Thanks to [Mark Abramov](https://github.com/markiz)
|
72
|
+
|
73
|
+
* Fixed problem with body params being matched even if params were different.
|
74
|
+
|
75
|
+
Thanks to [Evgeniy Dolzhenko](https://github.com/dolzenko) for reporting this issue.
|
76
|
+
|
3
77
|
## 1.7.10
|
4
78
|
|
5
79
|
* Yanked 1.7.9 and rebuilt gem on 1.8.7 to deal with syck/psych incompatibilties in gemspec.
|
@@ -297,11 +371,11 @@ josevalim:
|
|
297
371
|
|
298
372
|
This feature was available before only for localhost with `:allow_localhost => true`
|
299
373
|
|
300
|
-
|
374
|
+
WebMock.disable_net_connect!(:allow => "www.example.org")
|
301
375
|
|
302
|
-
|
376
|
+
Net::HTTP.get('www.something.com', '/') # ===> Failure
|
303
377
|
|
304
|
-
|
378
|
+
Net::HTTP.get('www.example.org', '/') # ===> Allowed.
|
305
379
|
|
306
380
|
* Fixed Net::HTTP adapter so that it preserves the original behavior of Net::HTTP.
|
307
381
|
|
@@ -333,51 +407,51 @@ josevalim:
|
|
333
407
|
|
334
408
|
* Matching query params using a hash
|
335
409
|
|
336
|
-
|
410
|
+
stub_http_request(:get, "www.example.com").with(:query => {"a" => ["b", "c"]})
|
337
411
|
|
338
|
-
|
412
|
+
RestClient.get("http://www.example.com/?a[]=b&a[]=c") # ===> Success
|
339
413
|
|
340
|
-
|
414
|
+
request(:get, "www.example.com").with(:query => {"a" => ["b", "c"]}).should have_been_made # ===> Success
|
341
415
|
|
342
416
|
* Matching request body against a hash. Body can be URL-Encoded, JSON or XML.
|
343
417
|
|
344
418
|
(Thanks to Steve Tooke for the idea and a solution for url-encoded bodies)
|
345
419
|
|
346
|
-
|
347
|
-
|
420
|
+
stub_http_request(:post, "www.example.com").
|
421
|
+
with(:body => {:data => {:a => '1', :b => 'five'}})
|
348
422
|
|
349
|
-
|
350
|
-
|
423
|
+
RestClient.post('www.example.com', "data[a]=1&data[b]=five",
|
424
|
+
:content_type => 'application/x-www-form-urlencoded') # ===> Success
|
351
425
|
|
352
|
-
|
353
|
-
|
426
|
+
RestClient.post('www.example.com', '{"data":{"a":"1","b":"five"}}',
|
427
|
+
:content_type => 'application/json') # ===> Success
|
354
428
|
|
355
|
-
|
356
|
-
|
429
|
+
RestClient.post('www.example.com', '<data a="1" b="five" />',
|
430
|
+
:content_type => 'application/xml' ) # ===> Success
|
357
431
|
|
358
|
-
|
432
|
+
request(:post, "www.example.com").
|
359
433
|
with(:body => {:data => {:a => '1', :b => 'five'}},
|
360
|
-
|
434
|
+
:headers => 'Content-Type' => 'application/json').should have_been_made # ===> Success
|
361
435
|
|
362
436
|
* Request callbacks (Thanks to Myron Marston for all suggestions)
|
363
437
|
|
364
438
|
WebMock can now invoke callbacks for stubbed or real requests:
|
365
439
|
|
366
|
-
|
367
|
-
|
368
|
-
|
440
|
+
WebMock.after_request do |request_signature, response|
|
441
|
+
puts "Request #{request_signature} was made and #{response} was returned"
|
442
|
+
end
|
369
443
|
|
370
444
|
invoke callbacks for real requests only and except requests made with Patron client
|
371
445
|
|
372
|
-
|
373
|
-
|
374
|
-
|
446
|
+
WebMock.after_request(:except => [:patron], :real_requests_only => true) do |request_signature, response|
|
447
|
+
puts "Request #{request_signature} was made and #{response} was returned"
|
448
|
+
end
|
375
449
|
|
376
450
|
* `to_raise()` now accepts an exception instance or a string as argument in addition to an exception class
|
377
451
|
|
378
|
-
|
452
|
+
stub_request(:any, 'www.example.net').to_raise(StandardError.new("some error"))
|
379
453
|
|
380
|
-
|
454
|
+
stub_request(:any, 'www.example.net').to_raise("some error")
|
381
455
|
|
382
456
|
* Matching requests based on a URI is 30% faster
|
383
457
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
WebMock [](http://travis-ci.org/bblimke/webmock)
|
1
|
+
WebMock [](http://travis-ci.org/bblimke/webmock) [](http://gemnasium.com/bblimke/webmock)
|
2
2
|
=======
|
3
3
|
|
4
4
|
Library for stubbing and setting expectations on HTTP requests in Ruby.
|
@@ -24,6 +24,7 @@ Supported HTTP libraries
|
|
24
24
|
* EM-HTTP-Request
|
25
25
|
* Curb (currently only Curb::Easy)
|
26
26
|
* Typhoeus (currently only Typhoeus::Hydra)
|
27
|
+
* Excon
|
27
28
|
|
28
29
|
Supported Ruby Interpreters
|
29
30
|
---------------------------
|
@@ -32,13 +33,13 @@ Supported Ruby Interpreters
|
|
32
33
|
* MRI 1.8.7
|
33
34
|
* MRI 1.9.1
|
34
35
|
* MRI 1.9.2
|
35
|
-
* MRI 1.9.3
|
36
|
+
* MRI 1.9.3
|
36
37
|
* REE 1.8.7
|
37
38
|
* JRuby
|
38
39
|
|
39
40
|
##Installation
|
40
41
|
|
41
|
-
gem install webmock
|
42
|
+
gem install webmock
|
42
43
|
|
43
44
|
### or to install the latest development version from github master
|
44
45
|
|
@@ -125,6 +126,14 @@ You can also use WebMock outside a test framework:
|
|
125
126
|
RestClient.post('www.example.com', '<data a="1" b="five" />',
|
126
127
|
:content_type => 'application/xml' ) # ===> Success
|
127
128
|
|
129
|
+
### Matching request body against partial hash.
|
130
|
+
|
131
|
+
stub_http_request(:post, "www.example.com").
|
132
|
+
with(:body => hash_including({:data => {:a => '1', :b => 'five'}}))
|
133
|
+
|
134
|
+
RestClient.post('www.example.com', "data[a]=1&data[b]=five&x=1",
|
135
|
+
:content_type => 'application/x-www-form-urlencoded') # ===> Success
|
136
|
+
|
128
137
|
### Matching custom request headers
|
129
138
|
|
130
139
|
stub_request(:any, "www.example.com").with(:headers=>{ 'Header-Name' => 'Header-Value' })
|
@@ -172,6 +181,12 @@ You can also use WebMock outside a test framework:
|
|
172
181
|
|
173
182
|
RestClient.get("http://www.example.com/?a[]=b&a[]=c") # ===> Success
|
174
183
|
|
184
|
+
### Matching partial query params using hash
|
185
|
+
|
186
|
+
stub_http_request(:get, "www.example.com").with(:query => hash_including({"a" => ["b", "c"]}))
|
187
|
+
|
188
|
+
RestClient.get("http://www.example.com/?a[]=b&a[]=c&x=1") # ===> Success
|
189
|
+
|
175
190
|
### Stubbing with custom response
|
176
191
|
|
177
192
|
stub_request(:any, "www.example.com").to_return(:body => "abc", :status => 200, :headers => { 'Content-Length' => 3 } )
|
@@ -319,7 +334,7 @@ You can also use WebMock outside a test framework:
|
|
319
334
|
|
320
335
|
Net::HTTP.get('localhost:9887', '/') # ===> Allowed. Perhaps to Selenium?
|
321
336
|
|
322
|
-
### External requests can be disabled while allowing any hostname or port
|
337
|
+
### External requests can be disabled while allowing any hostname or port or parts thereof
|
323
338
|
|
324
339
|
WebMock.disable_net_connect!(:allow => "www.example.org:8080")
|
325
340
|
|
@@ -329,6 +344,10 @@ You can also use WebMock outside a test framework:
|
|
329
344
|
|
330
345
|
RestClient.get('www.example.org:8080', '/') # ===> Allowed
|
331
346
|
|
347
|
+
WebMock.disable_net_connect!(:allow => /ample.org/)
|
348
|
+
|
349
|
+
RestClient.get('www.example.org', '/') # ===> Allowed
|
350
|
+
|
332
351
|
## Connecting on Net::HTTP.start
|
333
352
|
|
334
353
|
HTTP protocol has 3 steps: connect, request and response (or 4 with close). Most Ruby HTTP client libraries
|
@@ -377,6 +396,16 @@ This forces WebMock Net::HTTP adapter to always connect on `Net::HTTP.start`.
|
|
377
396
|
|
378
397
|
assert_requested :get, "http://www.example.com" # ===> Success
|
379
398
|
|
399
|
+
### Setting expectations in Test::Unit on the stub
|
400
|
+
|
401
|
+
stub_get = stub_request(:get, "www.example.com")
|
402
|
+
stub_post = stub_request(:post, "www.example.com")
|
403
|
+
|
404
|
+
Net::HTTP.get('www.example.com', '/')
|
405
|
+
|
406
|
+
assert_requested(stub_get)
|
407
|
+
assert_not_requested(stub_post)
|
408
|
+
|
380
409
|
|
381
410
|
### Setting expectations in RSpec on `WebMock` module
|
382
411
|
This style is borrowed from [fakeweb-matcher](http://github.com/freelancing-god/fakeweb-matcher)
|
@@ -391,6 +420,8 @@ This forces WebMock Net::HTTP adapter to always connect on `Net::HTTP.start`.
|
|
391
420
|
|
392
421
|
WebMock.should have_requested(:get, "www.example.com").with(:query => {"a" => ["b", "c"]})
|
393
422
|
|
423
|
+
WebMock.should have_requested(:get, "www.example.com").with(:query => hash_including({"a" => ["b", "c"]}))
|
424
|
+
|
394
425
|
WebMock.should have_requested(:get, "www.example.com").
|
395
426
|
with(:body => {"a" => ["b", "c"]}, :headers => {'Content-Type' => 'application/json'})
|
396
427
|
|
@@ -406,6 +437,8 @@ This forces WebMock Net::HTTP adapter to always connect on `Net::HTTP.start`.
|
|
406
437
|
|
407
438
|
a_request(:get, "www.example.com").with(:query => {"a" => ["b", "c"]}).should have_been_made
|
408
439
|
|
440
|
+
a_request(:get, "www.example.com").with(:query => hash_including({"a" => ["b", "c"]})).should have_been_made
|
441
|
+
|
409
442
|
a_request(:post, "www.example.com").
|
410
443
|
with(:body => {"a" => ["b", "c"]}, :headers => {'Content-Type' => 'application/json'}).should have_been_made
|
411
444
|
|
@@ -654,6 +687,14 @@ People who submitted patches and new features or suggested improvements. Many th
|
|
654
687
|
* Eugene Pimenov
|
655
688
|
* Albert Llop
|
656
689
|
* Christopher Pickslay
|
690
|
+
* Tammer Saleh
|
691
|
+
* Nicolas Fouché
|
692
|
+
* Joe Van Dyk
|
693
|
+
* Mark Abramov
|
694
|
+
* Frank Schumacher
|
695
|
+
* Dimitrij Denissenko
|
696
|
+
* Marnen Laibow-Koser
|
697
|
+
* Evgeniy Dolzhenko
|
657
698
|
|
658
699
|
For a full list of contributors you can visit the
|
659
700
|
[contributors](https://github.com/bblimke/webmock/contributors) page.
|
data/Rakefile
CHANGED
@@ -26,8 +26,8 @@ RSpec::Core::RakeTask.new(:spec_http_without_webmock) do |t|
|
|
26
26
|
end
|
27
27
|
|
28
28
|
|
29
|
-
task :
|
30
|
-
sh "
|
29
|
+
task :em_http_request_0_x_spec do
|
30
|
+
sh "EM_HTTP_REQUEST_0_X=true bundle install && bundle exec rspec spec/acceptance/em_http_request/em_http_request_spec.rb" if RUBY_VERSION <= "1.8.7"
|
31
31
|
end
|
32
32
|
|
33
33
|
require 'rake/testtask'
|
data/lib/webmock.rb
CHANGED
@@ -14,6 +14,7 @@ require 'webmock/http_lib_adapters/patron_adapter'
|
|
14
14
|
require 'webmock/http_lib_adapters/curb_adapter'
|
15
15
|
require 'webmock/http_lib_adapters/em_http_request_adapter'
|
16
16
|
require 'webmock/http_lib_adapters/typhoeus_hydra_adapter'
|
17
|
+
require 'webmock/http_lib_adapters/excon_adapter'
|
17
18
|
|
18
19
|
require 'webmock/errors'
|
19
20
|
|
@@ -23,6 +24,8 @@ require 'webmock/util/hash_counter'
|
|
23
24
|
require 'webmock/util/hash_keys_stringifier'
|
24
25
|
require 'webmock/util/json'
|
25
26
|
|
27
|
+
require 'webmock/matchers/hash_including_matcher'
|
28
|
+
|
26
29
|
require 'webmock/request_pattern'
|
27
30
|
require 'webmock/request_signature'
|
28
31
|
require 'webmock/responses_sequence'
|
data/lib/webmock/api.rb
CHANGED
@@ -17,17 +17,45 @@ module WebMock
|
|
17
17
|
alias :request :a_request
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
|
21
|
+
def assert_requested(*args, &block)
|
22
|
+
if not args[0].is_a?(WebMock::RequestStub)
|
23
|
+
args = convert_uri_method_and_options_to_request_and_options(*args, &block)
|
24
|
+
end
|
25
|
+
assert_request_requested(*args, &block)
|
26
|
+
end
|
27
|
+
|
28
|
+
def assert_not_requested(*args, &block)
|
29
|
+
if not args[0].is_a?(WebMock::RequestStub)
|
30
|
+
args = convert_uri_method_and_options_to_request_and_options(*args, &block)
|
31
|
+
end
|
32
|
+
assert_request_not_requested(*args, &block)
|
33
|
+
end
|
34
|
+
|
35
|
+
def hash_including(expected)
|
36
|
+
if defined?(::RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher)
|
37
|
+
RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher.new(expected)
|
38
|
+
else
|
39
|
+
WebMock::Matchers::HashIncludingMatcher.new(expected)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def convert_uri_method_and_options_to_request_and_options(*args, &block)
|
46
|
+
request = WebMock::RequestPattern.new(*args).with(&block)
|
47
|
+
[request, args[2] || {}]
|
48
|
+
end
|
49
|
+
|
50
|
+
def assert_request_requested(request, options = {})
|
51
|
+
verifier = WebMock::RequestExecutionVerifier.new(request, options.delete(:times) || 1)
|
24
52
|
WebMock::AssertionFailure.failure(verifier.failure_message) unless verifier.matches?
|
25
53
|
end
|
26
54
|
|
27
|
-
def
|
28
|
-
request = WebMock::RequestPattern.new(method, uri, options).with(&block)
|
55
|
+
def assert_request_not_requested(request, options = {})
|
29
56
|
verifier = WebMock::RequestExecutionVerifier.new(request, options.delete(:times))
|
30
57
|
WebMock::AssertionFailure.failure(verifier.negative_failure_message) unless verifier.does_not_match?
|
31
58
|
end
|
59
|
+
|
32
60
|
end
|
33
61
|
end
|
@@ -53,6 +53,7 @@ if defined?(Curl)
|
|
53
53
|
module Curl
|
54
54
|
class WebMockCurlEasy < Curl::Easy
|
55
55
|
def curb_or_webmock
|
56
|
+
|
56
57
|
request_signature = build_request_signature
|
57
58
|
WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
|
58
59
|
|
@@ -169,9 +170,7 @@ if defined?(Curl)
|
|
169
170
|
|
170
171
|
def http_with_webmock(method)
|
171
172
|
@webmock_method = method
|
172
|
-
curb_or_webmock do
|
173
173
|
http_without_webmock(method)
|
174
|
-
end
|
175
174
|
end
|
176
175
|
alias_method :http_without_webmock, :http
|
177
176
|
alias_method :http, :http_with_webmock
|
@@ -179,9 +178,7 @@ if defined?(Curl)
|
|
179
178
|
%w[ get head delete ].each do |verb|
|
180
179
|
define_method "http_#{verb}_with_webmock" do
|
181
180
|
@webmock_method = verb
|
182
|
-
|
183
|
-
send( "http_#{verb}_without_webmock" )
|
184
|
-
end
|
181
|
+
send( "http_#{verb}_without_webmock" )
|
185
182
|
end
|
186
183
|
|
187
184
|
alias_method "http_#{verb}_without_webmock", "http_#{verb}"
|
@@ -191,9 +188,7 @@ if defined?(Curl)
|
|
191
188
|
def http_put_with_webmock data = nil
|
192
189
|
@webmock_method = :put
|
193
190
|
@put_data = data if data
|
194
|
-
|
195
|
-
http_put_without_webmock(data)
|
196
|
-
end
|
191
|
+
http_put_without_webmock(data)
|
197
192
|
end
|
198
193
|
alias_method :http_put_without_webmock, :http_put
|
199
194
|
alias_method :http_put, :http_put_with_webmock
|
@@ -201,9 +196,7 @@ if defined?(Curl)
|
|
201
196
|
def http_post_with_webmock *data
|
202
197
|
@webmock_method = :post
|
203
198
|
@post_body = data.join('&') if data && !data.empty?
|
204
|
-
|
205
|
-
http_post_without_webmock(*data)
|
206
|
-
end
|
199
|
+
http_post_without_webmock(*data)
|
207
200
|
end
|
208
201
|
alias_method :http_post_without_webmock, :http_post
|
209
202
|
alias_method :http_post, :http_post_with_webmock
|
@@ -287,36 +280,6 @@ if defined?(Curl)
|
|
287
280
|
alias_method "on_#{callback}_without_webmock", "on_#{callback}"
|
288
281
|
alias_method "on_#{callback}", "on_#{callback}_with_webmock"
|
289
282
|
end
|
290
|
-
|
291
|
-
%w[ http_get http_head http_delete perform ].each do |method|
|
292
|
-
class_eval <<-METHOD, __FILE__, __LINE__
|
293
|
-
def self.#{method}(url, &block)
|
294
|
-
c = new
|
295
|
-
c.url = url
|
296
|
-
block.call(c) if block
|
297
|
-
c.send("#{method}")
|
298
|
-
c
|
299
|
-
end
|
300
|
-
METHOD
|
301
|
-
end
|
302
|
-
|
303
|
-
class_eval <<-METHOD, __FILE__, __LINE__
|
304
|
-
def self.http_put(url, data, &block)
|
305
|
-
c = new
|
306
|
-
c.url = url
|
307
|
-
block.call(c) if block
|
308
|
-
c.send(:http_put, data)
|
309
|
-
c
|
310
|
-
end
|
311
|
-
|
312
|
-
def self.http_post(url, *data, &block)
|
313
|
-
c = new
|
314
|
-
c.url = url
|
315
|
-
block.call(c) if block
|
316
|
-
c.send(:http_post, *data)
|
317
|
-
c
|
318
|
-
end
|
319
|
-
METHOD
|
320
283
|
end
|
321
284
|
end
|
322
285
|
end
|