proxy_fetcher 0.10.2 → 0.11.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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -5
  3. data/Rakefile +4 -2
  4. data/gemfiles/nokogiri.gemfile +8 -6
  5. data/gemfiles/oga.gemfile +8 -6
  6. data/lib/proxy_fetcher.rb +30 -30
  7. data/lib/proxy_fetcher/client/client.rb +10 -3
  8. data/lib/proxy_fetcher/client/request.rb +4 -4
  9. data/lib/proxy_fetcher/configuration.rb +12 -11
  10. data/lib/proxy_fetcher/document.rb +0 -9
  11. data/lib/proxy_fetcher/document/adapters.rb +1 -1
  12. data/lib/proxy_fetcher/document/adapters/abstract_adapter.rb +3 -12
  13. data/lib/proxy_fetcher/document/adapters/nokogiri_adapter.rb +1 -1
  14. data/lib/proxy_fetcher/document/adapters/oga_adapter.rb +1 -1
  15. data/lib/proxy_fetcher/document/node.rb +2 -2
  16. data/lib/proxy_fetcher/exceptions.rb +6 -6
  17. data/lib/proxy_fetcher/manager.rb +2 -2
  18. data/lib/proxy_fetcher/providers/base.rb +42 -22
  19. data/lib/proxy_fetcher/providers/free_proxy_list.rb +30 -10
  20. data/lib/proxy_fetcher/providers/free_proxy_list_ssl.rb +7 -16
  21. data/lib/proxy_fetcher/providers/gather_proxy.rb +9 -17
  22. data/lib/proxy_fetcher/providers/http_tunnel.rb +11 -19
  23. data/lib/proxy_fetcher/providers/proxy_list.rb +8 -16
  24. data/lib/proxy_fetcher/providers/xroxy.rb +9 -17
  25. data/lib/proxy_fetcher/proxy.rb +4 -4
  26. data/lib/proxy_fetcher/utils/http_client.rb +10 -8
  27. data/lib/proxy_fetcher/utils/proxy_list_validator.rb +3 -1
  28. data/lib/proxy_fetcher/utils/proxy_validator.rb +1 -1
  29. data/lib/proxy_fetcher/version.rb +3 -3
  30. data/proxy_fetcher.gemspec +19 -16
  31. data/spec/proxy_fetcher/client/client_spec.rb +72 -57
  32. data/spec/proxy_fetcher/configuration_spec.rb +11 -11
  33. data/spec/proxy_fetcher/document/adapters_spec.rb +8 -8
  34. data/spec/proxy_fetcher/document/node_spec.rb +4 -4
  35. data/spec/proxy_fetcher/providers/base_spec.rb +9 -9
  36. data/spec/proxy_fetcher/providers/free_proxy_list_spec.rb +2 -2
  37. data/spec/proxy_fetcher/providers/free_proxy_list_ssl_spec.rb +2 -2
  38. data/spec/proxy_fetcher/providers/gather_proxy_spec.rb +2 -2
  39. data/spec/proxy_fetcher/providers/http_tunnel_spec.rb +2 -2
  40. data/spec/proxy_fetcher/providers/multiple_providers_spec.rb +4 -4
  41. data/spec/proxy_fetcher/providers/proxy_list_spec.rb +2 -2
  42. data/spec/proxy_fetcher/providers/xroxy_spec.rb +2 -2
  43. data/spec/proxy_fetcher/proxy_spec.rb +14 -14
  44. data/spec/proxy_fetcher/version_spec.rb +2 -0
  45. data/spec/spec_helper.rb +10 -10
  46. data/spec/support/manager_examples.rb +21 -21
  47. metadata +14 -8
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Configuration do
6
6
  before { ProxyFetcher.config.reset! }
7
7
  after { ProxyFetcher.config.reset! }
8
8
 
9
- context 'custom HTTP client' do
10
- it 'successfully setups if class has all the required methods' do
9
+ context "custom HTTP client" do
10
+ it "successfully setups if class has all the required methods" do
11
11
  class MyHTTPClient
12
12
  def self.fetch(url)
13
13
  url
@@ -17,7 +17,7 @@ describe ProxyFetcher::Configuration do
17
17
  expect { ProxyFetcher.config.http_client = MyHTTPClient }.not_to raise_error
18
18
  end
19
19
 
20
- it 'failed on setup if required methods are missing' do
20
+ it "failed on setup if required methods are missing" do
21
21
  MyWrongHTTPClient = Class.new
22
22
 
23
23
  expect { ProxyFetcher.config.http_client = MyWrongHTTPClient }
