vagrant-proxyconf 1.5.2 → 2.0.1

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +11 -14
  4. data/CHANGELOG.md +38 -0
  5. data/Gemfile +28 -7
  6. data/LICENSE.txt +1 -1
  7. data/README.md +147 -18
  8. data/Rakefile +1 -27
  9. data/development/Dockerfile +45 -0
  10. data/development/README.md +2 -0
  11. data/development/Vagrantfile.example +185 -9
  12. data/development/install-c7.sh +46 -0
  13. data/development/install-debian.sh +55 -0
  14. data/development/tinyproxy.conf +333 -0
  15. data/lib/vagrant-proxyconf/action.rb +15 -7
  16. data/lib/vagrant-proxyconf/action/base.rb +47 -5
  17. data/lib/vagrant-proxyconf/action/configure_apt_proxy.rb +17 -0
  18. data/lib/vagrant-proxyconf/action/configure_chef_proxy.rb +32 -27
  19. data/lib/vagrant-proxyconf/action/configure_docker_proxy.rb +132 -14
  20. data/lib/vagrant-proxyconf/action/configure_env_proxy.rb +58 -11
  21. data/lib/vagrant-proxyconf/action/configure_git_proxy.rb +25 -9
  22. data/lib/vagrant-proxyconf/action/configure_npm_proxy.rb +14 -6
  23. data/lib/vagrant-proxyconf/action/configure_pear_proxy.rb +15 -8
  24. data/lib/vagrant-proxyconf/action/configure_svn_proxy.rb +15 -8
  25. data/lib/vagrant-proxyconf/action/configure_yum_proxy.rb +16 -0
  26. data/lib/vagrant-proxyconf/action/is_enabled.rb +18 -1
  27. data/lib/vagrant-proxyconf/cap/linux/chef_proxy_conf.rb +17 -0
  28. data/lib/vagrant-proxyconf/cap/linux/docker_proxy_conf.rb +2 -1
  29. data/lib/vagrant-proxyconf/cap/linux/yum_proxy_conf.rb +19 -0
  30. data/lib/vagrant-proxyconf/cap/util.rb +4 -5
  31. data/lib/vagrant-proxyconf/capability.rb +10 -0
  32. data/lib/vagrant-proxyconf/config.rb +20 -0
  33. data/lib/vagrant-proxyconf/config/chef_proxy.rb +25 -0
  34. data/lib/vagrant-proxyconf/config/docker_proxy.rb +25 -0
  35. data/lib/vagrant-proxyconf/config/git_proxy.rb +3 -0
  36. data/lib/vagrant-proxyconf/config/npm_proxy.rb +25 -0
  37. data/lib/vagrant-proxyconf/config/pear_proxy.rb +19 -0
  38. data/lib/vagrant-proxyconf/version.rb +1 -1
  39. data/locales/en.yml +38 -0
  40. data/resources/yum_config.awk +1 -0
  41. data/spec/spec_helper.rb +27 -9
  42. data/spec/unit/fixtures/docker_client_config_json_enabled_proxy +9 -0
  43. data/spec/unit/fixtures/docker_client_config_json_no_proxy +5 -0
  44. data/spec/unit/fixtures/etc_environment_only_http_proxy.conf +9 -0
  45. data/spec/unit/fixtures/yum_with_repository_and_proxy_containing_special_chars.conf +10 -0
  46. data/spec/unit/vagrant-proxyconf/action/base_spec.rb +191 -0
  47. data/spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb +162 -0
  48. data/spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb +32 -0
  49. data/spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb +491 -0
  50. data/spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb +105 -4
  51. data/spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb +116 -0
  52. data/spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb +67 -0
  53. data/spec/unit/vagrant-proxyconf/action/configure_pear_proxy_spec.rb +116 -0
  54. data/spec/unit/vagrant-proxyconf/action/configure_svn_proxy_spec.rb +85 -0
  55. data/spec/unit/vagrant-proxyconf/action/configure_yum_proxy_spec.rb +100 -0
  56. data/spec/unit/vagrant-proxyconf/action/is_enabled_spec.rb +162 -12
  57. data/spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb +1 -1
  58. data/spec/unit/vagrant-proxyconf/cap/util_spec.rb +2 -2
  59. data/spec/unit/vagrant-proxyconf/config/key_mixin_spec.rb +1 -1
  60. data/spec/unit/vagrant-proxyconf/resources/yum_config_spec.rb +14 -0
  61. data/test/issues/180/.rspec +2 -0
  62. data/test/issues/180/Dockerfile +47 -0
  63. data/test/issues/180/README.md +31 -0
  64. data/test/issues/180/Rakefile +27 -0
  65. data/test/issues/180/Vagrantfile +31 -0
  66. data/test/issues/180/entrypoint.sh +50 -0
  67. data/test/issues/180/spec/default/redhat_spec.rb +15 -0
  68. data/test/issues/180/spec/docker_host/redhat_spec.rb +165 -0
  69. data/test/issues/180/spec/spec_helper.rb +43 -0
  70. data/test/issues/180/tinyproxy.conf +333 -0
  71. data/travis/before_install +26 -0
  72. metadata +44 -4
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'vagrant-proxyconf/action/configure_env_proxy'
3
+ require 'vagrant-proxyconf/config/proxy'
3
4
 
