vagrant-proxyconf 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +7 -0
  4. data/Gemfile +3 -2
  5. data/README.md +1 -0
  6. data/lib/vagrant-proxyconf/action.rb +2 -0
  7. data/lib/vagrant-proxyconf/action/configure_docker_proxy.rb +88 -0
  8. data/lib/vagrant-proxyconf/cap/coreos/docker_proxy_conf.rb +28 -0
  9. data/lib/vagrant-proxyconf/cap/linux/docker_proxy_conf.rb +28 -0
  10. data/lib/vagrant-proxyconf/capability.rb +10 -0
  11. data/lib/vagrant-proxyconf/version.rb +1 -1
  12. data/locales/en.yml +8 -0
  13. data/spec/spec_helper.rb +2 -0
  14. data/spec/unit/support/shared/apt_proxy_config.rb +9 -9
  15. data/spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb +1 -1
  16. data/spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb +1 -1
  17. data/spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb +10 -0
  18. data/spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb +1 -1
  19. data/spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb +1 -1
  20. data/spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb +1 -1
  21. data/spec/unit/vagrant-proxyconf/action/configure_pear_proxy_spec.rb +1 -1
  22. data/spec/unit/vagrant-proxyconf/action/configure_svn_proxy_spec.rb +1 -1
  23. data/spec/unit/vagrant-proxyconf/action/configure_yum_proxy_spec.rb +6 -6
  24. data/spec/unit/vagrant-proxyconf/action/is_enabled_spec.rb +11 -5
  25. data/spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb +1 -1
  26. data/spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb +60 -0
  27. data/spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb +1 -1
  28. data/spec/unit/vagrant-proxyconf/cap/linux/git_proxy_conf_spec.rb +3 -3
  29. data/spec/unit/vagrant-proxyconf/cap/linux/npm_proxy_conf_spec.rb +3 -3
  30. data/spec/unit/vagrant-proxyconf/cap/linux/pear_proxy_conf_spec.rb +3 -3
  31. data/spec/unit/vagrant-proxyconf/cap/linux/svn_proxy_conf_spec.rb +3 -3
  32. data/spec/unit/vagrant-proxyconf/cap/redhat/yum_proxy_conf_spec.rb +1 -1
  33. data/spec/unit/vagrant-proxyconf/cap/util_spec.rb +2 -2
  34. data/spec/unit/vagrant-proxyconf/cap/windows/env_proxy_conf_spec.rb +1 -1
  35. data/spec/unit/vagrant-proxyconf/config/apt_proxy_spec.rb +2 -2
  36. data/spec/unit/vagrant-proxyconf/config/env_proxy_spec.rb +4 -4
  37. data/spec/unit/vagrant-proxyconf/config/key_mixin_spec.rb +8 -2
  38. data/spec/unit/vagrant-proxyconf/logger_spec.rb +1 -1
  39. data/spec/unit/vagrant-proxyconf/plugin_spec.rb +8 -8
  40. metadata +9 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 87b3ddc5133ada4016216defd4f705bdd86d6c21
4
- data.tar.gz: ccaac1be3e9bf09356c8329217c3b06cdc444dc4
3
+ metadata.gz: 01b50f214b87a8c1d79057bce5f6d1b23b0ae19f
4
+ data.tar.gz: 4e0448369bd0b1d0661523502f262e401680db90
5
5
  SHA512:
6
- metadata.gz: 41b8fed86e10fd26473d69e2bbbb282922f5b5dae2ca5de57c4189afd56167cd49a3559aadb3c7d79cd5bea3f4c8e7b2a89d58cb2ed3fa79598a1d38ffa6ce45
7
- data.tar.gz: e403b143e6462b46a7b34243a013aa7fd0b774624de8cfcdf79a61c67f039a2e12ed7167922cfdbd8c8a26ef29c9ce253ffc6532c2ab117b20fbbcb8189d1d30
6
+ metadata.gz: 4b411ae888f87e672a32e08a3d7e6e0cbfb631dc3ae798daae9f738bbe6e096b4e6ad70c0c7164902b64e23daa8d40c38521ffc4f8d42392bad79564d307fc9f
7
+ data.tar.gz: af7095bc3dd5765871d17c5066a13bfb49406e0012121569abf2c04f63e80923831b45b12c57dd4643aa472576c98ad9904c79cdb960bf3be6583d98e79ff684
@@ -7,7 +7,7 @@ before_install:
7
7
  bundler_args: --without=development
8
8
 
9
9
  rvm: 2.0.0
10
- env: VAGRANT_VERSION=v1.6.3
10
+ env: VAGRANT_VERSION=v1.6.5
11
11
  matrix:
12
12
  include:
