vagrant-proxyconf 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -1
  3. data/.travis.yml +15 -1
  4. data/CHANGELOG.md +25 -0
  5. data/Gemfile +6 -3
  6. data/LICENSE.txt +1 -1
  7. data/README.md +34 -8
  8. data/Rakefile +2 -0
  9. data/lib/vagrant-proxyconf/action.rb +28 -5
  10. data/lib/vagrant-proxyconf/action/base.rb +26 -19
  11. data/lib/vagrant-proxyconf/action/configure_chef_proxy.rb +15 -15
  12. data/lib/vagrant-proxyconf/action/configure_env_proxy.rb +2 -2
  13. data/lib/vagrant-proxyconf/action/configure_pear_proxy.rb +29 -0
  14. data/lib/vagrant-proxyconf/action/configure_yum_proxy.rb +5 -10
  15. data/lib/vagrant-proxyconf/action/is_enabled.rb +24 -0
  16. data/lib/vagrant-proxyconf/cap/linux/pear_proxy_conf.rb +15 -0
  17. data/lib/vagrant-proxyconf/capability.rb +31 -0
  18. data/lib/vagrant-proxyconf/config.rb +27 -0
  19. data/lib/vagrant-proxyconf/config/apt_proxy.rb +24 -24
  20. data/lib/vagrant-proxyconf/config/env_proxy.rb +8 -1
  21. data/lib/vagrant-proxyconf/config/key_mixin.rb +3 -2
  22. data/lib/vagrant-proxyconf/config/proxy.rb +3 -0
  23. data/lib/vagrant-proxyconf/hook.rb +41 -0
  24. data/lib/vagrant-proxyconf/plugin.rb +42 -70
  25. data/lib/vagrant-proxyconf/version.rb +1 -1
  26. data/locales/en.yml +9 -1
  27. data/spec/spec_helper.rb +11 -9
  28. data/spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb +3 -1
  29. data/spec/unit/vagrant-proxyconf/action/configure_pear_proxy_spec.rb +10 -0
  30. data/spec/unit/vagrant-proxyconf/action/configure_yum_proxy_spec.rb +5 -1
  31. data/spec/unit/vagrant-proxyconf/action/is_enabled_spec.rb +39 -0
  32. data/spec/unit/vagrant-proxyconf/cap/linux/pear_proxy_conf_spec.rb +25 -0
  33. data/spec/unit/vagrant-proxyconf/config/env_proxy_spec.rb +15 -8
  34. data/spec/unit/vagrant-proxyconf/plugin_spec.rb +54 -15
  35. metadata +19 -15
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ProxyConf
3
- VERSION = '1.0.1'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
@@ -24,6 +24,14 @@ en:
24
24
  configuring: |-
25
25
  Configuring proxy environment variables...
26
26
 
27
+ pear_proxy:
28
+ not_enabled: |-
29
+ pear_proxy not enabled or configured
30
+ not_supported: |-
31
+ Skipping PEAR proxy config as `pear` is not found
32
+ configuring: |-
33
+ Configuring proxy for PEAR...
34
+
27
35
  yum_proxy:
28
36
  not_enabled: |-
29
37
  yum_proxy not enabled or configured
@@ -34,4 +42,4 @@ en:
34
42
 
35
43
  errors:
36
44
  vagrant_version: |-
37
- vagrant-proxyconf plugin requires Vagrant %{min_version} or newer
45
+ vagrant-proxyconf plugin requires Vagrant version %{requirement}
@@ -1,3 +1,14 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
4
+ SimpleCov::Formatter::HTMLFormatter,
5
+ Coveralls::SimpleCov::Formatter
6
+ ]
7
+ SimpleCov.start do
8
+ coverage_dir('tmp/coverage')
9
+ add_filter '/spec/'
10
+ end
11
+
1
12
  RSpec.configure do |config|
2
13
  config.expect_with :rspec do |c|
3
14
  c.syntax = :expect
@@ -5,12 +16,3 @@ RSpec.configure do |config|
5
16
  config.color = true
6
17
  config.tty = true