4
5
  describe VagrantPlugins::ProxyConf::Action::ConfigureEnvProxy do
5
6
 
@@ -24,12 +25,14 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureEnvProxy do
24
25
  is_expected.to eq false
25
26
  end
26
27
  end
28
+
27
29
  context 'when config proxy is not enabled' do
28
30
  it do
29
31
  @config_proxy_enabled = false
30
32
  is_expected.to eq true
31
33
  end
32
34
  end
35
+
33
36
  context 'when config proxy is empty string' do
34
37
  it do
35
38
  @config_proxy_enabled = ''
@@ -38,24 +41,60 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureEnvProxy do
38
41
  end
39
42
 
40
43
  context 'when target config proxy is enabled' do
41
- it do
42
- @config_proxy_enabled = { env: true }
43
- is_expected.to eq false
44
+ context 'given config.proxy.enabled is a Hash' do
45
+ it 'when has key :enabled => true and not skipped, #disabled? should return false' do
46
+ @config_proxy_enabled = {
47
+ :env => {
48
+ :enabled => true,
49
+ :skip => false,
50
+ }
51
+ }
52
+ is_expected.to eq false
53
+ end
54
+
55
+ it 'when key :enabled => true and skipped => true, #disabled should return false' do
56
+ @config_proxy_enabled = {
57
+ :env => {
58
+ :enabled => true,
59
+ :skip => true,
60
+ }
61
+ }
62
+ is_expected.to eq false
63
+ end
64
+
65
+ it 'when config.proxy.enabled[:env] = true, return false' do
66
+ @config_proxy_enabled = { :env => true }
67
+ is_expected.to eq false
68
+ end
69
+ end
70
+
71
+ context 'given config.proxy.enabled is a Boolean' do
72
+ it 'when true, #disabled? should return false' do
73
+ @config_proxy_enabled = true
74
+ is_expected.to eq false
75
+ end
76
+
77
+ it 'when false, #disabled? should return true' do
78
+ @config_proxy_enabled = false
79
+ is_expected.to eq true
80
+ end
44
81
  end
45
82
  end
83
+
46
84
  context 'when target config proxy target is not enabled' do
47
85
  it do
48
86
  @config_proxy_enabled = { env: false }
49
87
  is_expected.to eq true
50
88
  end
51
89
  end
90
+
52
91
  context 'when other config proxy are not enabled' do
53
92
  it do