13
13
  - env: VAGRANT_VERSION=v1.5.4
@@ -1,3 +1,9 @@
1
+ # 1.4.0 / 2014-09-28
2
+
3
+ Features:
4
+
5
+ - Support for configuring Docker ([GH-69][])
6
+
1
7
  # 1.3.2 / 2014-05-30
2
8
 
3
9
  Improvements:
@@ -174,3 +180,4 @@ Bug fixes:
174
180
  [GH-62]: https://github.com/tmatilai/vagrant-proxyconf/issues/62 "Issue 62"
175
181
  [GH-63]: https://github.com/tmatilai/vagrant-proxyconf/issues/63 "Issue 63"
176
182
  [GH-67]: https://github.com/tmatilai/vagrant-proxyconf/issues/67 "Issue 67"
183
+ [GH-69]: https://github.com/tmatilai/vagrant-proxyconf/issues/69 "Issue 69"
data/Gemfile CHANGED
@@ -2,12 +2,13 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'vagrant',
4
4
  git: 'https://github.com/mitchellh/vagrant.git',
5
- ref: ENV.fetch('VAGRANT_VERSION', 'v1.6.3')
5
+ ref: ENV.fetch('VAGRANT_VERSION', 'v1.6.5')
6
6
 
7
7
  gem 'cane', '~> 2.6'
8
8
  gem 'coveralls', require: false
9
9
  gem 'rake'
10
- gem 'rspec', '~> 2.11'
10
+ gem 'rspec', '~> 3.1'
11
+ gem 'rspec-its', '~> 1.0'
11
12
  gem 'tailor', '~> 1.4'
12
13
 
13
14
  group :development do
data/README.md CHANGED
@@ -21,6 +21,7 @@ The plugin can set:
21
21
  * generic `http_proxy` etc. environment variables that many programs support
22
22
  * default proxy configuration for all Chef provisioners
23
23
  * proxy configuration for Apt
24
+ * proxy configuration for docker
24
25
  * proxy configuration for npm
25
26
  * proxy configuration for Yum
26
27
  * proxy configuration for PEAR
@@ -1,6 +1,7 @@
1
1
  require 'vagrant/action/builtin/call'
2
2
  require_relative 'action/configure_apt_proxy'
3
3
  require_relative 'action/configure_chef_proxy'
4
+ require_relative 'action/configure_docker_proxy'
4
5
  require_relative 'action/configure_env_proxy'
5
6
  require_relative 'action/configure_git_proxy'
6
7
  require_relative 'action/configure_npm_proxy'
@@ -51,6 +52,7 @@ module VagrantPlugins
51
52
 
52
53
  b2.use ConfigureAptProxy
53
54
  b2.use ConfigureChefProxy
55
+ b2.use ConfigureDockerProxy
54
56
  b2.use ConfigureEnvProxy
55
57
  b2.use ConfigureGitProxy
56
58
  b2.use ConfigureNpmProxy
