webmock 1.6.4 → 1.7.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/.gemtest +0 -0
- data/.gitignore +3 -1
- data/.travis.yml +6 -0
- data/CHANGELOG.md +211 -118
- data/Gemfile +16 -1
- data/Guardfile +24 -0
- data/LICENSE +1 -1
- data/README.md +64 -15
- data/Rakefile +19 -6
- data/lib/webmock.rb +9 -4
- data/lib/webmock/api.rb +5 -4
- data/lib/webmock/assertion_failure.rb +1 -1
- data/lib/webmock/callback_registry.rb +1 -1
- data/lib/webmock/config.rb +2 -2
- data/lib/webmock/cucumber.rb +1 -1
- data/lib/webmock/errors.rb +17 -5
- data/lib/webmock/http_lib_adapters/{curb.rb → curb_adapter.rb} +79 -49
- data/lib/webmock/http_lib_adapters/{em_http_request.rb → em_http_request/em_http_request_0_x.rb} +20 -15
- data/lib/webmock/http_lib_adapters/em_http_request/em_http_request_1_x.rb +201 -0
- data/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +11 -0
- data/lib/webmock/http_lib_adapters/http_lib_adapter.rb +7 -0
- data/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +19 -0
- data/lib/webmock/http_lib_adapters/{httpclient.rb → httpclient_adapter.rb} +35 -8
- data/lib/webmock/http_lib_adapters/net_http.rb +84 -25
- data/lib/webmock/http_lib_adapters/net_http_response.rb +17 -17
- data/lib/webmock/http_lib_adapters/patron_adapter.rb +124 -0
- data/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +166 -0
- data/lib/webmock/minitest.rb +15 -0
- data/lib/webmock/rack_response.rb +52 -0
- data/lib/webmock/request_pattern.rb +4 -2
- data/lib/webmock/request_signature.rb +4 -0
- data/lib/webmock/request_stub.rb +35 -2
- data/lib/webmock/responses_sequence.rb +2 -2
- data/lib/webmock/rspec.rb +2 -2
- data/lib/webmock/rspec/matchers.rb +9 -4
- data/lib/webmock/rspec/matchers/webmock_matcher.rb +1 -1
- data/lib/webmock/stub_registry.rb +1 -1
- data/lib/webmock/stub_request_snippet.rb +14 -11
- data/lib/webmock/util/hash_keys_stringifier.rb +4 -4
- data/lib/webmock/util/headers.rb +3 -3
- data/lib/webmock/util/json.rb +54 -0
- data/lib/webmock/util/uri.rb +1 -1
- data/lib/webmock/version.rb +1 -1
- data/lib/webmock/webmock.rb +20 -3
- data/minitest/test_helper.rb +29 -0
- data/minitest/test_webmock.rb +6 -0
- data/minitest/webmock_spec.rb +30 -0
- data/spec/curb_spec.rb +26 -8
- data/spec/curb_spec_helper.rb +6 -6
- data/spec/em_http_request_spec.rb +95 -1
- data/spec/em_http_request_spec_helper.rb +16 -16
- data/spec/errors_spec.rb +19 -4
- data/spec/example_curl_output.txt +22 -22
- data/spec/http_lib_adapters/http_lib_adapter_registry_spec.rb +17 -0
- data/spec/http_lib_adapters/http_lib_adapter_spec.rb +12 -0
- data/spec/httpclient_spec.rb +1 -1
- data/spec/httpclient_spec_helper.rb +3 -38
- data/spec/my_rack_app.rb +18 -0
- data/spec/net_http_shared.rb +125 -0
- data/spec/net_http_spec.rb +27 -31
- data/spec/net_http_spec_helper.rb +4 -34
- data/spec/network_connection.rb +1 -1
- data/spec/patron_spec_helper.rb +4 -7
- data/spec/quality_spec.rb +60 -0
- data/spec/rack_response_spec.rb +33 -0
- data/spec/real_net_http_spec.rb +20 -0
- data/spec/request_execution_verifier_spec.rb +8 -8
- data/spec/request_pattern_spec.rb +3 -3
- data/spec/request_stub_spec.rb +19 -19
- data/spec/response_spec.rb +8 -8
- data/spec/spec_helper.rb +14 -11
- data/spec/stub_request_snippet_spec.rb +85 -37
- data/spec/support/webmock_server.rb +62 -0
- data/spec/typhoeus_hydra_spec.rb +53 -0
- data/spec/typhoeus_hydra_spec_helper.rb +50 -0
- data/spec/util/headers_spec.rb +5 -5
- data/spec/util/json_spec.rb +7 -0
- data/spec/util/uri_spec.rb +1 -1
- data/spec/vendor/addressable/lib/uri.rb +1 -0
- data/spec/vendor/crack/lib/crack.rb +1 -0
- data/spec/vendor/right_http_connection-1.2.4/History.txt +4 -4
- data/spec/vendor/right_http_connection-1.2.4/README.txt +4 -4
- data/spec/vendor/right_http_connection-1.2.4/Rakefile +3 -3
- data/spec/vendor/right_http_connection-1.2.4/lib/net_fix.rb +4 -4
- data/spec/vendor/right_http_connection-1.2.4/setup.rb +4 -4
- data/spec/webmock_shared.rb +375 -143
- data/spec/webmock_spec.rb +7 -0
- data/test/http_request.rb +24 -0
- data/test/shared_test.rb +47 -0
- data/test/test_helper.rb +6 -3
- data/test/test_webmock.rb +2 -67
- data/webmock.gemspec +8 -7
- metadata +153 -88
- data/lib/webmock/http_lib_adapters/patron.rb +0 -100
- data/spec/other_net_http_libs_spec.rb +0 -30
data/lib/webmock/rspec.rb
CHANGED
|
@@ -6,7 +6,7 @@ if defined?(RSpec) && defined?(RSpec::Expectations)
|
|
|
6
6
|
elsif defined?(Spec)
|
|
7
7
|
RSPEC_NAMESPACE = Spec
|
|
8
8
|
RSPEC_CONFIGURER = Spec::Runner
|
|
9
|
-
else
|
|
9
|
+
else
|
|
10
10
|
begin
|
|
11
11
|
require 'rspec/core'
|
|
12
12
|
require 'rspec/expectations'
|
|
@@ -19,7 +19,7 @@ else
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
require 'webmock/rspec/matchers'
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
RSPEC_CONFIGURER.configure { |config|
|
|
24
24
|
|
|
25
25
|
config.include WebMock::API
|
|
@@ -7,17 +7,22 @@ module WebMock
|
|
|
7
7
|
def have_been_made
|
|
8
8
|
WebMock::RequestPatternMatcher.new
|
|
9
9
|
end
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
def have_been_requested
|
|
12
|
+
WebMock::RequestPatternMatcher.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
|
|
11
16
|
def have_not_been_made
|
|
12
17
|
WebMock::RequestPatternMatcher.new.times(0)
|
|
13
18
|
end
|
|
14
|
-
|
|
19
|
+
|
|
15
20
|
def have_requested(method, uri)
|
|
16
21
|
WebMock::WebMockMatcher.new(method, uri)
|
|
17
22
|
end
|
|
18
|
-
|
|
23
|
+
|
|
19
24
|
def have_not_requested(method, uri)
|
|
20
25
|
WebMock::WebMockMatcher.new(method, uri).times(0)
|
|
21
26
|
end
|
|
22
27
|
end
|
|
23
|
-
end
|
|
28
|
+
end
|
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
module WebMock
|
|
2
2
|
class StubRequestSnippet
|
|
3
|
-
def initialize(
|
|
4
|
-
@
|
|
3
|
+
def initialize(request_stub)
|
|
4
|
+
@request_stub = request_stub
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
-
def to_s
|
|
8
|
-
|
|
9
|
-
string
|
|
7
|
+
def to_s(with_response = true)
|
|
8
|
+
request_pattern = @request_stub.request_pattern
|
|
9
|
+
string = "stub_request(:#{request_pattern.method_pattern.to_s},"
|
|
10
|
+
string << " \"#{request_pattern.uri_pattern.to_s}\")"
|
|
10
11
|
|
|
11
12
|
with = ""
|
|
12
13
|
|
|
13
|
-
if (
|
|
14
|
-
with << ":body => #{
|
|
14
|
+
if (request_pattern.body_pattern)
|
|
15
|
+
with << ":body => #{request_pattern.body_pattern.to_s}"
|
|
15
16
|
end
|
|
16
17
|
|
|
17
|
-
if (
|
|
18
|
-
with << "
|
|
18
|
+
if (request_pattern.headers_pattern)
|
|
19
|
+
with << ",\n " unless with.empty?
|
|
19
20
|
|
|
20
|
-
with << ":headers => #{
|
|
21
|
+
with << ":headers => #{request_pattern.headers_pattern.to_s}"
|
|
21
22
|
end
|
|
22
23
|
string << ".\n with(#{with})" unless with.empty?
|
|
23
|
-
|
|
24
|
+
if with_response
|
|
25
|
+
string << ".\n to_return(:status => 200, :body => \"\", :headers => {})"
|
|
26
|
+
end
|
|
24
27
|
string
|
|
25
28
|
end
|
|
26
29
|
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
module WebMock
|
|
2
2
|
module Util
|
|
3
3
|
class HashKeysStringifier
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
def self.stringify_keys!(arg)
|
|
6
6
|
case arg
|
|
7
7
|
when Array
|
|
8
8
|
arg.map { |elem| stringify_keys!(elem) }
|
|
9
9
|
when Hash
|
|
10
10
|
Hash[
|
|
11
|
-
*arg.map { |key, value|
|
|
11
|
+
*arg.map { |key, value|
|
|
12
12
|
k = key.is_a?(Symbol) ? key.to_s : key
|
|
13
13
|
v = stringify_keys!(value)
|
|
14
14
|
[k,v]
|
|
@@ -17,7 +17,7 @@ module WebMock
|
|
|
17
17
|
arg
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
|
-
end
|
|
23
|
+
end
|
data/lib/webmock/util/headers.rb
CHANGED
|
@@ -26,12 +26,12 @@ module WebMock
|
|
|
26
26
|
when Regexp then v.inspect
|
|
27
27
|
when Array then "["+v.map{|v| "'#{v.to_s}'"}.join(", ")+"]"
|
|
28
28
|
else "'#{v.to_s}'"
|
|
29
|
-
end
|
|
29
|
+
end
|
|
30
30
|
"'#{k}'=>#{v}"
|
|
31
|
-
end.sort.join(", ")
|
|
31
|
+
end.sort.join(", ")
|
|
32
32
|
str << '}'
|
|
33
33
|
end
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
def self.decode_userinfo_from_header(header)
|
|
36
36
|
header.sub(/^Basic /, "").unpack("m").first
|
|
37
37
|
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# This is a copy of https://github.com/jnunemaker/crack/blob/master/lib/crack/json.rb
|
|
2
|
+
# with date parsing removed
|
|
3
|
+
module WebMock
|
|
4
|
+
module Util
|
|
5
|
+
class JSON
|
|
6
|
+
def self.parse(json)
|
|
7
|
+
YAML.load(unescape(convert_json_to_yaml(json)))
|
|
8
|
+
rescue ArgumentError => e
|
|
9
|
+
raise ParseError, "Invalid JSON string"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
protected
|
|
13
|
+
def self.unescape(str)
|
|
14
|
+
str.gsub(/\\u([0-9a-f]{4})/) { [$1.hex].pack("U") }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Ensure that ":" and "," are always followed by a space
|
|
18
|
+
def self.convert_json_to_yaml(json) #:nodoc:
|
|
19
|
+
scanner, quoting, marks, pos, times = StringScanner.new(json), false, [], nil, []
|
|
20
|
+
while scanner.scan_until(/(\\['"]|['":,\\]|\\.)/)
|
|
21
|
+
case char = scanner[1]
|
|
22
|
+
when '"', "'"
|
|
23
|
+
if !quoting
|
|
24
|
+
quoting = char
|
|
25
|
+
pos = scanner.pos
|
|
26
|
+
elsif quoting == char
|
|
27
|
+
quoting = false
|
|
28
|
+
end
|
|
29
|
+
when ":",","
|
|
30
|
+
marks << scanner.pos - 1 unless quoting
|
|
31
|
+
when "\\"
|
|
32
|
+
scanner.skip(/\\/)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
if marks.empty?
|
|
37
|
+
json.gsub(/\\\//, '/')
|
|
38
|
+
else
|
|
39
|
+
left_pos = [-1].push(*marks)
|
|
40
|
+
right_pos = marks << json.length
|
|
41
|
+
output = []
|
|
42
|
+
left_pos.each_with_index do |left, i|
|
|
43
|
+
output << json[left.succ..right_pos[i]]
|
|
44
|
+
end
|
|
45
|
+
output = output * " "
|
|
46
|
+
|
|
47
|
+
times.each { |i| output[i-1] = ' ' }
|
|
48
|
+
output.gsub!(/\\\//, '/')
|
|
49
|
+
output
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
data/lib/webmock/util/uri.rb
CHANGED
data/lib/webmock/version.rb
CHANGED
data/lib/webmock/webmock.rb
CHANGED
|
@@ -25,6 +25,22 @@ module WebMock
|
|
|
25
25
|
VERSION
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
def self.disable!(options = {})
|
|
29
|
+
except = [options[:except]].flatten.compact
|
|
30
|
+
HttpLibAdapterRegistry.instance.each_adapter do |name, adapter|
|
|
31
|
+
adapter.enable!
|
|
32
|
+
adapter.disable! unless except.include?(name)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.enable!(options = {})
|
|
37
|
+
except = [options[:except]].flatten.compact
|
|
38
|
+
HttpLibAdapterRegistry.instance.each_adapter do |name, adapter|
|
|
39
|
+
adapter.disable!
|
|
40
|
+
adapter.enable! unless except.include?(name)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
28
44
|
def self.allow_net_connect!(options = {})
|
|
29
45
|
Config.instance.allow_net_connect = true
|
|
30
46
|
Config.instance.net_http_connect_on_start = options[:net_http_connect_on_start]
|
|
@@ -43,19 +59,19 @@ module WebMock
|
|
|
43
59
|
end
|
|
44
60
|
Config.instance.allow_net_connect ||
|
|
45
61
|
(Config.instance.allow_localhost && WebMock::Util::URI.is_uri_localhost?(uri)) ||
|
|
46
|
-
Config.instance.allow && Config.instance.allow.include?(uri.host)
|
|
62
|
+
Config.instance.allow && (Config.instance.allow.include?(uri.host) || Config.instance.allow.include?("#{uri.host}:#{uri.port}"))
|
|
47
63
|
end
|
|
48
64
|
|
|
49
65
|
def self.reset!
|
|
50
66
|
WebMock::RequestRegistry.instance.reset!
|
|
51
67
|
WebMock::StubRegistry.instance.reset!
|
|
52
68
|
end
|
|
53
|
-
|
|
69
|
+
|
|
54
70
|
def self.reset_webmock
|
|
55
71
|
WebMock::Deprecation.warning("WebMock.reset_webmock is deprecated. Please use WebMock.reset! method instead")
|
|
56
72
|
reset!
|
|
57
73
|
end
|
|
58
|
-
|
|
74
|
+
|
|
59
75
|
def self.reset_callbacks
|
|
60
76
|
WebMock::CallbackRegistry.reset
|
|
61
77
|
end
|
|
@@ -89,4 +105,5 @@ module WebMock
|
|
|
89
105
|
))
|
|
90
106
|
end
|
|
91
107
|
|
|
108
|
+
self.enable!
|
|
92
109
|
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
|
|
3
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
4
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
5
|
+
|
|
6
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test/http_request')
|
|
7
|
+
|
|
8
|
+
gem "minitest"
|
|
9
|
+
require 'minitest/autorun'
|
|
10
|
+
require 'webmock/minitest'
|
|
11
|
+
|
|
12
|
+
class MiniTest::Unit::TestCase
|
|
13
|
+
def assert_raise(*exp, &block)
|
|
14
|
+
assert_raises(*exp, &block)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def assert_raise_with_message(e, message, &block)
|
|
18
|
+
e = assert_raises(e, &block)
|
|
19
|
+
if message.is_a?(Regexp)
|
|
20
|
+
assert_match(message, e.message)
|
|
21
|
+
else
|
|
22
|
+
assert_equal(message, e.message)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def assert_fail(message, &block)
|
|
27
|
+
assert_raise_with_message(MiniTest::Assertion, message, &block)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/test_helper')
|
|
2
|
+
|
|
3
|
+
describe "Webmock" do
|
|
4
|
+
include HttpRequestTestHelper
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
stub_http_request(:any, "http://www.example.com")
|
|
8
|
+
stub_http_request(:any, "https://www.example.com")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise error on non stubbed request" do
|
|
12
|
+
lambda { http_request(:get, "http://www.example.net/") }.must_raise(WebMock::NetConnectNotAllowedError)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should verify that expected request occured" do
|
|
16
|
+
http_request(:get, "http://www.example.com/")
|
|
17
|
+
assert_requested(:get, "http://www.example.com", :times => 1)
|
|
18
|
+
assert_requested(:get, "http://www.example.com")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should verify that expect request didn't occur" do
|
|
22
|
+
expected_message = "The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times"
|
|
23
|
+
expected_message << "\n\nThe following requests were made:\n\nNo requests were made.\n============================================================"
|
|
24
|
+
assert_fail(expected_message) do
|
|
25
|
+
assert_requested(:get, "http://www.example.com")
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
data/spec/curb_spec.rb
CHANGED
|
@@ -6,7 +6,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
6
6
|
|
|
7
7
|
shared_examples_for "Curb" do
|
|
8
8
|
include CurbSpecHelper
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
it_should_behave_like "WebMock"
|
|
11
11
|
|
|
12
12
|
describe "when doing PUTs" do
|
|
@@ -35,7 +35,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
35
35
|
stub_request(:any, "example.com").to_return(:body => body)
|
|
36
36
|
|
|
37
37
|
test = nil
|
|
38
|
-
@curl.on_success do |c|
|
|
38
|
+
@curl.on_success do |c|
|
|
39
39
|
test = c.body_str
|
|
40
40
|
end
|
|
41
41
|
@curl.http_get
|
|
@@ -48,7 +48,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
48
48
|
to_return(:status => [response_code, "Server On Fire"])
|
|
49
49
|
|
|
50
50
|
test = nil
|
|
51
|
-
@curl.on_failure do |c, code|
|
|
51
|
+
@curl.on_failure do |c, code|
|
|
52
52
|
test = code
|
|
53
53
|
end
|
|
54
54
|
@curl.http_get
|
|
@@ -61,19 +61,19 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
61
61
|
to_return(:body => body)
|
|
62
62
|
|
|
63
63
|
test = nil
|
|
64
|
-
@curl.on_body do |data|
|
|
64
|
+
@curl.on_body do |data|
|
|
65
65
|
test = data
|
|
66
66
|
end
|
|
67
67
|
@curl.http_get
|
|
68
68
|
test.should == body
|
|
69
69
|
end
|
|
70
|
-
|
|
70
|
+
|
|
71
71
|
it "should call on_header when response headers are read" do
|
|
72
72
|
stub_request(:any, "example.com").
|
|
73
73
|
to_return(:headers => {:one => 1})
|
|
74
74
|
|
|
75
75
|
test = nil
|
|
76
|
-
@curl.on_header do |data|
|
|
76
|
+
@curl.on_header do |data|
|
|
77
77
|
test = data
|
|
78
78
|
end
|
|
79
79
|
@curl.http_get
|
|
@@ -119,7 +119,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
119
119
|
order.should == [:on_progress,:on_header,:on_body,:on_complete,:on_success]
|
|
120
120
|
end
|
|
121
121
|
|
|
122
|
-
it "should call callbacks in correct order on
|
|
122
|
+
it "should call callbacks in correct order on failed request" do
|
|
123
123
|
stub_request(:any, "example.com").to_return(:status => [500, ""])
|
|
124
124
|
order = []
|
|
125
125
|
@curl.on_success {|*args| order << :on_success }
|
|
@@ -217,7 +217,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
217
217
|
end
|
|
218
218
|
end
|
|
219
219
|
end
|
|
220
|
-
|
|
220
|
+
|
|
221
221
|
describe "#content_type" do
|
|
222
222
|
before(:each) do
|
|
223
223
|
@curl = Curl::Easy.new
|
|
@@ -281,6 +281,12 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
281
281
|
c.response_code.should == 200
|
|
282
282
|
end
|
|
283
283
|
|
|
284
|
+
it "should work with several body arguments for post using the class method" do
|
|
285
|
+
stub_http_request(:post, "www.example.com").with(:user => {:first_name=>'Bartosz', :last_name=>'Blimke'})
|
|
286
|
+
c = Curl::Easy.http_post "http://www.example.com", 'user[first_name]=Bartosz', 'user[last_name]=Blimke'
|
|
287
|
+
c.response_code.should == 200
|
|
288
|
+
end
|
|
289
|
+
|
|
284
290
|
it "should work with blank arguments for put" do
|
|
285
291
|
stub_http_request(:put, "www.example.com").with(:body => "01234")
|
|
286
292
|
c = Curl::Easy.new
|
|
@@ -289,6 +295,18 @@ unless RUBY_PLATFORM =~ /java/
|
|
|
289
295
|
c.http_put
|
|
290
296
|
c.response_code.should == 200
|
|
291
297
|
end
|
|
298
|
+
|
|
299
|
+
it "should work with multiple arguments for post" do
|
|
300
|
+
data = { :name => "john", :address => "111 example ave" }
|
|
301
|
+
|
|
302
|
+
stub_http_request(:post, "www.example.com").with(:body => data)
|
|
303
|
+
c = Curl::Easy.new
|
|
304
|
+
c.url = "http://www.example.com"
|
|
305
|
+
c.http_post Curl::PostField.content('name', data[:name]), Curl::PostField.content('address', data[:address])
|
|
306
|
+
|
|
307
|
+
c.response_code.should == 200
|
|
308
|
+
end
|
|
309
|
+
|
|
292
310
|
end
|
|
293
311
|
|
|
294
312
|
describe "using #perform for requests" do
|