54
93
  @config_proxy_enabled = {
55
- svn: false,
56
94
  apt: false,
57
95
  chef: false,
58
96
  docker: false,
97
+ env: true,
59
98
  git: false,
60
99
  npm: false,
61
100
  pear: false,
@@ -67,4 +106,66 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureEnvProxy do
67
106
 
68
107
  end
69
108
  end
109
+
110
+ describe "#unconfigure_machine" do
111
+ let(:app) { lambda { |env| } }
112
+ let(:env) { Hash.new }
113
+ let(:machine) { double('machine') }
114
+
115
+ context 'when proxy is not enabled' do
116
+ context "and guest is windows" do
117
+ subject do
118
+ conf = described_class.new(app, env)
119
+ allow(conf).to receive(:windows_guest?).and_return(true)
120
+ conf.send(:unconfigure_machine)
121
+ end
122
+
123
+ it 'should raise NotImplementedError' do
124
+ expect { subject }.to raise_error(NotImplementedError)
125
+ end
126
+ end
127
+
128
+ context "and guest is linux" do
129
+ subject do
130
+ conf = described_class.new(app, env)
131
+
132
+ # configure test doubles
133
+ allow(conf).to receive(:windows_guest?).and_return(false)
134
+ conf.instance_variable_set(:@machine, machine)
135
+
136
+ @config[:enabled] = false
137
+ proxy = create_config_proxy(@config)
138
+
139
+ allow(machine).to receive_message_chain(:config, :proxy).and_return(proxy)
140
+ allow(machine).to receive_message_chain(:config, :public_send).with(:env_proxy).and_return(proxy)
141
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("rm -f /etc/sudoers.d/proxy")
142
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("rm -f /etc/profile.d/proxy.sh")
143
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("rm -f /tmp/vagrant-proxyconf", {:error_check => false})
144
+ allow(machine).to receive_message_chain(:communicate, :upload)
145
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("touch /etc/environment")
146
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("sed -e '/^HTTP_PROXY=/ d\n/^HTTPS_PROXY=/ d\n/^FTP_PROXY=/ d\n/^NO_PROXY=/ d\n/^http_proxy=/ d\n/^https_proxy=/ d\n/^ftp_proxy=/ d\n/^no_proxy=/ d\n' -e '/^$/d' /etc/environment > /etc/environment.new")
147
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("cat /tmp/vagrant-proxyconf >> /etc/environment.new")
148
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("chmod 0644 /etc/environment.new")
149
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("chown root:root /etc/environment.new")
150
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("mv -f /etc/environment.new /etc/environment")
151
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("rm -f /tmp/vagrant-proxyconf").and_return("sib")
152
+ allow(machine).to receive_message_chain(:guest, :capability).with(:env_proxy_conf).and_return("/etc/profile.d/proxy.sh")
153
+
154
+ conf.send(:unconfigure_machine)
155
+ end
156
+
157
+ it 'should remove file /etc/sudoers.d/proxy, /etc/sudoers.d/proxy.sh and remove configuration from /etc/environment and return true' do
158
+ @config = {
159
+ :ftp => 'ftp://foo-proxy.foo-domain.com:8080',
160
+ :http => nil,
161
+ :https => 'https://foo-proxy.foo-domain.com:8080',
162
+ :no_proxy => 'localhost',
163
+ }
164
+
165
+ is_expected.to eq true
166
+ end
167
+ end
168
+ end
169
+ end
170
+
70
171
  end
@@ -8,4 +8,120 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureGitProxy do
8
8
  it { is_expected.to eq 'git_proxy' }
9
9
  end
10
10
 
11
+ describe "#configure_machine" do
12
+
13
+ context "when configuration is enabled" do
14
+ let(:app) { OpenStruct.new }
15
+ let(:env) { OpenStruct.new }
16
+ let(:machine) { double('machine') }
17
+
18
+ context "when supported" do
19
+ subject do
20
+ git_proxy = described_class.new(app, env)
21
+ git_proxy.instance_variable_set(:@machine, machine)
22
+
23
+ config = create_config_proxy(
24
+ :enabled => true,
25
+ :http => 'http://proxy-server-01.example.com:8080',
26
+ :https => 'https://proxy-server-01.example.com:8080',
27
+ :no_proxy => 'localhost',
28
+ )
29
+
30
+ allow(machine).to receive_message_chain(:config, :proxy).and_return(config)
31
+ allow(machine).to receive_message_chain(:config, :public_send).with(:git_proxy).and_return(config)
32
+
33
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:git_proxy_conf).and_return(true)
34
+ allow(machine).to receive_message_chain(:guest, :capability).with(:git_proxy_conf).and_return("/usr/bin/git")
35
+
36
+ if git_proxy.send(:disabled?)
37
+ binding.pry
38
+ else
39
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/git config --system http.proxy http://proxy-server-01.example.com:8080")
40
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/git config --system https.proxy https://proxy-server-01.example.com:8080")
41
+ end
42
+
43
+ git_proxy.send(:configure_machine)
44
+ end
45
+
46
+ it 'configures git proxy and returns true' do
47
+ is_expected.to eq true
48
+ end
49
+ end
50
+
51
+ context "when not supported" do
52
+ subject do
53
+ git_proxy = described_class.new(app, env)
54
+ git_proxy.instance_variable_set(:@machine, machine)
55
+
56
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:git_proxy_conf).and_return(false)
57
+ allow(machine).to receive_message_chain(:guest, :capability).with(:git_proxy_conf).and_return(nil)
58
+
59
+ git_proxy.send(:configure_machine)
60
+ end
61
+
62
+ it "does not configure the git proxy and returns nil" do
63
+ is_expected.to eq nil
64
+ end
65
+ end
66
+
67
+ end
68
+
69
+ context "when configuration is disabled" do
70
+ end
71
+ end
72
+
73
+ describe "#unconfigure_machine" do
74
+ context "when not supported" do
75
+ let(:app) { OpenStruct.new }
76
+ let(:env) { OpenStruct.new }
77
+ let(:machine) { double('machine') }
78
+
79
+ subject do
80
+ git_proxy = described_class.new(app, env)
81
+ git_proxy.instance_variable_set(:@machine, machine)
82
+
83
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:git_proxy_conf).and_return(false)
84
+ allow(machine).to receive_message_chain(:guest, :capability).with(:git_proxy_conf).and_return(nil)
85
+
86
+ git_proxy.send(:unconfigure_machine)
87
+ end
88
+
89
+ it 'returns nil' do
90
+ is_expected.to eq nil
91
+ end
92
+ end
93
+
94
+ context "when supported and configuration is disabled" do
95
+ let(:app) { OpenStruct.new }
96
+ let(:env) { OpenStruct.new }
97
+ let(:machine) { double('machine') }
98
+
99
+ subject do
100
+ git_proxy = described_class.new(app, env)
101
+ git_proxy.instance_variable_set(:@machine, machine)
102
+
103
+ config = create_config_proxy(
104
+ :enabled => false,
105
+ :http => 'http://proxy-server-01.example.com:8080',
106
+ :https => 'https://proxy-server-01.example.com:8080',
107
+ :no_proxy => 'localhost',
108
+ )
109
+
110
+ allow(machine).to receive_message_chain(:config, :proxy).and_return(config)
111
+ allow(machine).to receive_message_chain(:config, :public_send).with(:git_proxy).and_return(config)
112
+
113
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:git_proxy_conf).and_return(true)
114
+ allow(machine).to receive_message_chain(:guest, :capability).with(:git_proxy_conf).and_return("/usr/bin/git")
115
+
116
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/git config --system --unset-all http.proxy", error_check: false)
117
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/git config --system --unset-all https.proxy", error_check: false)
118
+
119
+ git_proxy.send(:unconfigure_machine)
120
+ end
121
+
122
+ it 'configures git proxy and returns true' do
123
+ is_expected.to eq true
124
+ end
125
+ end
126
+ end
11
127
  end