@@ -25,8 +25,8 @@ describe ProxyFetcher::Configuration do
25
25
  end
26
26
  end
27
27
 
28
- context 'custom proxy validator' do
29
- it 'successfully setups if class has all the required methods' do
28
+ context "custom proxy validator" do
29
+ it "successfully setups if class has all the required methods" do
30
30
  class MyProxyValidator
31
31
  def self.connectable?(*)
32
32
  true
@@ -36,7 +36,7 @@ describe ProxyFetcher::Configuration do
36
36
  expect { ProxyFetcher.config.proxy_validator = MyProxyValidator }.not_to raise_error
37
37
  end
38
38
 
39
- it 'failed on setup if required methods are missing' do
39
+ it "failed on setup if required methods are missing" do
40
40
  MyWrongProxyValidator = Class.new
41
41
 
42
42
  expect { ProxyFetcher.config.proxy_validator = MyWrongProxyValidator }
@@ -44,8 +44,8 @@ describe ProxyFetcher::Configuration do
44
44
  end
45
45
  end
46
46
 
47
- context 'custom provider' do
48
- it 'fails on registration if provider class already registered' do
47
+ context "custom provider" do
48
+ it "fails on registration if provider class already registered" do
49
49
  expect { ProxyFetcher::Configuration.register_provider(:xroxy, Class.new) }
50
50
  .to raise_error(ProxyFetcher::Exceptions::RegisteredProvider)
51
51
  end
@@ -58,13 +58,13 @@ describe ProxyFetcher::Configuration do
58
58
  end
59
59
  end
60
60
 
61
- context 'custom HTML parsing adapter' do
61
+ context "custom HTML parsing adapter" do
62
62
  it "fails if adapter can't be installed" do
63
63
  old_adapter = ProxyFetcher.config.adapter.dup
64
64
 
65
65
  class CustomAdapter < ProxyFetcher::Document::AbstractAdapter
66
66
  def self.install_requirements!
67
- require 'not_existing_gem'
67
+ require "not_existing_gem"
68
68
  end
69
69
  end
70
70
 
@@ -1,26 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Document::Adapters do
6
- describe '#lookup' do
7
- it 'returns predefined adapters if symbol or string passed' do
8
- expect(described_class.lookup('nokogiri')).to eq(ProxyFetcher::Document::NokogiriAdapter)
6
+ describe "#lookup" do
7
+ it "returns predefined adapters if symbol or string passed" do
8
+ expect(described_class.lookup("nokogiri")).to eq(ProxyFetcher::Document::NokogiriAdapter)
9
9
 
10
10
  expect(described_class.lookup(:oga)).to eq(ProxyFetcher::Document::OgaAdapter)
11
11
  end
12
12
 
13
- it 'returns self if class passed' do
13
+ it "returns self if class passed" do
14
14
  expect(described_class.lookup(Struct)).to eq(Struct)
15
15
  end
16
16
 
17
- it 'raises an exception if passed value is blank' do
17
+ it "raises an exception if passed value is blank" do
18
18
  expect { described_class.lookup(nil) }.to raise_error(ProxyFetcher::Exceptions::BlankAdapter)
19
- expect { described_class.lookup('') }.to raise_error(ProxyFetcher::Exceptions::BlankAdapter)
19
+ expect { described_class.lookup("") }.to raise_error(ProxyFetcher::Exceptions::BlankAdapter)
20
20
  end
21
21
 
22
22
  it "raises an exception if adapter doesn't exist" do
23
- expect { described_class.lookup('wrong') }.to raise_error(ProxyFetcher::Exceptions::UnknownAdapter)
23
+ expect { described_class.lookup("wrong") }.to raise_error(ProxyFetcher::Exceptions::UnknownAdapter)
24
24
  end
25
25
  end
26
26
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Document::Node do
6
- context 'overridable methods' do
7
- it 'raises an error' do
8
- node = ProxyFetcher::Document::Node.new('')
6
+ context "overridable methods" do
7
+ it "raises an error" do
8
+ node = ProxyFetcher::Document::Node.new("")
9
9
 
10
10
  %w[content html].each do |method|
11
11
  expect { node.public_send(method) }.to raise_error do |error|
@@ -1,37 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Providers::Base do
6
6
  before { ProxyFetcher.config.reset! }
7
7
  after { ProxyFetcher.config.reset! }
8
8
 
9
- it 'does not allows to use not implemented methods' do
9
+ it "does not allows to use not implemented methods" do
10
10
  NotImplementedCustomProvider = Class.new(ProxyFetcher::Providers::Base)
11
11
 