7
18
  end
8
-
9
- require 'simplecov'
10
- SimpleCov.start do
11
- coverage_dir('tmp/coverage')
12
- add_filter '/spec/'
13
- end
14
-
15
- require 'tempfile'
16
- require 'vagrant-proxyconf'
@@ -9,7 +9,9 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureChefProxy do
9
9
  let(:config) { OpenStruct.new }
10
10
 
11
11
  def configure_chef
12
- described_class.new(nil, nil).send(:configure_chef, chef, config)
12
+ action = described_class.new(nil, nil)
13
+ action.stub(:config => config)
14
+ action.send(:configure_chef, chef)
13
15
  end
14
16
 
15
17
  context "with no configurations" do
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+ require 'vagrant-proxyconf/action/configure_pear_proxy'
3
+
4
+ describe VagrantPlugins::ProxyConf::Action::ConfigurePearProxy do
5
+
6
+ describe '#config_name' do
7
+ subject { described_class.new(double, double).config_name }
8
+ it { should eq 'pear_proxy' }
9
+ end
10
+ end
@@ -9,7 +9,11 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureYumProxy do
9
9
  end
10
10
 
11
11
  describe '#proxy_params' do
12
- subject { described_class.new(nil, nil).send(:proxy_params, config) }
12
+ subject do
13
+ action = described_class.new(nil, nil)
14
+ action.stub(:config => config)
15
+ action.send(:proxy_params)
16
+ end
13
17
  let(:config) { OpenStruct.new(http: http) }
14
18
 
15
19
  context "with `false`" do
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+ require 'vagrant-proxyconf/action/is_enabled'
3
+
4
+ describe VagrantPlugins::ProxyConf::Action::IsEnabled do
5
+ let(:app) { lambda { |env| } }
6
+ let(:env) { { :machine => machine } }
7
+ let(:machine) do
8
+ double('machine').tap { |machine| machine.stub(:config).and_return(config) }
9
+ end
10
+ let(:config) do
11
+ double('config').tap { |config| config.stub(:proxy => proxy_config) }
12
+ end
13
+ let(:proxy_config) do
14
+ double('proxy_config').tap { |config| config.stub(:enabled => enabled) }
15
+ end
16
+
17
+ [false, ''].each do |value|
18
+ context "with `config.proxy.enabled=#{value.inspect}`" do
19
+ let(:enabled) { value }
20
+
21
+ it "results to falsy" do
22
+ described_class.new(app, {}).call(env)
23
+ expect(env[:result]).to be_false
24
+ end
25
+ end
26
+ end
27
+
28
+ [nil, true, :auto, 'yes please'].each do |value|
29
+ context "with `config.proxy.enabled=#{value.inspect}`" do
30
+ let(:enabled) { value }
31
+
32
+ it "results to truthy" do
33
+ described_class.new(app, {}).call(env)
34
+ expect(env[:result]).to be_true
35
+ end
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+ require 'vagrant-proxyconf/cap/linux/pear_proxy_conf'
3
+
4
+ describe VagrantPlugins::ProxyConf::Cap::Linux::PearProxyConf do
5
+
6
+ describe '.pear_proxy_conf' do
7
+ let(:machine) { double }
8
+ let(:communicator) { double }
9
+
10
+ before do
11
+ machine.stub(:communicate => communicator)
12
+ end
13
+
14
+ it "returns true when pear is installed" do
15
+ expect(communicator).to receive(:test).with("which pear").and_return(true)
16
+ expect(described_class.pear_proxy_conf(machine)).to be_true
17
+ end
18
+
19
+ it "returns false when pear is not installed" do
20
+ expect(communicator).to receive(:test).with("which pear").and_return(false)
21
+ expect(described_class.pear_proxy_conf(machine)).to be_false
22
+ end
23
+ end
24
+
25
+ end
@@ -8,10 +8,6 @@ def config_with(options)
8
8
  end
9
9
  end
10
10
 