@@ -7,4 +7,71 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureNpmProxy do
7
7
  subject { described_class.new(double, double).config_name }
8
8
  it { is_expected.to eq 'npm_proxy' }
9
9
  end
10
+
11
+ describe '#set_or_delete_proxy' do
12
+ let(:app) { OpenStruct.new }
13
+ let(:env) { OpenStruct.new }
14
+ let(:machine) { double('machine') }
15
+
16
+ context "when not supported" do
17
+ subject do
18
+ npm_proxy = described_class.new(app, env)
19
+ npm_proxy.instance_variable_set(:@machine, machine)
20
+
21
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:npm_proxy_conf).and_return(false)
22
+ allow(machine).to receive_message_chain(:guest, :capability).with(:npm_proxy_conf).and_return(nil)
23
+
24
+ npm_proxy.send(:set_or_delete_proxy, @key, @value)
25
+ end
26
+
27
+ it 'return nil' do
28
+ @key = "proxy"
29
+ @value = "http://proxy-server-01.example.com:8888"
30
+ is_expected.to eq nil
31
+ end
32
+ end
33
+
34
+ context 'when supported' do
35
+ context 'and has value argument' do
36
+ subject do
37
+ npm_proxy = described_class.new(app, env)
38
+ npm_proxy.instance_variable_set(:@machine, machine)
39
+
40
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:npm_proxy_conf).and_return(true)
41
+ allow(machine).to receive_message_chain(:guest, :capability).with(:npm_proxy_conf).and_return("/usr/bin/npm")
42
+
43
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/npm config --global set #{@key} #{@value}")
44
+
45
+ npm_proxy.send(:set_or_delete_proxy, @key, @value)
46
+ end
47
+
48
+ it 'should set npm config item' do
49
+ @key = "proxy"
50
+ @value = "http://proxyserver:8080"
51
+ is_expected.to eq true
52
+ end
53
+ end
54
+
55
+ context 'and does not have value argument' do
56
+ subject do
57
+ npm_proxy = described_class.new(app, env)
58
+ npm_proxy.instance_variable_set(:@machine, machine)
59
+
60
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:npm_proxy_conf).and_return(true)
61
+ allow(machine).to receive_message_chain(:guest, :capability).with(:npm_proxy_conf).and_return("/usr/bin/npm")
62
+
63
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/npm config --global set #{@key} foo")
64
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/npm config --global delete #{@key}")
65
+
66
+ npm_proxy.send(:set_or_delete_proxy, @key, @value)
67
+ end
68
+
69
+ it 'should delete npm config item' do
70
+ @key = "proxy"
71
+ @value = nil
72
+ is_expected.to eq true
73
+ end
74
+ end
75
+ end
76
+ end
10
77
  end