12
12
  ProxyFetcher::Configuration.register_provider(:provider_without_methods, NotImplementedCustomProvider)
13
13
  ProxyFetcher.config.provider = :provider_without_methods
14
14
 
15
15
  expect { ProxyFetcher::Manager.new }.to raise_error(NotImplementedError) do |error|
16
- expect(error.message).to include('load_proxy_list')
16
+ expect(error.message).to include("provider_url")
17
17
  end
18
18
 
19
19
  # implement one of the methods
20
20
  NotImplementedCustomProvider.class_eval do
21
- def load_proxy_list(*)
22
- [1, 2, 3]
21
+ def provider_url
22
+ "http://provider.com"
23
23
  end
24
24
  end
25
25
 
26
26
  expect { ProxyFetcher::Manager.new }.to raise_error(NotImplementedError) do |error|
27
- expect(error.message).to include('to_proxy')
27
+ expect(error.message).to include("xpath")
28
28
  end
29
29
  end
30
30
 
31
- it 'logs failed to load proxy providers' do
31
+ it "logs failed to load proxy providers" do
32
32
  CustomProvider = Class.new(ProxyFetcher::Providers::Base) do
33
33
  def load_proxy_list(*)
34
- doc = load_document('https://google.com', {})
34
+ doc = load_document("https://google.com", {})
35
35
  doc.xpath('//table[contains(@class, "table")]/tr[(not(@id="proxy-table-header")) and (count(td)>2)]')
36
36
  end
37
37
  end
@@ -44,7 +44,7 @@ describe ProxyFetcher::Providers::Base do
44
44
 
45
45
  allow_any_instance_of(HTTP::Client).to receive(:get).and_raise(StandardError)
46
46
 
47
- expect(logger).to receive(:warn).with(/Failed to process request to http[s:\/]/)
47
+ expect(logger).to receive(:warn).with(%r{Failed to process request to http[s:/]})
48
48
 
49
49
  ProxyFetcher::Manager.new
50
50
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Providers::FreeProxyList do
6
6
  before :all do
@@ -9,5 +9,5 @@ describe ProxyFetcher::Providers::FreeProxyList do
9
9
  end
10
10
  end
11
11
 
12
- it_behaves_like 'a manager'
12
+ it_behaves_like "a manager"
13
13
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Providers::FreeProxyListSSL do
6
6
  before :all do
7
7
  ProxyFetcher.config.provider = :free_proxy_list_ssl
8
8
  end
9
9
 
10
- it_behaves_like 'a manager'
10
+ it_behaves_like "a manager"
11
11
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Providers::GatherProxy do
6
6
  before :all do
7
7
  ProxyFetcher.config.provider = :gather_proxy
8
8
  end
9
9
 
10
- it_behaves_like 'a manager'
10
+ it_behaves_like "a manager"
11
11
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Providers::HTTPTunnel do
6
6
  before :all do
7
7
  ProxyFetcher.config.provider = :http_tunnel
8
8
  end
9
9
 
10
- it_behaves_like 'a manager'
10
+ it_behaves_like "a manager"
11
11
  end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
- describe 'Multiple proxy providers' do
5
+ describe "Multiple proxy providers" do
6
6
  before { ProxyFetcher.config.reset! }
7
7
  after { ProxyFetcher.config.reset! }
8
8
 
9
- it 'combine proxies from multiple providers' do
10
- proxy_stub = ProxyFetcher::Proxy.new(addr: '192.168.1.1', port: 8080)
9
+ it "combine proxies from multiple providers" do
10
+ proxy_stub = ProxyFetcher::Proxy.new(addr: "192.168.1.1", port: 8080)
11
11
 
12
12
  # Each proxy provider will return 2 proxies
13
13
  ProxyFetcher::Configuration.providers_registry.providers.each do |_name, klass|
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Providers::ProxyList do
6
6
  before :all do
7
7
  ProxyFetcher.config.provider = :proxy_list
8
8
  end
9
9
 
10
- it_behaves_like 'a manager'
10
+ it_behaves_like "a manager"
11
11
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Providers::XRoxy do
6
6
  before :all do
7
7
  ProxyFetcher.config.provider = :xroxy
8
8
  end
9
9
 
10
- it_behaves_like 'a manager'
10
+ it_behaves_like "a manager"
11
11
  end
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe ProxyFetcher::Proxy do
6
- let(:proxy) { described_class.new(addr: '192.169.1.1', port: 8080, type: 'HTTP') }
6
+ let(:proxy) { described_class.new(addr: "192.169.1.1", port: 8080, type: "HTTP") }
7
7
 
