diff --git a/Gemfile b/Gemfile
index ebfd88b..aee7ddf 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,7 +2,6 @@ source 'https://rubygems.org'
gemspec
gem 'rake'
-gem 'fakeweb', '~> 1.3'
gem 'mongrel', '1.2.0.pre2'
group :development do
@@ -16,4 +15,5 @@ group :test do
gem 'simplecov', require: false
gem 'aruba'
gem 'cucumber', '~> 2.3'
+ gem 'webmock'
end
diff --git a/spec/httparty/request_spec.rb b/spec/httparty/request_spec.rb
index b3ad62d..e1b7f8f 100644
--- a/spec/httparty/request_spec.rb
+++ b/spec/httparty/request_spec.rb
@@ -157,46 +157,47 @@ RSpec.describe HTTParty::Request do
expect(@request.instance_variable_get(:@raw_request)['authorization']).not_to be_nil
end
- context 'digest_auth' do
- before do
+ context 'digest_auth' do
+ before do
response_sequence = [
- {status: ['401', 'Unauthorized' ],
+ {status: ['401', 'Unauthorized' ], headers: {
www_authenticate: 'Digest realm="Log Viewer", qop="auth", nonce="2CA0EC6B0E126C4800E56BA0C0003D3C", opaque="5ccc069c403ebaf9f0171e9517f40e41", stale=false',
- set_cookie: 'custom-cookie=1234567',
+ set_cookie: 'custom-cookie=1234567',
+ }
},
{status: ['200', 'OK']}
- ]
- FakeWeb.register_uri(:get, "http://api.foo.com/v1",
- response_sequence)
- end
+ ]
+ stub_request(:get, "http://api.foo.com/v1").and_return(response_sequence)
+ end
it 'should not send credentials more than once' do
response_sequence = [
- {status: ['401', 'Unauthorized' ],
+ {status: ['401', 'Unauthorized' ], headers: {
www_authenticate: 'Digest realm="Log Viewer", qop="auth", nonce="2CA0EC6B0E126C4800E56BA0C0003D3C", opaque="5ccc069c403ebaf9f0171e9517f40e41", stale=false',
- set_cookie: 'custom-cookie=1234567',
+ set_cookie: 'custom-cookie=1234567'
+ }
},
- {status: ['401', 'Unauthorized' ],
+ {status: ['401', 'Unauthorized' ], headers: {
www_authenticate: 'Digest realm="Log Viewer", qop="auth", nonce="2CA0EC6B0E126C4800E56BA0C0003D3C", opaque="5ccc069c403ebaf9f0171e9517f40e41", stale=false',
- set_cookie: 'custom-cookie=1234567',
- },
+ set_cookie: 'custom-cookie=1234567'
+ }
+ },
{status: ['404', 'Not found']}
- ]
- FakeWeb.register_uri(:get, "http://api.foo.com/v1",
+ ]
+ stub_request(:get, "http://api.foo.com/v1").and_return(
response_sequence)
- @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
+ @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
response = @request.perform { |v| }
expect(response.code).to eq(401)
raw_request = @request.instance_variable_get(:@raw_request)
- expect(raw_request['Authorization']).not_to be_nil
- end
+ expect(raw_request['Authorization']).not_to be_nil
+ end
it 'should not be used when configured and the response is 200' do
- FakeWeb.register_uri(:get, "http://api.foo.com/v1",
- status: 200)
- @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
+ stub_request(:get, "http://api.foo.com/v1").and_return(status: 200)
+ @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
response = @request.perform { |v| }
expect(response.code).to eq(200)
@@ -206,7 +207,7 @@ RSpec.describe HTTParty::Request do
end
it "should be used when configured and the response is 401" do
- @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
+ @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
response = @request.perform { |v| }
expect(response.code).to eq(200)
@@ -215,16 +216,16 @@ RSpec.describe HTTParty::Request do
end
it 'should maintain cookies returned from a 401 response' do
- @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
+ @request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
response = @request.perform {|v|}
expect(response.code).to eq(200)
-
+
raw_request = @request.instance_variable_get(:@raw_request)
expect(raw_request.get_fields('cookie')).to eql ["custom-cookie=1234567"]
end
it 'should merge cookies from request and a 401 response' do
-
+
@request.options[:digest_auth] = {username: 'foobar', password: 'secret'}
@request.options[:headers] = {'cookie' => 'request-cookie=test'}
response = @request.perform {|v|}
@@ -243,7 +244,7 @@ RSpec.describe HTTParty::Request do
end
it 'should normalize base uri when specified as request option' do
- FakeWeb.register_uri(:get, 'http://foo.com/resource', :body => 'Bar')
+ stub_request(:get, 'http://foo.com/resource').to_return(:body => 'Bar')
response = HTTParty.get('/resource', {
base_uri: 'foo.com'
})
@@ -526,7 +527,7 @@ RSpec.describe HTTParty::Request do
response = stub_response "Content"
response.initialize_http_header("Content-Type" => "text/plain;charset = utf-lols")
resp = @request.perform
- expect(response_charset).to_not be_empty
+ expect(response_charset).to_not be_empty
# This encoding does not exist, thus the string should not be encodd with it
expect(resp.body.encoding).to_not eq(response_charset)
expect(resp.body).to eq("Content")
@@ -568,8 +569,8 @@ RSpec.describe HTTParty::Request do
it "calls block given to perform with each redirect" do
@request = HTTParty::Request.new(Net::HTTP::Get, 'http://test.com/redirect', format: :xml)
- FakeWeb.register_uri(:get, "http://test.com/redirect", status: [300, "REDIRECT"], location: "http://api.foo.com/v2")
- FakeWeb.register_uri(:get, "http://api.foo.com/v2", body: "bar")
+ stub_request(:get, "http://test.com/redirect").and_return(status: [300, "REDIRECT"], headers: { location: "http://api.foo.com/v2" })
+ stub_request(:get, "http://api.foo.com/v2").and_return(body: "bar")
body = ""
response = @request.perform { |chunk| body += chunk }
expect(body.length).to eq(27)
@@ -590,9 +591,9 @@ RSpec.describe HTTParty::Request do
it "handles multiple redirects and relative location headers on different hosts" do
@request = HTTParty::Request.new(Net::HTTP::Get, 'http://test.com/redirect', format: :xml)
- FakeWeb.register_uri(:get, "http://test.com/redirect", status: [300, "REDIRECT"], location: "http://api.foo.com/v2")
- FakeWeb.register_uri(:get, "http://api.foo.com/v2", status: [300, "REDIRECT"], location: "/v3")
- FakeWeb.register_uri(:get, "http://api.foo.com/v3", body: "bar")
+ stub_request(:get, "http://test.com/redirect").and_return(status: [300, "REDIRECT"], headers: { location: "http://api.foo.com/v2" })
+ stub_request(:get, "http://api.foo.com/v2").and_return(status: [300, "REDIRECT"], headers: { location: "/v3" })
+ stub_request(:get, "http://api.foo.com/v3").and_return(body: "bar")
response = @request.perform
expect(response.request.base_uri.to_s).to eq("http://api.foo.com")
expect(response.request.path.to_s).to eq("/v3")
@@ -603,7 +604,7 @@ RSpec.describe HTTParty::Request do
it "raises an error if redirect has duplicate location header" do
@request = HTTParty::Request.new(Net::HTTP::Get, 'http://test.com/redirect', format: :xml)
- FakeWeb.register_uri(:get, "http://test.com/redirect", status: [300, "REDIRECT"], location: ["http://api.foo.com/v2","http://api.foo.com/v2"])
+ stub_request(:get, "http://test.com/redirect").and_return(status: [300, "REDIRECT"], headers: { location: ["http://api.foo.com/v2","http://api.foo.com/v2"] })
expect {@request.perform}.to raise_error(HTTParty::DuplicateLocationHeader)
end
@@ -613,8 +614,8 @@ RSpec.describe HTTParty::Request do
end
it "redirects including port" do
- FakeWeb.register_uri(:get, "http://withport.com:3000/v1", status: [301, "Moved Permanently"], location: "http://withport.com:3000/v2")
- FakeWeb.register_uri(:get, "http://withport.com:3000/v2", status: 200)
+ stub_request(:get, "http://withport.com:3000/v1").and_return(status: [301, "Moved Permanently"], headers: { location: "http://withport.com:3000/v2" })
+ stub_request(:get, "http://withport.com:3000/v2").and_return(status: 200)
request = HTTParty::Request.new(Net::HTTP::Get, 'http://withport.com:3000/v1')
response = request.perform
expect(response.request.base_uri.to_s).to eq("http://withport.com:3000")
@@ -1230,19 +1231,19 @@ RSpec.describe HTTParty::Request do
end
context 'with Accept-Encoding header' do
- it 'should disable content decoding if present' do
+ it 'should disable content decoding if present' do
request = HTTParty::Request.new(Net::HTTP::Get, 'http://api.foo.com/v1', headers:{'Accept-Encoding' => 'custom'})
request.send(:setup_raw_request)
expect(request.instance_variable_get(:@raw_request).decode_content).to eq(false)
end
- it 'should disable content decoding if present and lowercase' do
+ it 'should disable content decoding if present and lowercase' do
request = HTTParty::Request.new(Net::HTTP::Get, 'http://api.foo.com/v1', headers:{'accept-encoding' => 'custom'})
request.send(:setup_raw_request)
expect(request.instance_variable_get(:@raw_request).decode_content).to eq(false)
end
- it 'should disable content decoding if present' do
+ it 'should disable content decoding if present' do
request = HTTParty::Request.new(Net::HTTP::Get, 'http://api.foo.com/v1')
request.send(:setup_raw_request)
expect(request.instance_variable_get(:@raw_request).decode_content).to eq(true)
diff --git a/spec/httparty/ssl_spec.rb b/spec/httparty/ssl_spec.rb
index e2d8d50..1f77930 100644
--- a/spec/httparty/ssl_spec.rb
+++ b/spec/httparty/ssl_spec.rb
@@ -3,11 +3,11 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
RSpec.describe HTTParty::Request do
context "SSL certificate verification" do
before do
- FakeWeb.allow_net_connect = true
+ WebMock.allow_net_connect!
end
after do
- FakeWeb.allow_net_connect = false
+ WebMock.disable_net_connect!
end
it "should fail when no trusted CA list is specified, by default" do
diff --git a/spec/httparty_spec.rb b/spec/httparty_spec.rb
index a936eee..bd78063 100644
--- a/spec/httparty_spec.rb
+++ b/spec/httparty_spec.rb
@@ -333,7 +333,7 @@ RSpec.describe HTTParty do
it "should be able parse response with custom parser" do
@klass.parser parser
- FakeWeb.register_uri(:get, 'http://twitter.com/statuses/public_timeline.xml', body: 'tweets')
+ stub_request(:get, 'http://twitter.com/statuses/public_timeline.xml').and_return(body: 'tweets')
custom_parsed_response = @klass.get('http://twitter.com/statuses/public_timeline.xml')
expect(custom_parsed_response[:sexy]).to eq(true)
end
@@ -388,7 +388,7 @@ RSpec.describe HTTParty do
it "should process a request with a uri instance parsed from the uri_adapter" do
uri = 'http://foo.com/bar'
- FakeWeb.register_uri(:get, uri, body: 'stuff')
+ stub_request(:get, uri).and_return(body: 'stuff')
@klass.uri_adapter uri_adapter
expect(@klass.get(uri).parsed_response).to eq('stuff')
end
@@ -421,7 +421,7 @@ RSpec.describe HTTParty do
expect(o[:connection_adapter_options]).to eq(connection_adapter_options)
HTTParty::ConnectionAdapter.call(u, o)
}.with(URI.parse(uri), kind_of(Hash))
- FakeWeb.register_uri(:get, uri, body: 'stuff')
+ stub_request(:get, uri).and_return(body: 'stuff')
@klass.connection_adapter connection_adapter, connection_adapter_options
expect(@klass.get(uri).parsed_response).to eq('stuff')
end
@@ -861,7 +861,7 @@ RSpec.describe HTTParty do
it "should accept webcal URIs" do
uri = 'http://google.com/'
- FakeWeb.register_uri(:get, uri, body: 'stuff')
+ stub_request(:get, uri).and_return(body: 'stuff')
uri = 'webcal://google.com/'
expect do
HTTParty.get(uri)
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 0b6d209..d8622a4 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -2,7 +2,7 @@ require "simplecov"
SimpleCov.start
require "httparty"
-require "fakeweb"
+require 'webmock/rspec'
def file_fixture(filename)
open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename}")).read
@@ -14,14 +14,6 @@ RSpec.configure do |config|
config.include HTTParty::StubResponse
config.include HTTParty::SSLTestHelper
- config.before(:suite) do
- FakeWeb.allow_net_connect = false
- end
-
- config.after(:suite) do
- FakeWeb.allow_net_connect = true
- end
-
config.expect_with :rspec do |expectations|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end