@@ -7,4 +7,120 @@ describe VagrantPlugins::ProxyConf::Action::ConfigurePearProxy do
7
7
  subject { described_class.new(double, double).config_name }
8
8
  it { is_expected.to eq 'pear_proxy' }
9
9
  end
10
+
11
+ describe "#configure_machine" do
12
+ let(:app) { OpenStruct.new }
13
+ let(:env) { OpenStruct.new }
14
+ let(:machine) { double('machine') }
15
+
16
+ context "when not supported" do
17
+ subject do
18
+ pear_proxy = described_class.new(app, env)
19
+ pear_proxy.instance_variable_set(:@machine, machine)
20
+
21
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:pear_proxy_conf).and_return(false)
22
+ allow(machine).to receive_message_chain(:guest, :capability).with(:pear_proxy_conf).and_return(nil)
23
+
24
+ pear_proxy.send(:configure_machine)
25
+ end
26
+
27
+ it 'returns nil' do
28
+ is_expected.to eq nil
29
+ end
30
+ end
31
+
32
+ context "when supported" do
33
+ subject do
34
+ pear_proxy = described_class.new(app, env)
35
+ pear_proxy.instance_variable_set(:@machine, machine)
36
+
37
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:pear_proxy_conf).and_return(true)
38
+ allow(machine).to receive_message_chain(:guest, :capability).with(:pear_proxy_conf).and_return('/usr/bin/pear')
39
+
40
+ allow(machine).to receive_message_chain(:config, :proxy).and_return(@config)
41
+ allow(machine).to receive_message_chain(:config, :public_send).with(:pear_proxy).and_return(@config)
42
+
43
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/pear config-set http_proxy #{@http_proxy} system")
44
+
45
+ pear_proxy.send(:configure_machine)
46
+ end
47
+
48
+ it 'and not disabled, sets http proxy to http://proxy:8080' do
49
+ @config = create_config_proxy(
50
+ :enabled => true,
51
+ :http => 'http://proxy:8080',
52
+ :https => 'https://proxy:8080',
53
+ :no_proxy => 'localhost',
54
+ )
55
+ @http_proxy = "http://proxy:8080"
56
+
57
+ is_expected.to eq true
58
+ end
59
+
60
+ it 'and disabled, disables the proxy' do
61
+ @config = create_config_proxy(
62
+ :enabled => false,
63
+ :http => 'http://proxy:8080',
64
+ :https => 'https://proxy:8080',
65
+ :no_proxy => 'localhost',
66
+ )
67
+ @http_proxy = "''"
68
+
69
+ is_expected.to eq true
70
+ end
71
+ end
72
+ end
73
+
74
+ describe "#unconfigure_machine" do
75
+ let(:app) { OpenStruct.new }
76
+ let(:env) { OpenStruct.new }
77
+ let(:machine) { double('machine') }
78
+
79
+ context "when not supported" do
80
+ subject do
81
+ pear_proxy = described_class.new(app, env)
82
+ pear_proxy.instance_variable_set(:@machine, machine)
83
+
84
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:pear_proxy_conf).and_return(false)
85
+ allow(machine).to receive_message_chain(:guest, :capability).with(:pear_proxy_conf).and_return(nil)
86
+
87
+ pear_proxy.send(:unconfigure_machine)
88
+ end
89
+
90
+ it 'returns nil' do
91
+ is_expected.to eq nil
92
+ end
93
+ end
94
+
95
+ context "when supported" do
96
+ subject do
97
+ pear_proxy = described_class.new(app, env)
98
+ pear_proxy.instance_variable_set(:@machine, machine)
99
+
100
+ allow(machine).to receive_message_chain(:guest, :capability?).with(:pear_proxy_conf).and_return(true)
101
+ allow(machine).to receive_message_chain(:guest, :capability).with(:pear_proxy_conf).and_return('/usr/bin/pear')
102
+
103
+ allow(machine).to receive_message_chain(:config, :proxy).and_return(@config)
104
+ allow(machine).to receive_message_chain(:config, :public_send).with(:pear_proxy).and_return(@config)
105
+
106
+ allow(machine).to receive_message_chain(:communicate, :sudo).with("/usr/bin/pear config-set http_proxy #{@http_proxy} system")
107
+
108
+ pear_proxy.send(:unconfigure_machine)
109
+ end
110
+
111
+ it 'disables http proxy' do
112
+ @config = create_config_proxy(
113
+ :enabled => false,
114
+ :http => nil,
115
+ :https => nil,
116
+ :no_proxy => nil,
117
+ )
118
+ @http_proxy = "''"
119
+
120
+ is_expected.to eq true
121
+ end
122
+ end
123
+ end
124
+
125
+
10
126
  end