8
- it 'can initialize a new proxy object' do
9
- proxy = described_class.new(addr: '192.169.1.1', port: 8080, type: 'HTTP')
8
+ it "can initialize a new proxy object" do
9
+ proxy = described_class.new(addr: "192.169.1.1", port: 8080, type: "HTTP")
10
10
 
11
11
  expect(proxy).not_to be_nil
12
- expect(proxy.addr).to eq('192.169.1.1')
12
+ expect(proxy.addr).to eq("192.169.1.1")
13
13
  expect(proxy.port).to eq(8080)
14
- expect(proxy.type).to eq('HTTP')
14
+ expect(proxy.type).to eq("HTTP")
15
15
  end
16
16
 
17
- it 'checks schema' do
17
+ it "checks schema" do
18
18
  proxy.type = ProxyFetcher::Proxy::HTTP
19
19
  expect(proxy.http?).to be_truthy
20
20
  expect(proxy.https?).to be_falsey
@@ -34,28 +34,28 @@ describe ProxyFetcher::Proxy do
34
34
  expect(proxy.ssl?).to be_truthy
35
35
  end
36
36
 
37
- it 'not connectable if IP addr is wrong' do
38
- proxy.addr = '192.168.1.0'
37
+ it "not connectable if IP addr is wrong" do
38
+ proxy.addr = "192.168.1.0"
39
39
  expect(proxy.connectable?).to be_falsey
40
40
  end
41
41
 
42
- it 'not connectable if there are some error during connection request' do
42
+ it "not connectable if there are some error during connection request" do
43
43
  allow_any_instance_of(HTTP::Client).to receive(:head).and_raise(HTTP::TimeoutError)
44
44
  expect(proxy.connectable?).to be_falsey
45
45
  end
46
46
 
47
- it 'returns URI::Generic' do
47
+ it "returns URI::Generic" do
48
48
  expect(proxy.uri).to be_a(URI::Generic)
49
49
 
50
50
  expect(proxy.uri.host).not_to be_empty
51
51
  expect(proxy.uri.port).not_to be_nil
52
52
  end
53
53
 
54
- it 'returns URL' do
54
+ it "returns URL" do
55
55
  expect(proxy.url).to be_a(String)
56
56
  end
57
57
 
58
- it 'returns URL with scheme' do
59
- expect(proxy.url(scheme: true)).to include('://')
58
+ it "returns URL with scheme" do
59
+ expect(proxy.url(scheme: true)).to include("://")
60
60
  end
61
61
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe ProxyFetcher::VERSION do
2
4
  it { expect(ProxyFetcher::VERSION::STRING).to match(/^\d+\.\d+\.\d+(\.\w+)?$/) }
3
5
  end
@@ -1,24 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'simplecov'
4
- SimpleCov.add_filter 'spec'
5
- SimpleCov.add_filter 'version'
3
+ require "simplecov"
4
+ SimpleCov.add_filter "spec"
5
+ SimpleCov.add_filter "version"
6
6
 
7
- if ENV['CI'] || ENV['TRAVIS'] || ENV['COVERALLS'] || ENV['JENKINS_URL']
8
- require 'coveralls'
7
+ if ENV["CI"] || ENV["TRAVIS"] || ENV["COVERALLS"] || ENV["JENKINS_URL"]
8
+ require "coveralls"
9
9
  Coveralls.wear!
10
10
  else
11
11
  SimpleCov.start
12
12
  end
13
13
 
14
- require 'bundler/setup'
14
+ require "bundler/setup"
15
15
  Bundler.setup
16
16
 
17
- require 'proxy_fetcher'
17
+ require "proxy_fetcher"
18
18
 
19
- Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
19
+ Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
20
20
 
21
- adapter = ENV['BUNDLE_GEMFILE'][/.+\/(.+)\.gemfile/i, 1] || :nokogiri
21
+ adapter = ENV["BUNDLE_GEMFILE"][%r{.+/(.+)\.gemfile}i, 1] || :nokogiri
22
22
  puts "Configured adapter: '#{adapter}'"
23
23
 
24
24
  ProxyFetcher.configure do |config|
@@ -26,5 +26,5 @@ ProxyFetcher.configure do |config|
26
26
  end
27
27
 
28
28
  RSpec.configure do |config|
29
- config.order = 'random'
29
+ config.order = "random"
30
30
  end