@@ -0,0 +1,88 @@
1
+ require_relative 'base'
2
+ require_relative '../resource'
3
+ require_relative '../userinfo_uri'
4
+
5
+ module VagrantPlugins
6
+ module ProxyConf
7
+ class Action
8
+ # Action for configuring Docker on the guest
9
+ class ConfigureDockerProxy < Base
10
+ def config_name
11
+ 'docker_proxy'
12
+ end
13
+
14
+ private
15
+
16
+ def config
17
+ # Use global proxy config
18
+ @config ||= finalize_config(@machine.config.proxy)
19
+ end
20
+
21
+ def configure_machine
22
+ logger.info('Writing the proxy configuration to docker config')
23
+ detect_export
24
+ write_docker_config
25
+ end
26
+
27
+ def docker
28
+ if config_path && config_path.include?('docker.io')
29
+ 'docker.io'
30
+ else
31
+ 'docker'
32
+ end
33
+ end
34
+
35
+ def write_docker_config
36
+ tmp = "/tmp/vagrant-proxyconf"
37
+ path = config_path
38
+
39
+ @machine.communicate.tap do |comm|
40
+ sed_script = docker_sed_script
41
+ local_tmp = tempfile(docker_config)
42
+
43
+ comm.sudo("rm #{tmp}", error_check: false)
44
+ comm.upload(local_tmp.path, tmp)
45
+ comm.sudo("touch #{path}")
46
+ comm.sudo("sed -e '#{sed_script}' #{path} > #{path}.new")
47
+ comm.sudo("cat #{tmp} >> #{path}.new")
48
+ comm.sudo("chmod 0644 #{path}.new")
49
+ comm.sudo("chown root:root #{path}.new")
50
+ comm.sudo("mv #{path}.new #{path}")
51
+ comm.sudo("rm #{tmp}")
52
+ comm.sudo(service_restart_command)
53
+ end
54
+ end
55
+
56
+ def detect_export
57
+ @machine.communicate.tap do |comm|
58
+ comm.test('which systemctl') ? @export = '' : @export = 'export '
59
+ end
60
+ end
61
+
62
+ def service_restart_command
63
+ ["systemctl restart #{docker}",
64
+ "service #{docker} restart",
65
+ "/etc/init.d/#{docker} restart"].join(' || ')
66
+ end
67
+
68
+ def docker_sed_script
69
+ <<-SED.gsub(/^\s+/, '')
70
+ /^#{@export}HTTP_PROXY=/ d
71
+ /^#{@export}NO_PROXY=/ d
72
+ /^#{@export}http_proxy=/ d
73
+ /^#{@export}no_proxy=/ d
74
+ SED
75
+ end
76
+
77
+ def docker_config
78
+ <<-CONFIG.gsub(/^\s+/, '')
79
+ #{@export}HTTP_PROXY=#{config.http || ''}
80
+ #{@export}NO_PROXY=#{config.no_proxy || ''}
81
+ #{@export}http_proxy=#{config.http || ''}
82
+ #{@export}no_proxy=#{config.no_proxy || ''}
83
+ CONFIG
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../util'
2
+
3
+ module VagrantPlugins
4
+ module ProxyConf
5
+ module Cap
6
+ module CoreOS
7
+ # Capability for docker proxy configuration
8
+ module DockerProxyConf
9
+ # @return [String, false] the path to docker or `false` if not found
10
+ def self.docker_proxy_conf(machine)
11
+ return false unless Util.which(machine, 'docker')
12
+
13
+ machine.communicate.tap do |comm|
14
+ src_file='/usr/lib/systemd/system/docker.service'
15
+ tmp_file='/tmp/docker.service'
16
+ env_file='EnvironmentFile=-\/etc\/default\/docker'
17
+ comm.sudo("sed -e 's/\\[Service\\]/[Service]\\n#{env_file}/g' #{src_file} > #{tmp_file}")
18
+
19
+ comm.sudo('mv /tmp/docker.service /etc/systemd/system/')
20
+ comm.sudo('systemctl daemon-reload')
21
+ end
22
+ '/etc/default/docker'
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../util'
2
+
3
+ module VagrantPlugins
4
+ module ProxyConf
5
+ module Cap
6
+ module Linux
7
+ # Capability for docker proxy configuration
8
+ module DockerProxyConf
9
+ # @return [String, false] the path to docker or `false` if not found
10
+ def self.docker_proxy_conf(machine)
11
+ docker_command = 'docker' if Util.which(machine, 'docker')
12
+ docker_command = 'docker.io' if Util.which(machine, 'docker.io')
13
+
14
+ return false if docker_command.nil?
15
+
16
+ if machine.communicate.test('cat /etc/redhat-release')
17
+ "/etc/sysconfig/#{docker_command}"
18
+ elsif machine.communicate.test('ls /var/lib/boot2docker/')
19
+ "/var/lib/boot2docker/profile"
20
+ else
21
+ "/etc/default/#{docker_command}"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -8,6 +8,16 @@ module VagrantPlugins
8
8
  Cap::Debian::AptProxyConf
9
9
  end
10
10
 
11
+ guest_capability 'linux', 'docker_proxy_conf' do
12
+ require_relative 'cap/linux/docker_proxy_conf'
13
+ Cap::Linux::DockerProxyConf
14
+ end
15
+
16
+ guest_capability 'coreos', 'docker_proxy_conf' do
17
+ require_relative 'cap/coreos/docker_proxy_conf'
18
+ Cap::CoreOS::DockerProxyConf
19
+ end
20
+
11
21
  guest_capability 'linux', 'env_proxy_conf' do
12
22
  require_relative 'cap/linux/env_proxy_conf'
13
23
  Cap::Linux::EnvProxyConf
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ProxyConf
3
- VERSION = '1.3.2'
3
+ VERSION = '1.4.0'
4
4
  end
5
5
  end
@@ -8,6 +8,14 @@ en:
8
8
  configuring: |-
9
9
  Configuring proxy for Apt...
10
10
 
11
+ docker_proxy:
12
+ not_enabled: |-
13
+ docker_proxy not enabled or configured
14
+ not_supported: |-
15
+ Skipping Docker proxy config as the machine does not support it
16
+ configuring: |-
17
+ Configuring proxy for Docker...
18
+
11
19
  chef_proxy:
12
20
  no_provisioners: |-
13
21
  No Chef provisioners configured
@@ -1,3 +1,5 @@
1
+ require 'rspec/its'
2
+
1
3
  require 'simplecov'