11
- def conf_lines(env_var, val)
12
- [env_var.upcase, env_var.downcase].map { |var| "export #{var}=#{val}\n" }
13
- end
14
-
15
11
  RSpec::Matchers.define :match_lines do |expected|
16
12
  match do |actual|
17
13
  expect(actual.lines.to_a).to match_array(expected)
@@ -38,15 +34,23 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
38
34
  let(:proxy) { 'http://proxy.example.com:8888' }
39
35
  subject { config_with({ http: proxy }) }
40
36
  its(:enabled?) { should be_true }
41
- its(:to_s) { should match_lines conf_lines('http_proxy', proxy) }
37
+ its(:to_s) { should match_lines [
38
+ %Q{export HTTP_PROXY=#{proxy}\n},
39
+ %Q{export http_proxy=#{proxy}\n},
40
+ ] }
42
41
  end
43
42
 
44
43
  context "with http and no_proxy config" do
45
44
  let(:proxy) { 'http://proxy.example.com:8888' }
46
- let(:no_proxy) { 'localhost,127.0.0.1' }
45
+ let(:no_proxy) { 'localhost, 127.0.0.1' }
47
46
  subject { config_with({ http: proxy, no_proxy: no_proxy }) }
48
47
  its(:enabled?) { should be_true }
49
- its(:to_s) { should match_lines conf_lines('http_proxy', proxy) + conf_lines('no_proxy', no_proxy) }
48
+ its(:to_s) { should match_lines [
49
+ %Q{export HTTP_PROXY=#{proxy}\n},
50
+ %Q{export http_proxy=#{proxy}\n},
51
+ %Q{export NO_PROXY="#{no_proxy}"\n},
52
+ %Q{export no_proxy="#{no_proxy}"\n},
53
+ ] }
50
54
  end
51
55
 
52
56
  context "with VAGRANT_ENV_HTTP_PROXY env var" do
@@ -54,6 +58,9 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
54
58
  before(:each) { ENV['VAGRANT_ENV_HTTP_PROXY'] = proxy }
55
59
  subject { config_with({ http: 'http://default:3128' }) }
56
60
  its(:enabled?) { should be_true }
57
- its(:to_s) { should match_lines conf_lines('HTTP_PROXY', proxy) }
61
+ its(:to_s) { should match_lines [
62
+ %Q{export HTTP_PROXY=#{proxy}\n},
63
+ %Q{export http_proxy=#{proxy}\n},
64
+ ] }
58
65
  end
59
66
  end
@@ -3,13 +3,36 @@ require 'vagrant-proxyconf/plugin'
3
3
 
4
4
  describe VagrantPlugins::ProxyConf::Plugin do
5
5
 
6
+ describe '.check_vagrant_version' do
7
+ before :each do
8
+ stub_const('Vagrant::VERSION', '1.2.3')
9
+ end
10
+
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
14
+ end
15
+
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
19
+ end
20
+
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
24
+ end
25
+ end
26
+
6
27
  describe '.check_vagrant_version!' do
7
28
  subject { described_class.check_vagrant_version! }
8
- let(:min_vagrant_verision) { '1.2.3' }
9
- let(:err_msg) { /requires Vagrant #{min_vagrant_verision}/ }
29
+ let(:requirement) { '>= 1.2.3' }
30
+ let(:err_msg) { /requires Vagrant version #{Regexp.escape(requirement.inspect)}/ }
10
31
 
11
32
  before :each do
12
- stub_const('VagrantPlugins::ProxyConf::Plugin::MIN_VAGRANT_VERSION', min_vagrant_verision)
33
+ stub_const(
34
+ 'VagrantPlugins::ProxyConf::Plugin::VAGRANT_VERSION_REQUIREMENT',
35
+ requirement)
13
36
  stub_const('Vagrant::VERSION', vagrant_version)
14
37
  $stderr.stub(:puts)
15
38
  end
@@ -26,7 +49,7 @@ describe VagrantPlugins::ProxyConf::Plugin do
26
49
  end
27
50
 
28
51
  context "on exact required Vagrant version" do
29
- let(:vagrant_version) { min_vagrant_verision }
52
+ let(:vagrant_version) { '1.2.3' }
30
53
  it "does not raise" do
31
54
  expect { subject }.not_to raise_error
32
55
  end
@@ -44,19 +67,35 @@ describe VagrantPlugins::ProxyConf::Plugin do
44
67
  subject { described_class.load_optional_dependency(plugin_name) }
45
68
  let(:plugin_name) { 'vagrant-foo' }
46
69
 
47
- it "loads the specified plugin" do
48
- expect(Vagrant).to receive(:require_plugin).with(plugin_name)
49
- subject
50
- end
70
+ # Vagrant plugin loading API changed in v1.5.0
71
+ if Gem::Version.new(Vagrant::VERSION) < Gem::Version.new('1.5.0.dev')
72
+ it "loads the specified plugin" do
73
+ expect(Vagrant).to receive(:require_plugin).with(plugin_name)
74
+ subject
75
+ end
51
76
 
52
- it "ignores PluginLoadError" do
53
- expect(Vagrant).to receive(:require_plugin).and_raise(Vagrant::Errors::PluginLoadError, plugin: plugin_name)
54
- expect { subject }.not_to raise_error
55
- end
77
+ it "ignores PluginLoadError" do
78
+ expect(Vagrant).to receive(:require_plugin).
79
+ and_raise(Vagrant::Errors::PluginLoadError, plugin: plugin_name)
80
+ expect { subject }.not_to raise_error
81
+ end
56
82
 
57
- it "won't ignore other error" do
58
- expect(Vagrant).to receive(:require_plugin).and_raise(Vagrant::Errors::PluginLoadFailed, plugin: plugin_name)
59
- expect { subject }.to raise_error(Vagrant::Errors::PluginLoadFailed)
83
+ it "won't ignore other error" do
84
+ expect(Vagrant).to receive(:require_plugin).
85
+ and_raise(Vagrant::Errors::PluginLoadFailed, plugin: plugin_name)
86
+ expect { subject }.to raise_error(Vagrant::Errors::PluginLoadFailed)
87
+ end
88
+ else
89
+ it "loads the specified plugin" do
90
+ expect(described_class).to receive(:require).with(plugin_name)
91
+ subject
92
+ end
93
+
94
+ it "ignores errors" do
95
+ expect(described_class).to receive(:require).
96
+ and_raise(LoadError, path: plugin_name)
97
+ expect { subject }.not_to raise_error
98
+ end
60
99
  end
61
100
  end
62
101
 
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-proxyconf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
5
- prerelease:
4
+ version: 1.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Teemu Matilainen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-01 00:00:00.000000000 Z
11
+ date: 2014-02-06 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: A Vagrant plugin that configures the virtual machine to use proxy servers
15
14
  email:
@@ -36,17 +35,23 @@ files:
36
35
  - lib/vagrant-proxyconf/action/configure_apt_proxy.rb
37
36
  - lib/vagrant-proxyconf/action/configure_chef_proxy.rb
38
37
  - lib/vagrant-proxyconf/action/configure_env_proxy.rb
38
+ - lib/vagrant-proxyconf/action/configure_pear_proxy.rb
39
39
  - lib/vagrant-proxyconf/action/configure_yum_proxy.rb
40
+ - lib/vagrant-proxyconf/action/is_enabled.rb
40
41
  - lib/vagrant-proxyconf/action/only_once.rb
41
42
  - lib/vagrant-proxyconf/cap/debian/apt_proxy_conf.rb
42
43
  - lib/vagrant-proxyconf/cap/linux/env_proxy_conf.rb
44
+ - lib/vagrant-proxyconf/cap/linux/pear_proxy_conf.rb
43
45
  - lib/vagrant-proxyconf/cap/redhat/yum_proxy_conf.rb
46
+ - lib/vagrant-proxyconf/capability.rb
47
+ - lib/vagrant-proxyconf/config.rb
44
48
  - lib/vagrant-proxyconf/config/apt_proxy.rb
45
49
  - lib/vagrant-proxyconf/config/env_proxy.rb
46
50
  - lib/vagrant-proxyconf/config/key.rb
47
51
  - lib/vagrant-proxyconf/config/key_mixin.rb
48
52
  - lib/vagrant-proxyconf/config/proxy.rb
49
53
  - lib/vagrant-proxyconf/config/yum_proxy.rb
54
+ - lib/vagrant-proxyconf/hook.rb
50
55
  - lib/vagrant-proxyconf/logger.rb
51
56
  - lib/vagrant-proxyconf/plugin.rb
52
57
  - lib/vagrant-proxyconf/resource.rb
@@ -72,11 +77,14 @@ files:
72
77
  - spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb
73
78
  - spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb
74
79
  - spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb
80
+ - spec/unit/vagrant-proxyconf/action/configure_pear_proxy_spec.rb
75
81
  - spec/unit/vagrant-proxyconf/action/configure_yum_proxy_spec.rb
82
+ - spec/unit/vagrant-proxyconf/action/is_enabled_spec.rb
76
83
  - spec/unit/vagrant-proxyconf/action/only_once_spec.rb
77
84
  - spec/unit/vagrant-proxyconf/action_spec.rb
78
85
  - spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb
79
86
  - spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb
87
+ - spec/unit/vagrant-proxyconf/cap/linux/pear_proxy_conf_spec.rb
80
88
  - spec/unit/vagrant-proxyconf/cap/redhat/yum_proxy_conf_spec.rb
81
89
  - spec/unit/vagrant-proxyconf/config/apt_proxy_spec.rb
82
90
  - spec/unit/vagrant-proxyconf/config/env_proxy_spec.rb
@@ -93,33 +101,26 @@ files:
93
101
  homepage: http://tmatilai.github.io/vagrant-proxyconf/
94
102
  licenses:
95
103
  - MIT
104
+ metadata: {}
96
105
  post_install_message:
97
106
  rdoc_options: []
98
107
  require_paths:
99
108
  - lib
100
109
  required_ruby_version: !ruby/object:Gem::Requirement
101
- none: false
102
110
  requirements:
103
- - - ! '>='
111
+ - - '>='
104
112
  - !ruby/object:Gem::Version
105
113
  version: '0'
106
- segments:
107
- - 0
108
- hash: -1237288161997812265
109
114
  required_rubygems_version: !ruby/object:Gem::Requirement
110
- none: false
111
115
  requirements:
112
- - - ! '>='
116
+ - - '>='
113
117
  - !ruby/object:Gem::Version
114
118
  version: '0'
115
- segments:
116
- - 0
117
- hash: -1237288161997812265
118
119
  requirements: []
119
120
  rubyforge_project:
120
- rubygems_version: 1.8.23
121
+ rubygems_version: 2.0.14
121
122
  signing_key:
122
- specification_version: 3
123
+ specification_version: 4
123
124
  summary: A Vagrant plugin that configures the virtual machine to use proxy servers
124
125
  test_files:
125
126
  - spec/spec_helper.rb
@@ -140,11 +141,14 @@ test_files:
140
141
  - spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb
141
142
  - spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb
142
143
  - spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb
144
+ - spec/unit/vagrant-proxyconf/action/configure_pear_proxy_spec.rb
143
145
  - spec/unit/vagrant-proxyconf/action/configure_yum_proxy_spec.rb
146
+ - spec/unit/vagrant-proxyconf/action/is_enabled_spec.rb
144
147
  - spec/unit/vagrant-proxyconf/action/only_once_spec.rb
145
148
  - spec/unit/vagrant-proxyconf/action_spec.rb
146
149
  - spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb
147
150
  - spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb
151
+ - spec/unit/vagrant-proxyconf/cap/linux/pear_proxy_conf_spec.rb
148
152
  - spec/unit/vagrant-proxyconf/cap/redhat/yum_proxy_conf_spec.rb
149
153
  - spec/unit/vagrant-proxyconf/config/apt_proxy_spec.rb
150
154
  - spec/unit/vagrant-proxyconf/config/env_proxy_spec.rb