@@ -1,9 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.shared_examples 'a manager' do
4
- it 'loads proxy list on initialization by default' do
5
- manager = ProxyFetcher::Manager.new
6
- expect(manager.proxies).not_to be_empty
3
+ RSpec.shared_examples "a manager" do
4
+ before :all do
5
+ @cached_manager = ProxyFetcher::Manager.new
6
+ end
7
+
8
+ it "loads proxy list on initialization by default" do
9
+ expect(@cached_manager.proxies).not_to be_empty
7
10
  end
8
11
 
9
12
  it "doesn't load proxy list on initialization if `refresh` argument was set to false" do
@@ -11,11 +14,10 @@ RSpec.shared_examples 'a manager' do
11
14
  expect(manager.proxies).to be_empty
12
15
  end
13
16
 
14
- it 'returns valid Proxy objects' do
15
- manager = ProxyFetcher::Manager.new
16
- expect(manager.proxies).to all(be_a(ProxyFetcher::Proxy))
17
+ it "returns valid Proxy objects" do
18
+ expect(@cached_manager.proxies).to all(be_a(ProxyFetcher::Proxy))
17
19
 
18
- manager.proxies.each do |proxy|
20
+ @cached_manager.proxies.each do |proxy|
19
21
  expect(proxy.addr).to match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/i)
20
22
  expect(proxy.port).to be_a_kind_of(Numeric)
21
23
  expect(proxy.type).not_to be_empty
@@ -25,12 +27,11 @@ RSpec.shared_examples 'a manager' do
25
27
  end
26
28
  end
27
29
 
28
- it 'returns raw proxies (HOST:PORT)' do
29
- manager = ProxyFetcher::Manager.new
30
- expect(manager.raw_proxies).to all(be_a(String))
30
+ it "returns raw proxies (HOST:PORT)" do
31
+ expect(@cached_manager.raw_proxies).to all(be_a(String))
31
32
  end
32
33
 
33
- it 'cleanup proxy list from dead servers' do
34
+ it "cleanup proxy list from dead servers" do
34
35
  allow_any_instance_of(ProxyFetcher::Proxy).to receive(:connectable?).and_return(false)
35
36
 
36
37
  manager = ProxyFetcher::Manager.new
@@ -45,7 +46,7 @@ RSpec.shared_examples 'a manager' do
45
46
  expect(manager.inspect).to eq(manager.to_s)
46
47
  end
47
48
 
48
- it 'returns first proxy' do
49
+ it "returns first proxy" do
49
50
  manager = ProxyFetcher::Manager.new
50
51
 
51
52
  first_proxy = manager.proxies.first
@@ -54,16 +55,16 @@ RSpec.shared_examples 'a manager' do
54
55
  expect(manager.proxies.first).not_to eq(first_proxy)
55
56
  end
56
57
 
57
- it 'returns first valid proxy' do
58
+ it "returns first valid proxy" do
58
59
  manager = ProxyFetcher::Manager.new(refresh: false)
59
60
 
60
- proxies = Array.new(5) { instance_double('ProxyFetcher::Proxy', connectable?: false) }
61
+ proxies = Array.new(5) { instance_double("ProxyFetcher::Proxy", connectable?: false) }
61
62
  manager.instance_variable_set(:@proxies, proxies)
62
63
 
63
- connectable_proxy = instance_double('ProxyFetcher::Proxy')
64
+ connectable_proxy = instance_double("ProxyFetcher::Proxy")
64
65
  allow(connectable_proxy).to receive(:connectable?).and_return(true)
65
66
 
66
- manager.proxies[0..2].each { |proxy| proxy.instance_variable_set(:@addr, '192.168.1.1') }
67
+ manager.proxies[0..2].each { |proxy| proxy.instance_variable_set(:@addr, "192.168.1.1") }
67
68
  manager.proxies[2] = connectable_proxy
68
69
 
69
70
  expect(manager.get!).to eq(connectable_proxy)
@@ -73,15 +74,14 @@ RSpec.shared_examples 'a manager' do
73
74
  expect(manager.proxies.size).to be(1)
74
75
  end
75
76
 
76
- it 'returns nothing if proxy list is empty' do
77
+ it "returns nothing if proxy list is empty" do
77
78
  manager = ProxyFetcher::Manager.new(refresh: false)
78
79
 
79
80
  expect(manager.get).to be_nil
80
81
  expect(manager.get!).to be_nil
81
82
  end
82
83
 
83
- it 'returns random proxy' do
84
- manager = ProxyFetcher::Manager.new
85
- expect(manager.random).to be_an_instance_of(ProxyFetcher::Proxy)
84
+ it "returns random proxy" do
85
+ expect(@cached_manager.random).to be_an_instance_of(ProxyFetcher::Proxy)
86
86
  end
87
87
  end