2
4
  require 'coveralls'
3
5
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
@@ -23,44 +23,44 @@ shared_examples "apt proxy config" do |proto|
23
23
 
24
24
  context "with ip" do
25
25
  subject { config_with(proto => "10.1.2.3") }
26
- its(:enabled?) { should be_true }
26
+ its(:enabled?) { should be_truthy }
27
27
  its(:to_s) { should eq conf_line(proto, "10.1.2.3") }
28
28
  end
29
29
 
30
30
  context "with name" do
31
31
  subject { config_with(proto => "proxy.example.com") }
32
- its(:enabled?) { should be_true }
32
+ its(:enabled?) { should be_truthy }
33
33
  its(:to_s) { should eq conf_line(proto, "proxy.example.com") }
34
34
  end
35
35
 
36
36
  context "with name and port" do
37
37
  subject { config_with(proto => "acng:8080") }
38
- its(:enabled?) { should be_true }
38
+ its(:enabled?) { should be_truthy }
39
39
  its(:to_s) { should eq conf_line(proto, "acng", 8080) }
40
40
  end
41
41
 
42
42
  context "with protocol and name" do
43
43
  subject { config_with(proto => "#{proto}://proxy.foo.tld") }
44
- its(:enabled?) { should be_true }
44
+ its(:enabled?) { should be_truthy }
45
45
  its(:to_s) { should eq conf_line(proto, "proxy.foo.tld", nil) }
46
46
  end
47
47
 
48
48
  context "with trailing slash" do
49
49
  subject { config_with(proto => "#{proto}://proxy.foo.tld/") }
50
- its(:enabled?) { should be_true }
50
+ its(:enabled?) { should be_truthy }
51
51
  its(:to_s) { should eq conf_line(proto, "proxy.foo.tld/", nil) }
52
52
  end
53
53
 
54
54
  context "with protocol and name and port" do
55
55
  subject { config_with(proto => "#{proto}://prism.nsa.gov:666") }
56
- its(:enabled?) { should be_true }
56
+ its(:enabled?) { should be_truthy }
57
57
  its(:to_s) { should eq conf_line(proto, "prism.nsa.gov", 666) }
58
58
  end
59
59
 
60
60
  ["DIRECT", "direct"].each do |direct|
61
61
  context "with #{direct.inspect}" do
62
62
  subject { config_with(proto => direct) }
63
- its(:enabled?) { should be_true }
63
+ its(:enabled?) { should be_truthy }
64
64
  its(:to_s) { should eq conf_line(proto, :direct) }
65
65
  end
66
66
  end
@@ -68,14 +68,14 @@ shared_examples "apt proxy config" do |proto|
68
68
  [false, ""].each do |unset|
69
69
  context "with #{unset.inspect}" do
70
70
  subject { config_with(proto => unset) }
71
- its(:enabled?) { should be_true }
71
+ its(:enabled?) { should be_truthy }
72
72
  its(:to_s) { should eq "" }
73
73
  end
74
74
  end
75
75
 
76
76
  context "with nil" do
77
77
  subject { config_with(proto => nil) }
78
- its(:enabled?) { should be_false }
78
+ its(:enabled?) { should be_falsey }
79
79
  its(:to_s) { should eq "" }
80
80
  end
81
81
 
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureAptProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'apt_proxy' }
8
+ it { is_expected.to eq 'apt_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -10,7 +10,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureChefProxy do
10
10
 
11
11
  def configure_chef
12
12
  action = described_class.new(nil, nil)
13
- action.stub(:config => config)
13
+ allow(action).to receive(:config) { config }
14
14
  action.send(:configure_chef, chef)
15
15
  end
16
16
 
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+ require 'vagrant-proxyconf/action/configure_docker_proxy'
3
+
4
+ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
5
+
6
+ describe '#config_name' do
7
+ subject { described_class.new(double, double).config_name }
8
+ it { is_expected.to eq 'docker_proxy' }
9
+ end
10
+ end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureEnvProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'env_proxy' }
8
+ it { is_expected.to eq 'env_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureGitProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'git_proxy' }
8
+ it { is_expected.to eq 'git_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -5,6 +5,6 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureNpmProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'npm_proxy' }
8
+ it { is_expected.to eq 'npm_proxy' }
9
9
  end
10
10
  end
@@ -5,6 +5,6 @@ describe VagrantPlugins::ProxyConf::Action::ConfigurePearProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'pear_proxy' }
8
+ it { is_expected.to eq 'pear_proxy' }
9
9
  end
10
10
  end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureSvnProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'svn_proxy' }
