vagrant-proxyconf 2.0.4 → 2.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +12 -7
- data/CHANGELOG.md +155 -0
- data/Gemfile +1 -18
- data/Jenkinsfile +60 -0
- data/Makefile +33 -0
- data/README.md +22 -0
- data/deps/patches/lib/vagrant/bundler.rb.patch +14 -0
- data/jenkins/helper_functions +206 -0
- data/lib/vagrant-proxyconf/action/base.rb +20 -9
- data/lib/vagrant-proxyconf/action/configure_docker_proxy.rb +21 -23
- data/lib/vagrant-proxyconf/config/apt_proxy.rb +21 -2
- data/lib/vagrant-proxyconf/version.rb +1 -1
- data/spec/unit/support/shared/apt_proxy_config.rb +12 -0
- data/spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb +44 -37
- data/spec/unit/vagrant-proxyconf/action/configure_svn_proxy_spec.rb +1 -0
- data/test/issues/172/README.md +2 -2
- data/test/issues/172/spec/docker_host/redhat_spec.rb +2 -2
- data/test/issues/180/spec/docker_host/redhat_spec.rb +2 -2
- data/test/issues/192/.rspec +2 -0
- data/test/issues/192/Dockerfile +47 -0
- data/test/issues/192/Dockerfile.bionic +40 -0
- data/test/issues/192/README.md +29 -0
- data/test/issues/192/Rakefile +27 -0
- data/test/issues/192/Vagrantfile +64 -0
- data/test/issues/192/entrypoint.sh +50 -0
- data/test/issues/192/spec/default/redhat_spec.rb +15 -0
- data/test/issues/192/spec/docker_host/ubuntu_spec.rb +3 -0
- data/test/issues/192/spec/spec_helper.rb +52 -0
- data/test/issues/192/tinyproxy.conf +333 -0
- data/test/issues/199/.rspec +2 -0
- data/test/issues/199/Dockerfile +47 -0
- data/test/issues/199/README.md +31 -0
- data/test/issues/199/Rakefile +27 -0
- data/test/issues/199/Vagrantfile +74 -0
- data/test/issues/199/entrypoint.sh +50 -0
- data/test/issues/199/spec/apt_host/ubuntu_spec.rb +135 -0
- data/test/issues/199/spec/default/redhat_spec.rb +15 -0
- data/test/issues/199/spec/spec_helper.rb +52 -0
- data/test/issues/199/tinyproxy.conf +333 -0
- data/test/issues/218/.rspec +2 -0
- data/test/issues/218/Dockerfile +47 -0
- data/test/issues/218/README.md +35 -0
- data/test/issues/218/Rakefile +27 -0
- data/test/issues/218/Vagrantfile +62 -0
- data/test/issues/218/entrypoint.sh +50 -0
- data/test/issues/218/force-all-outbound-traffic-through-proxy.iptables +18 -0
- data/test/issues/218/spec/default/redhat_spec.rb +16 -0
- data/test/issues/218/spec/docker_host/redhat_spec.rb +171 -0
- data/test/issues/218/spec/spec_helper.rb +43 -0
- data/test/issues/218/tinyproxy.conf +333 -0
- metadata +71 -4
@@ -87,13 +87,17 @@ module VagrantPlugins
|
|
87
87
|
local_tmp = tempfile(config)
|
88
88
|
|
89
89
|
logger.debug "Configuration (#{path}):\n#{config}"
|
90
|
+
|
90
91
|
@machine.communicate.tap do |comm|
|
91
|
-
comm.sudo("rm -f #{tmp}", error_check: false)
|
92
92
|
comm.upload(local_tmp.path, tmp)
|
93
|
-
comm.
|
94
|
-
|
95
|
-
|
96
|
-
|
93
|
+
if comm.test("command -v sudo")
|
94
|
+
comm.sudo("chmod #{opts[:mode] || '0644'} #{tmp}")
|
95
|
+
comm.sudo("chown #{opts[:owner] || 'root:root'} #{tmp}")
|
96
|
+
comm.sudo("mkdir -p #{File.dirname(path)}")
|
97
|
+
comm.sudo("mv -f #{tmp} #{path}")
|
98
|
+
else
|
99
|
+
raise Vagrant::Errors::CommandUnavailable.new(file: "sudo")
|
100
|
+
end
|
97
101
|
end
|
98
102
|
end
|
99
103
|
|
@@ -104,11 +108,18 @@ module VagrantPlugins
|
|
104
108
|
|
105
109
|
# @return [Tempfile] a temporary file with the specified content
|
106
110
|
def tempfile(content)
|
107
|
-
Tempfile.new("vagrant")
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
+
tempfile = Tempfile.new("vagrant-proxyconf")
|
112
|
+
|
113
|
+
begin
|
114
|
+
tempfile.tap do |tmp|
|
115
|
+
tmp.binmode
|
116
|
+
tmp.write(content)
|
117
|
+
end
|
118
|
+
ensure
|
119
|
+
tempfile.close
|
111
120
|
end
|
121
|
+
|
122
|
+
tempfile
|
112
123
|
end
|
113
124
|
|
114
125
|
def cap_name
|
@@ -39,28 +39,28 @@ module VagrantPlugins
|
|
39
39
|
true
|
40
40
|
end
|
41
41
|
|
42
|
-
def
|
43
|
-
return @
|
42
|
+
def docker_client_config
|
43
|
+
return @docker_client_config if @docker_client_config
|
44
44
|
return if !supports_config_json?
|
45
45
|
|
46
|
-
@
|
46
|
+
@docker_client_config = tempfile(Hash.new)
|
47
47
|
|
48
48
|
@machine.communicate.tap do |comm|
|
49
|
-
if comm.test("[ -f /
|
50
|
-
logger.info('Downloading file /
|
51
|
-
comm.sudo("chmod 0644 /
|
52
|
-
comm.download("/
|
53
|
-
logger.info("Downloaded /
|
49
|
+
if comm.test("[ -f /home/vagrant/.docker/config.json ]")
|
50
|
+
logger.info('Downloading file /home/vagrant/.docker/config.json')
|
51
|
+
comm.sudo("chmod 0644 /home/vagrant/.docker/config.json")
|
52
|
+
comm.download("/home/vagrant/.docker/config.json", @docker_client_config.path)
|
53
|
+
logger.info("Downloaded /home/vagrant/.docker/config.json to #{@docker_client_config.path}")
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
@
|
57
|
+
@docker_client_config
|
58
58
|
end
|
59
59
|
|
60
60
|
def update_docker_client_config
|
61
|
-
return if !supports_config_json? || !
|
61
|
+
return if !supports_config_json? || !docker_client_config
|
62
62
|
|
63
|
-
content = File.read(@
|
63
|
+
content = File.read(@docker_client_config)
|
64
64
|
data = JSON.load(content)
|
65
65
|
|
66
66
|
if disabled?
|
@@ -92,20 +92,17 @@ module VagrantPlugins
|
|
92
92
|
|
93
93
|
config_json = JSON.pretty_generate(data)
|
94
94
|
|
95
|
-
@
|
95
|
+
@docker_client_config = tempfile(config_json)
|
96
96
|
|
97
97
|
@machine.communicate.tap do |comm|
|
98
|
-
comm.upload(@
|
99
|
-
comm.sudo("mkdir -p /
|
100
|
-
comm.sudo("
|
101
|
-
comm.sudo("
|
102
|
-
comm.sudo("
|
98
|
+
comm.upload(@docker_client_config.path, "/tmp/vagrant-proxyconf-docker-config.json")
|
99
|
+
comm.sudo("mkdir -p /home/vagrant/.docker")
|
100
|
+
comm.sudo("mv /tmp/vagrant-proxyconf-docker-config.json /home/vagrant/.docker/config.json")
|
101
|
+
comm.sudo("chown -R vagrant:docker /home/vagrant/.docker")
|
102
|
+
comm.sudo("chmod 0644 /home/vagrant/.docker/config.json")
|
103
103
|
comm.sudo("rm -f /tmp/vagrant-proxyconf-docker-config.json")
|
104
104
|
|
105
105
|
comm.sudo("sed -i.bak -e '/^DOCKER_CONFIG/d' /etc/environment")
|
106
|
-
if !disabled?
|
107
|
-
comm.sudo("echo DOCKER_CONFIG=/etc/docker >> /etc/environment")
|
108
|
-
end
|
109
106
|
end
|
110
107
|
|
111
108
|
config_json
|
@@ -135,12 +132,12 @@ module VagrantPlugins
|
|
135
132
|
end
|
136
133
|
|
137
134
|
systemd_config = docker_systemd_config
|
138
|
-
@docker_systemd_config = tempfile(systemd_config)
|
135
|
+
@docker_systemd_config = tempfile(systemd_config)
|
139
136
|
|
140
137
|
@machine.communicate.tap do |comm|
|
141
138
|
|
142
139
|
comm.sudo("mkdir -p /etc/systemd/system/docker.service.d")
|
143
|
-
comm.upload(@docker_systemd_config, "/tmp/vagrant-proxyconf-docker-systemd-config")
|
140
|
+
comm.upload(@docker_systemd_config.path, "/tmp/vagrant-proxyconf-docker-systemd-config")
|
144
141
|
|
145
142
|
if comm.test("diff -Naur /etc/systemd/system/docker.service.d/http-proxy.conf /tmp/vagrant-proxyconf-docker-systemd-config")
|
146
143
|
# system config file is the same as the current config
|
@@ -154,6 +151,7 @@ module VagrantPlugins
|
|
154
151
|
end
|
155
152
|
|
156
153
|
comm.sudo('chown -R 0:0 /etc/systemd/system/docker.service.d/')
|
154
|
+
comm.sudo('touch /etc/systemd/system/docker.service.d/http-proxy.conf')
|
157
155
|
comm.sudo('chmod 0644 /etc/systemd/system/docker.service.d/http-proxy.conf')
|
158
156
|
|
159
157
|
if changed
|
@@ -235,7 +233,7 @@ module VagrantPlugins
|
|
235
233
|
|
236
234
|
# update config and restart docker when config changed
|
237
235
|
comm.sudo("chmod 0644 #{path}.new")
|
238
|
-
comm.sudo("chown root:
|
236
|
+
comm.sudo("chown root:docker #{path}.new")
|
239
237
|
comm.sudo("mv -f #{path}.new #{path}")
|
240
238
|
comm.sudo(service_restart_command)
|
241
239
|
end
|
@@ -20,6 +20,12 @@ module VagrantPlugins
|
|
20
20
|
# @return [String] the FTP proxy
|
21
21
|
key :ftp, env_var: 'VAGRANT_APT_FTP_PROXY'
|
22
22
|
|
23
|
+
# @return [String] whether APT should verify peer certificate
|
24
|
+
key :verify_peer, env_var: 'VAGRANT_APT_VERIFY_PEER'
|
25
|
+
|
26
|
+
# @return [String] whether APT should verify that certificate name matches server name
|
27
|
+
key :verify_host, env_var: 'VAGRANT_APT_VERIFY_HOST'
|
28
|
+
|
23
29
|
def finalize!
|
24
30
|
super
|
25
31
|
|
@@ -33,7 +39,15 @@ module VagrantPlugins
|
|
33
39
|
|
34
40
|
# (see KeyMixin#config_for)
|
35
41
|
def config_for(key, value)
|
36
|
-
|
42
|
+
if value
|
43
|
+
if key.name == :verify_host
|
44
|
+
%Q{Acquire::https::Verify-Host #{value.inspect};\n}
|
45
|
+
elsif key.name == :verify_peer
|
46
|
+
%Q{Acquire::https::Verify-Peer #{value.inspect};\n}
|
47
|
+
else
|
48
|
+
%Q{Acquire::#{key.name}::Proxy #{value.inspect};\n}
|
49
|
+
end
|
50
|
+
end
|
37
51
|
end
|
38
52
|
|
39
53
|
def finalize_uri(key, value)
|
@@ -55,7 +69,8 @@ module VagrantPlugins
|
|
55
69
|
end
|
56
70
|
|
57
71
|
def to_s
|
58
|
-
direct || "#{prefix}#{value}#{suffix}"
|
72
|
+
# direct || "#{prefix}#{value}#{suffix}"
|
73
|
+
direct || verify || "#{prefix}#{value}#{suffix}"
|
59
74
|
end
|
60
75
|
|
61
76
|
private
|
@@ -64,6 +79,10 @@ module VagrantPlugins
|
|
64
79
|
'DIRECT' if value.upcase == 'DIRECT'
|
65
80
|
end
|
66
81
|
|
82
|
+
def verify
|
83
|
+
value if ["true", "false"].to_set.include? value
|
84
|
+
end
|
85
|
+
|
67
86
|
# Hash of deprecation warning sentinels
|
68
87
|
@@warned = {}
|
69
88
|
|
@@ -8,6 +8,10 @@ end
|
|
8
8
|
def conf_line(proto, name, port = 3142)
|
9
9
|
if name == :direct
|
10
10
|
%Q{Acquire::#{proto}::Proxy "DIRECT";\n}
|
11
|
+
elsif proto == :verify_peer
|
12
|
+
%Q{Acquire::https::Verify-Peer "#{name}";\n}
|
13
|
+
elsif proto == :verify_host
|
14
|
+
%Q{Acquire::https::Verify-Host "#{name}";\n}
|
11
15
|
else
|
12
16
|
port = ":#{port}" if port
|
13
17
|
%Q{Acquire::#{proto}::Proxy "#{proto}://#{name}#{port}";\n}
|
@@ -65,6 +69,14 @@ shared_examples "apt proxy config" do |proto|
|
|
65
69
|
end
|
66
70
|
end
|
67
71
|
|
72
|
+
[:verify_peer, :verify_host].each do |verify|
|
73
|
+
context "with #{verify.inspect}" do
|
74
|
+
subject { config_with(verify => "false") }
|
75
|
+
its(:enabled?) { should be_truthy }
|
76
|
+
its(:to_s) { should eq conf_line(verify, "false") }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
68
80
|
[false, ""].each do |unset|
|
69
81
|
context "with #{unset.inspect}" do
|
70
82
|
subject { config_with(proto => unset) }
|
@@ -10,7 +10,7 @@ def mock_write_docker_config(machine)
|
|
10
10
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("cat /tmp/vagrant-proxyconf >> /etc/default/docker.new")
|
11
11
|
allow(machine).to receive_message_chain(:communicate, :test).with("diff /etc/default/docker.new /etc/default/docker")
|
12
12
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("chmod 0644 /etc/default/docker.new")
|
13
|
-
allow(machine).to receive_message_chain(:communicate, :sudo).with("chown root:
|
13
|
+
allow(machine).to receive_message_chain(:communicate, :sudo).with("chown root:docker /etc/default/docker.new")
|
14
14
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("mv -f /etc/default/docker.new /etc/default/docker")
|
15
15
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("kill -HUP `pgrep -f 'docker'` || systemctl restart docker || service docker restart || /etc/init.d/docker restart")
|
16
16
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("rm -f /tmp/vagrant-proxyconf /etc/default/docker.new")
|
@@ -18,13 +18,13 @@ end
|
|
18
18
|
|
19
19
|
def mock_update_docker_client_config(machine)
|
20
20
|
allow(machine).to receive_message_chain(:communicate, :upload)
|
21
|
-
allow(machine).to receive_message_chain(:communicate, :sudo).with("
|
22
|
-
allow(machine).to receive_message_chain(:communicate, :sudo).with("
|
21
|
+
allow(machine).to receive_message_chain(:communicate, :sudo).with("mkdir -p /home/vagrant/.docker")
|
22
|
+
allow(machine).to receive_message_chain(:communicate, :sudo).with("mv /tmp/vagrant-proxyconf-docker-config.json /home/vagrant/.docker/config.json")
|
23
|
+
allow(machine).to receive_message_chain(:communicate, :sudo).with("chown -R vagrant:docker /home/vagrant/.docker")
|
24
|
+
allow(machine).to receive_message_chain(:communicate, :sudo).with("chmod 0644 /home/vagrant/.docker/config.json")
|
23
25
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("rm -f /tmp/vagrant-proxyconf-docker-config.json")
|
24
26
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("sed -i.bak -e '/^DOCKER_CONFIG/d' /etc/environment")
|
25
27
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("echo DOCKER_CONFIG=/etc/docker >> /etc/environment")
|
26
|
-
allow(machine).to receive_message_chain(:communicate, :sudo).with("mkdir -p /etc/docker")
|
27
|
-
allow(machine).to receive_message_chain(:communicate, :sudo).with("chown root:root /etc/docker")
|
28
28
|
end
|
29
29
|
|
30
30
|
def mock_update_docker_systemd_config(machine)
|
@@ -71,9 +71,9 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
71
71
|
docker_proxy = described_class.new(app, env)
|
72
72
|
docker_proxy.instance_variable_set(:@machine, machine)
|
73
73
|
|
74
|
-
# #
|
75
|
-
fixture = docker_proxy.send(:tempfile, load_fixture(fixture))
|
76
|
-
docker_proxy.instance_variable_set(:@
|
74
|
+
# #docker_client_config mock
|
75
|
+
fixture = fixture = docker_proxy.send(:tempfile, load_fixture(fixture))
|
76
|
+
docker_proxy.instance_variable_set(:@docker_client_config, fixture.path)
|
77
77
|
|
78
78
|
# #supported? mock
|
79
79
|
allow(machine).to receive_message_chain(:guest, :capability?).with(:docker_proxy_conf).and_return(true)
|
@@ -100,7 +100,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
100
100
|
@docker_proxy = docker_proxy
|
101
101
|
end
|
102
102
|
|
103
|
-
context 'and when /
|
103
|
+
context 'and when /home/vagrant/.docker/config.json has proxy configuration' do
|
104
104
|
before :each do
|
105
105
|
fixture = fixture_file("docker_client_config_json_enabled_proxy")
|
106
106
|
configure_docker_proxy(fixture)
|
@@ -109,7 +109,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
109
109
|
)
|
110
110
|
end
|
111
111
|
|
112
|
-
it 'update /
|
112
|
+
it 'update /home/vagrant/.docker/config.json' do
|
113
113
|
expect(@docker_proxy.send(:configure_machine)).to eq true
|
114
114
|
end
|
115
115
|
end
|
@@ -123,9 +123,9 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
123
123
|
docker_proxy = described_class.new(app, env)
|
124
124
|
docker_proxy.instance_variable_set(:@machine, machine)
|
125
125
|
|
126
|
-
# #
|
127
|
-
fixture = docker_proxy.send(:tempfile, load_fixture(fixture))
|
128
|
-
docker_proxy.instance_variable_set(:@
|
126
|
+
# #docker_client_config mock
|
127
|
+
fixture = docker_proxy.send(:tempfile, load_fixture(fixture))
|
128
|
+
docker_proxy.instance_variable_set(:@docker_client_config, fixture.path)
|
129
129
|
|
130
130
|
# #supported? mock
|
131
131
|
allow(machine).to receive_message_chain(:guest, :capability?).with(:docker_proxy_conf).and_return(true)
|
@@ -163,6 +163,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
163
163
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("mkdir -p /etc/systemd/system/docker.service.d")
|
164
164
|
allow(machine).to receive_message_chain(:communicate, :upload).with(@docker_proxy.instance_variable_get(:@docker_systemd_config), "/tmp")
|
165
165
|
allow(machine).to receive_message_chain(:communicate, :sudo).with('chown -R 0:0 /etc/systemd/system/docker.service.d/')
|
166
|
+
allow(machine).to receive_message_chain(:communicate, :sudo).with('touch /etc/systemd/system/docker.service.d/http-proxy.conf')
|
166
167
|
allow(machine).to receive_message_chain(:communicate, :sudo).with('chmod 0644 /etc/systemd/system/docker.service.d/http-proxy.conf')
|
167
168
|
allow(machine).to receive_message_chain(:communicate, :test).with('command -v systemctl').and_return(false)
|
168
169
|
allow(machine).to receive_message_chain(:communicate, :test).with('diff -Naur /etc/systemd/system/docker.service.d/http-proxy.conf /tmp/vagrant-proxyconf-docker-systemd-config').and_return(false)
|
@@ -181,7 +182,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
181
182
|
end
|
182
183
|
end
|
183
184
|
|
184
|
-
describe "#
|
185
|
+
describe "#docker_client_config" do
|
185
186
|
let(:machine) { double('machine') }
|
186
187
|
|
187
188
|
context "when not supported" do
|
@@ -195,46 +196,46 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
195
196
|
allow(machine).to receive_message_chain(:guest, :capability?).with(:docker_proxy_conf).and_return(true)
|
196
197
|
allow(machine).to receive_message_chain(:guest, :capability).with(:docker_proxy_conf).and_return('/etc/default/docker')
|
197
198
|
|
198
|
-
docker_proxy.send(:
|
199
|
+
docker_proxy.send(:docker_client_config)
|
199
200
|
end
|
200
201
|
|
201
202
|
it { is_expected.to eq nil }
|
202
203
|
end
|
203
204
|
|
204
205
|
context "when supported" do
|
205
|
-
context "when /
|
206
|
+
context "when /home/vagrant/.docker/config.json exists" do
|
206
207
|
subject do
|
207
208
|
docker_proxy = described_class.new(nil, nil)
|
208
209
|
docker_proxy.instance_variable_set(:@machine, machine)
|
209
|
-
docker_proxy.instance_variable_set(:@
|
210
|
+
docker_proxy.instance_variable_set(:@docker_client_config, nil)
|
210
211
|
|
211
212
|
allow(docker_proxy).to receive(:supports_config_json?).and_return(true)
|
212
213
|
|
213
|
-
allow(machine).to receive_message_chain(:communicate, :test).with("[ -f /
|
214
|
-
allow(machine).to receive_message_chain(:communicate, :sudo).with("chmod 0644 /
|
214
|
+
allow(machine).to receive_message_chain(:communicate, :test).with("[ -f /home/vagrant/.docker/config.json ]").and_return(true)
|
215
|
+
allow(machine).to receive_message_chain(:communicate, :sudo).with("chmod 0644 /home/vagrant/.docker/config.json")
|
215
216
|
allow(machine).to receive_message_chain(:communicate, :download)
|
216
217
|
|
217
|
-
docker_proxy.send(:
|
218
|
+
docker_proxy.send(:docker_client_config)
|
218
219
|
end
|
219
220
|
|
220
|
-
it { expect(File.exists?(subject)).to eq true }
|
221
|
+
it { expect(File.exists?(subject.path)).to eq true }
|
221
222
|
end
|
222
223
|
|
223
|
-
context "when /
|
224
|
+
context "when /home/vagrant/.docker/config.json does not exist" do
|
224
225
|
subject do
|
225
226
|
docker_proxy = described_class.new(nil, nil)
|
226
227
|
docker_proxy.instance_variable_set(:@machine, machine)
|
227
|
-
docker_proxy.instance_variable_set(:@
|
228
|
+
docker_proxy.instance_variable_set(:@docker_client_config, nil)
|
228
229
|
|
229
230
|
allow(docker_proxy).to receive(:supports_config_json?).and_return(true)
|
230
231
|
|
231
|
-
allow(machine).to receive_message_chain(:communicate, :test).with("[ -f /
|
232
|
+
allow(machine).to receive_message_chain(:communicate, :test).with("[ -f /home/vagrant/.docker/config.json ]").and_return(false)
|
232
233
|
|
233
|
-
docker_proxy.send(:
|
234
|
+
docker_proxy.send(:docker_client_config)
|
234
235
|
end
|
235
236
|
|
236
237
|
it do
|
237
|
-
expect(File.exists?(subject)).to eq true
|
238
|
+
expect(File.exists?(subject.path)).to eq true
|
238
239
|
expect(File.read(subject)).to eq "{}"
|
239
240
|
end
|
240
241
|
end
|
@@ -263,14 +264,14 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
263
264
|
|
264
265
|
end
|
265
266
|
|
266
|
-
context "when #
|
267
|
+
context "when #docker_client_config returns nil" do
|
267
268
|
it 'return nil' do
|
268
269
|
docker_proxy = described_class.new(app, env)
|
269
270
|
docker_proxy.instance_variable_set(:@machine, machine)
|
270
271
|
|
271
272
|
# mock a result that looks like no proxy is configured for the config.json
|
272
273
|
allow(docker_proxy).to receive(:supports_config_json?).and_return(true)
|
273
|
-
allow(docker_proxy).to receive(:
|
274
|
+
allow(docker_proxy).to receive(:docker_client_config).and_return(nil)
|
274
275
|
|
275
276
|
# #supported? mock
|
276
277
|
allow(machine).to receive_message_chain(:guest, :capability?).with(:docker_proxy_conf).and_return(true)
|
@@ -280,7 +281,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
280
281
|
end
|
281
282
|
end
|
282
283
|
|
283
|
-
context "when /
|
284
|
+
context "when /home/vagrant/.docker/config.json is supported" do
|
284
285
|
|
285
286
|
context "when configuration is disabled" do
|
286
287
|
it do
|
@@ -290,9 +291,11 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
290
291
|
# mock a result that looks like proxy is configured for the config.json
|
291
292
|
fixture = fixture_file("docker_client_config_json_enabled_proxy")
|
292
293
|
fixture_content = load_fixture(fixture)
|
293
|
-
config_path = docker_proxy.send(:tempfile, fixture_content).path
|
294
294
|
|
295
|
-
docker_proxy.
|
295
|
+
temp_filename = config_path = docker_proxy.send(:tempfile, fixture_content)
|
296
|
+
config_path = temp_filename.path
|
297
|
+
|
298
|
+
docker_proxy.instance_variable_set(:@docker_client_config, config_path)
|
296
299
|
|
297
300
|
allow(docker_proxy).to receive(:supports_config_json?).and_return(true)
|
298
301
|
allow(docker_proxy).to receive(:disabled?).and_return(true)
|
@@ -329,9 +332,10 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
329
332
|
# mock a result that looks like no proxy is configured for the config.json
|
330
333
|
fixture = fixture_file("docker_client_config_json_no_proxy")
|
331
334
|
fixture_content = load_fixture(fixture)
|
332
|
-
config_path = docker_proxy.send(:tempfile, fixture_content)
|
335
|
+
temp_filename = config_path = docker_proxy.send(:tempfile, fixture_content)
|
336
|
+
config_path = temp_filename.path
|
333
337
|
|
334
|
-
docker_proxy.instance_variable_set(:@
|
338
|
+
docker_proxy.instance_variable_set(:@docker_client_config, config_path)
|
335
339
|
|
336
340
|
allow(docker_proxy).to receive(:supports_config_json?).and_return(true)
|
337
341
|
allow(docker_proxy).to receive(:disabled?).and_return(false)
|
@@ -389,8 +393,10 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
389
393
|
docker_proxy.instance_variable_set(:@version, [18, 9, 0])
|
390
394
|
|
391
395
|
fixture = fixture_file("docker_client_config_json_enabled_proxy")
|
392
|
-
config_path = docker_proxy.send(:tempfile, load_fixture(fixture))
|
393
|
-
|
396
|
+
temp_filename = config_path = docker_proxy.send(:tempfile, load_fixture(fixture))
|
397
|
+
config_path = temp_filename.path
|
398
|
+
|
399
|
+
docker_proxy.instance_variable_set(:@docker_client_config, config_path)
|
394
400
|
|
395
401
|
# to isolate this test, we turn of support for systemd
|
396
402
|
allow(docker_proxy).to receive(:supports_systemd?).and_return(false)
|
@@ -438,8 +444,9 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
|
|
438
444
|
allow(docker_proxy).to receive(:supports_systemd?).and_return(false)
|
439
445
|
|
440
446
|
fixture = fixture_file("docker_client_config_json_enabled_proxy")
|
441
|
-
|
442
|
-
|
447
|
+
temp_filename = docker_proxy.send(:tempfile, load_fixture(fixture))
|
448
|
+
config_path = temp_filename.path
|
449
|
+
docker_proxy.instance_variable_set(:@docker_client_config, config_path)
|
443
450
|
|
444
451
|
allow(machine).to receive_message_chain(:guest, :capability?).with(:docker_proxy_conf).and_return(true)
|
445
452
|
allow(machine).to receive_message_chain(:guest, :capability).with(:docker_proxy_conf).and_return('/etc/default/docker')
|
@@ -4,6 +4,7 @@ require 'vagrant-proxyconf/action/configure_svn_proxy'
|
|
4
4
|
def mock_write_config(machine)
|
5
5
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("rm -f /tmp/vagrant-proxyconf", error_check: false)
|
6
6
|
allow(machine).to receive_message_chain(:communicate, :upload)
|
7
|
+
allow(machine).to receive_message_chain(:communicate, :test).with('command -v sudo').and_return(true)
|
7
8
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("chmod 0644 /tmp/vagrant-proxyconf")
|
8
9
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("chown root:root /tmp/vagrant-proxyconf")
|
9
10
|
allow(machine).to receive_message_chain(:communicate, :sudo).with("mkdir -p /etc/subversion")
|