8
+ it { is_expected.to eq 'svn_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -5,35 +5,35 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureYumProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'yum_proxy' }
8
+ it { is_expected.to eq 'yum_proxy' }
9
9
  end
10
10
 
11
11
  describe '#proxy_params' do
12
12
  subject do
13
13
  action = described_class.new(nil, nil)
14
- action.stub(:config => config)
14
+ allow(action).to receive(:config) { config }
15
15
  action.send(:proxy_params)
16
16
  end
17
17
  let(:config) { OpenStruct.new(http: http) }
18
18
 
19
19
  context "with `false`" do
20
20
  let(:http) { false }
21
- it { should eq %q{-v proxy='' -v user='' -v pass=''} }
21
+ it { is_expected.to eq %q{-v proxy='' -v user='' -v pass=''} }
22
22
  end
23
23
 
24
24
  context "without userinfo" do
25
25
  let(:http) { 'http://proxy:1234/' }
26
- it { should eq %q{-v proxy=http://proxy:1234 -v user='' -v pass=''} }
26
+ it { is_expected.to eq %q{-v proxy=http://proxy:1234 -v user='' -v pass=''} }
27
27
  end
28
28
 
29
29
  context "with userinfo" do
30
30
  let(:http) { 'http://foo:bar@myproxy:9876' }
31
- it { should eq %q{-v proxy=http://myproxy:9876 -v user=foo -v pass=bar} }
31
+ it { is_expected.to eq %q{-v proxy=http://myproxy:9876 -v user=foo -v pass=bar} }
32
32
  end
33
33
 
34
34
  context "with special characters" do
35
35
  let(:http) { %q{http://x*y:a(b@proxy.com:8080} }
36
- it { should eq %q{-v proxy=http://proxy.com:8080 -v user=x\\*y -v pass=a\\(b} }
36
+ it { is_expected.to eq %q{-v proxy=http://proxy.com:8080 -v user=x\\*y -v pass=a\\(b} }
37
37
  end
38
38
  end
39
39
  end
@@ -5,13 +5,19 @@ describe VagrantPlugins::ProxyConf::Action::IsEnabled do
5
5
  let(:app) { lambda { |env| } }
6
6
  let(:env) { { :machine => machine } }
7
7
  let(:machine) do
8
- double('machine').tap { |machine| machine.stub(:config).and_return(config) }
8
+ double('machine').tap do |machine|
9
+ allow(machine).to receive(:config) { config }
10
+ end
9
11
  end
10
12
  let(:config) do
11
- double('config').tap { |config| config.stub(:proxy => proxy_config) }
13
+ double('config').tap do |config|
14
+ allow(config).to receive(:proxy) { proxy_config }
15
+ end
12
16
  end
13
17
  let(:proxy_config) do
14
- double('proxy_config').tap { |config| config.stub(:enabled => enabled) }
18
+ double('proxy_config').tap do |config|
19
+ allow(config).to receive(:enabled) { enabled }
20
+ end
15
21
  end
16
22
 
17
23
  [false, ''].each do |value|
@@ -20,7 +26,7 @@ describe VagrantPlugins::ProxyConf::Action::IsEnabled do
20
26
 
21
27
  it "results to falsy" do
22
28
  described_class.new(app, {}).call(env)
23
- expect(env[:result]).to be_false
29
+ expect(env[:result]).to be_falsey
24
30
  end
25
31
  end
26
32
  end
@@ -31,7 +37,7 @@ describe VagrantPlugins::ProxyConf::Action::IsEnabled do
31
37
 
32
38
  it "results to truthy" do
33
39
  described_class.new(app, {}).call(env)
34
- expect(env[:result]).to be_true
40
+ expect(env[:result]).to be_truthy
35
41
  end
36
42
  end
37
43
  end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Debian::AptProxyConf do
5
5
 
6
6
  describe '.apt_proxy_conf' do
7
7
  let(:subject) { described_class.apt_proxy_conf(double) }
8
- it { should eq '/etc/apt/apt.conf.d/01proxy' }
8
+ it { is_expected.to eq '/etc/apt/apt.conf.d/01proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ require 'vagrant-proxyconf/cap/linux/docker_proxy_conf'
3
+ require 'vagrant-proxyconf/cap/util'
4
+
5
+ describe VagrantPlugins::ProxyConf::Cap::Linux::DockerProxyConf do
6
+
7
+ describe '.docker_proxy_conf' do
8
+ let(:machine) { double }
9
+ let(:communicator) { double }
10
+
11
+ before do
12
+ allow(machine).to receive(:communicate) { communicator }
13
+ end
14
+
15
+ it "returns the path when docker is installed on Redhat" do
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
17
+ (c == 'docker') ? '/path/to/docker' : false
18
+ end
19
+ allow(communicator).to receive(:test) do |c|
20
+ c == 'cat /etc/redhat-release'
21
+ end
22
+
23
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/sysconfig/docker'
24
+ end
25
+
26
+ it "returns the path when docker is installed on Debian or Ubuntu" do
27
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
28
+ (c == 'docker') ? '/path/to/docker' : false
29
+ end
30
+ allow(communicator).to receive(:test) { false }
31
+
32
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/default/docker'
33
+ end
34
+
35
+ it "returns the path when docker.io is installed on Ubuntu 14.04 or higher" do
36
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
37
+ (c == 'docker.io') ? '/path/to/docker.io': false
38
+ end
39
+ allow(communicator).to receive(:test) { false }
40
+
41
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/default/docker.io'
42
+ end
43
+
44
+ it "returns the path when docker is installed on boot2docker" do
45
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
46
+ (c == 'docker') ? '/path/to/docker' : false
47
+ end
48
+ allow(communicator).to receive(:test) do |c|
49
+ c == 'ls /var/lib/boot2docker'
50
+ end
51
+
52
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/default/docker'
53
+ end
54
+
55
+ it "returns false when docker is not installed" do
56
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
57
+ expect(described_class.docker_proxy_conf(machine)).to be_falsey
58
+ end
59
+ end
60
+ end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::EnvProxyConf do
5
5
 
6
6
  describe '.env_proxy_conf' do
7
7
  let(:subject) { described_class.env_proxy_conf(double) }
8
- it { should eq '/etc/profile.d/proxy.sh' }
8
+ it { is_expected.to eq '/etc/profile.d/proxy.sh' }
9
9
  end
10
10
 
11
11
  end
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::GitProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns the path when git is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/git')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/git' }
12
12
  expect(described_class.git_proxy_conf(machine)).to eq '/path/to/git'
13
13
  end
14
14
 
15
15
  it "returns false when git is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.git_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.git_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::NpmProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns the path when npm is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/npm')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/npm' }
12
12
  expect(described_class.npm_proxy_conf(machine)).to eq '/path/to/npm'
13
13
  end
14
14
 
15
15
  it "returns false when npm is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.npm_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.npm_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::PearProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns the path when pear is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/pear')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/pear' }
12
12
  expect(described_class.pear_proxy_conf(machine)).to eq '/path/to/pear'
13
13
  end
14
14
 
15
15
  it "returns false when pear is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.pear_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.pear_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::SvnProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns true when svn is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/svn')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/svn' }
12
12
  expect(described_class.svn_proxy_conf(machine)).to eq '/path/to/svn'
13
13
  end
14
14
 
15
15
  it "returns false when pear is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.svn_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.svn_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Redhat::YumProxyConf do
5
5
 
6
6
  describe '.yum_proxy_conf' do
7
7
  let(:subject) { described_class.yum_proxy_conf(double) }
8
- it { should eq '/etc/yum.conf' }
8
+ it { is_expected.to eq '/etc/yum.conf' }
9
9
  end
10
10
 
11
11
  end
@@ -8,7 +8,7 @@ describe VagrantPlugins::ProxyConf::Cap::Util do
8
8
  let(:communicator) { double }
9
9
 
10
10
  before do
11
- machine.stub(:communicate => communicator)
11
+ allow(machine).to receive(:communicate) { communicator }
12
12
  end
13
13
 
14
14
  it "returns the path when the command is installed" do
@@ -25,7 +25,7 @@ describe VagrantPlugins::ProxyConf::Cap::Util do
25
25
  expect(communicator).to receive(:execute).
26
26
  with('which bar', error_check: false).
27
27
  and_return(1)
28
- expect(described_class.which(machine, 'bar')).to be_false
28
+ expect(described_class.which(machine, 'bar')).to be_falsey
29
29
  end
30
30
  end
31
31
 
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Windows::EnvProxyConf do
5
5
 
6
6
  describe '.env_proxy_conf' do
7
7
  let(:subject) { described_class.env_proxy_conf(double) }
8
- it { should eq '/proxy.conf' }
8
+ it { is_expected.to eq '/proxy.conf' }
9
9
  end
10
10
 
11
11
  end
@@ -12,7 +12,7 @@ describe VagrantPlugins::ProxyConf::Config::AptProxy do
12
12
 
13
13
  context "defaults" do
14
14
  subject { config_with({}) }
15
- its(:enabled?) { should be_false }
15
+ its(:enabled?) { should be_falsey }
16
16
  its(:to_s) { should eq "" }
17
17
  end
18
18
 
@@ -22,7 +22,7 @@ describe VagrantPlugins::ProxyConf::Config::AptProxy do
22
22
 
23
23
  context "with both http and https proxies" do
24
24
  subject { config_with(http: "10.2.3.4", https: "ssl-proxy:8443") }
25
- its(:enabled?) { should be_true }
25
+ its(:enabled?) { should be_truthy }
26
26
  its(:to_s) { should match conf_line_pattern("http", "10.2.3.4") }
27
27
  its(:to_s) { should match conf_line_pattern("https", "ssl-proxy", 8443) }
28
28
  end
@@ -26,14 +26,14 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
26
26
 
27
27
  context "defaults" do
28
28
  subject { config_with({}) }
29
- its(:enabled?) { should be_false }
29
+ its(:enabled?) { should be_falsey }
30
30
  its(:to_s) { should eq "" }
31
31
  end
32
32
 
33
33
  context "with http config" do
34
34
  let(:proxy) { 'http://proxy.example.com:8888' }
35
35
  subject { config_with({ http: proxy }) }
36
- its(:enabled?) { should be_true }
36
+ its(:enabled?) { should be_truthy }
37
37
  its(:to_s) { should match_lines [
38
38
  %Q{export HTTP_PROXY=#{proxy}\n},
39
39
  %Q{export http_proxy=#{proxy}\n},
@@ -44,7 +44,7 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
44
44
  let(:proxy) { 'http://proxy.example.com:8888' }
45
45
  let(:no_proxy) { 'localhost, 127.0.0.1' }
46
46
  subject { config_with({ http: proxy, no_proxy: no_proxy }) }
47
- its(:enabled?) { should be_true }
47
+ its(:enabled?) { should be_truthy }
48
48
  its(:to_s) { should match_lines [
49
49
  %Q{export HTTP_PROXY=#{proxy}\n},
50
50
  %Q{export http_proxy=#{proxy}\n},
@@ -57,7 +57,7 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
57
57
  let(:proxy) { 'http://proxy.example.com:8888' }
58
58
  before(:each) { ENV['VAGRANT_ENV_HTTP_PROXY'] = proxy }
59
59
  subject { config_with({ http: 'http://default:3128' }) }
60
- its(:enabled?) { should be_true }
60
+ its(:enabled?) { should be_truthy }
61
61
  its(:to_s) { should match_lines [
62
62
  %Q{export HTTP_PROXY=#{proxy}\n},
63
63
  %Q{export http_proxy=#{proxy}\n},
@@ -7,6 +7,12 @@ describe VagrantPlugins::ProxyConf::Config::KeyMixin do
7
7
  include VagrantPlugins::ProxyConf::Config::KeyMixin
8
8
  key :foo
9
9
  key :bar
10
+
11
+ # Hack to keep rspec 3 description generation happy
12
+ def respond_to?(method)
13
+ return false if method == :to_ary
14
+ super
15
+ end
10
16
  end
11
17
 
12
18
  class TestDefaultConfig < Vagrant.plugin('2', :config)
@@ -38,8 +44,8 @@ describe VagrantPlugins::ProxyConf::Config::KeyMixin do
38
44
  subject { config.merge_defaults(default) }
39
45
 
40
46
  context 'with no configuration' do
41
- it { should be_kind_of config.class }
42
- it { should_not be config }
47
+ it { is_expected.to be_kind_of config.class }
48
+ it { is_expected.not_to be config }
43
49
 
44
50
  its(:foo) { should be_nil }
45
51
  its(:bar) { should be_nil }
@@ -6,7 +6,7 @@ describe VagrantPlugins::ProxyConf do
6
6
  describe '.logger' do
7
7
  subject { described_class.logger }
8
8
 
9
- it { should be_a Log4r::Logger }
9
+ it { is_expected.to be_a Log4r::Logger }
10
10
 
11
11
  it "always returns the same instance" do
12
12
  expect(subject).to be described_class.logger
@@ -9,18 +9,18 @@ describe VagrantPlugins::ProxyConf::Plugin do
9
9
  end
10
10
 
11
11
  it "accepts single String argument" do
12
- expect(described_class.check_vagrant_version('~> 1.1')).to be_true
13
- expect(described_class.check_vagrant_version('1.2')).to be_false
12
+ expect(described_class.check_vagrant_version('~> 1.1')).to be_truthy
13
+ expect(described_class.check_vagrant_version('1.2')).to be_falsey
14
14
  end
15
15
 
16
16
  it "accepts an Array argument" do
17
- expect(described_class.check_vagrant_version(['>= 1.1', '< 1.3.0.beta'])).to be_true
18
- expect(described_class.check_vagrant_version(['>= 1.3'])).to be_false
17
+ expect(described_class.check_vagrant_version(['>= 1.1', '< 1.3.0.beta'])).to be_truthy
18
+ expect(described_class.check_vagrant_version(['>= 1.3'])).to be_falsey
19
19
  end
20
20
 
21
21
  it "accepts multiple arguments" do
22
- expect(described_class.check_vagrant_version('>= 1.0', '<= 1.3')).to be_true
23
- expect(described_class.check_vagrant_version('~> 1.2', '>= 1.2.5')).to be_false
22
+ expect(described_class.check_vagrant_version('>= 1.0', '<= 1.3')).to be_truthy
23
+ expect(described_class.check_vagrant_version('~> 1.2', '>= 1.2.5')).to be_falsey
24
24
  end
25
25
  end
26
26
 
@@ -34,7 +34,7 @@ describe VagrantPlugins::ProxyConf::Plugin do
34
34
  'VagrantPlugins::ProxyConf::Plugin::VAGRANT_VERSION_REQUIREMENT',
35
35
  requirement)
36
36
  stub_const('Vagrant::VERSION', vagrant_version)
37
- $stderr.stub(:puts)
37
+ allow($stderr).to receive(:puts)
38
38
  end
39
39
 
40
40
  context "on too old Vagrant version" do
@@ -43,7 +43,7 @@ describe VagrantPlugins::ProxyConf::Plugin do
43
43
  expect { subject }.to raise_error(err_msg)
44
44
  end
45
45
  it "warns" do
46
- $stderr.should_receive(:puts).with(err_msg)
46
+ expect($stderr).to receive(:puts).with(err_msg)
47
47
  subject rescue nil
48
48
  end
49
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-proxyconf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Teemu Matilainen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-30 00:00:00.000000000 Z
11
+ date: 2014-09-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Vagrant plugin that configures the virtual machine to use proxy servers
14
14
  email:
@@ -34,6 +34,7 @@ files:
34
34
  - lib/vagrant-proxyconf/action/base.rb
35
35
  - lib/vagrant-proxyconf/action/configure_apt_proxy.rb
36
36
  - lib/vagrant-proxyconf/action/configure_chef_proxy.rb
37
+ - lib/vagrant-proxyconf/action/configure_docker_proxy.rb
37
38
  - lib/vagrant-proxyconf/action/configure_env_proxy.rb
38
39
  - lib/vagrant-proxyconf/action/configure_git_proxy.rb
39
40
  - lib/vagrant-proxyconf/action/configure_npm_proxy.rb
@@ -42,7 +43,9 @@ files:
42
43
  - lib/vagrant-proxyconf/action/configure_yum_proxy.rb
43
44
  - lib/vagrant-proxyconf/action/is_enabled.rb
44
45
  - lib/vagrant-proxyconf/action/only_once.rb
46
+ - lib/vagrant-proxyconf/cap/coreos/docker_proxy_conf.rb
45
47
  - lib/vagrant-proxyconf/cap/debian/apt_proxy_conf.rb
48
+ - lib/vagrant-proxyconf/cap/linux/docker_proxy_conf.rb
46
49
  - lib/vagrant-proxyconf/cap/linux/env_proxy_conf.rb
47
50
  - lib/vagrant-proxyconf/cap/linux/git_proxy_conf.rb
48
51
  - lib/vagrant-proxyconf/cap/linux/npm_proxy_conf.rb
@@ -86,6 +89,7 @@ files:
86
89
  - spec/unit/support/shared/apt_proxy_config.rb
87
90
  - spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb
88
91
  - spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb
92
+ - spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb
89
93
  - spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb
90
94
  - spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb
91
95
  - spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb
@@ -96,6 +100,7 @@ files:
96
100
  - spec/unit/vagrant-proxyconf/action/only_once_spec.rb
97
101
  - spec/unit/vagrant-proxyconf/action_spec.rb
98
102
  - spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb
103
+ - spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb
99
104
  - spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb
100
105
  - spec/unit/vagrant-proxyconf/cap/linux/git_proxy_conf_spec.rb
101
106
  - spec/unit/vagrant-proxyconf/cap/linux/npm_proxy_conf_spec.rb
@@ -160,6 +165,7 @@ test_files:
160
165
  - spec/unit/support/shared/apt_proxy_config.rb
161
166
  - spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb
162
167
  - spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb
168
+ - spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb
163
169
  - spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb
164
170
  - spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb
165
171
  - spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb
@@ -170,6 +176,7 @@ test_files:
170
176
  - spec/unit/vagrant-proxyconf/action/only_once_spec.rb
171
177
  - spec/unit/vagrant-proxyconf/action_spec.rb
172
178
  - spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb
179
+ - spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb
173
180
  - spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb
174
181
  - spec/unit/vagrant-proxyconf/cap/linux/git_proxy_conf_spec.rb
175
182
  - spec/unit/vagrant-proxyconf/cap/linux/npm_proxy_conf_spec.rb