Properly expand config.ssh.private_key_path

This commit is contained in:
Mitchell Hashimoto 2013-02-04 21:13:29 -08:00
parent 202cfebc24
commit 434cc79a83
2 changed files with 33 additions and 8 deletions

View File

@ -274,8 +274,16 @@ module Vagrant
# Set the private key path. If a specific private key is given in # Set the private key path. If a specific private key is given in
# the Vagrantfile we set that. Otherwise, we use the default (insecure) # the Vagrantfile we set that. Otherwise, we use the default (insecure)
# private key, but only if the provider didn't give us one. # private key, but only if the provider didn't give us one.
info[:private_key_path] = @config.ssh.private_key_path if @config.ssh.private_key_path if @config.ssh.private_key_path
info[:private_key_path] = @env.default_private_key_path if !info[:private_key_path] info[:private_key_path] = @config.ssh.private_key_path
end
if !info[:private_key_path]
info[:private_key_path] = @env.default_private_key_path
end
# Expand the private key path relative to the root path
info[:private_key_path] = File.expand_path(info[:private_key_path], @env.root_path)
# Return the final compiled SSH info data # Return the final compiled SSH info data
info info

View File

@ -363,23 +363,40 @@ describe Vagrant::Machine do
end end
it "should return the provider private key if given" do it "should return the provider private key if given" do
provider_ssh_info[:private_key_path] = "foo" provider_ssh_info[:private_key_path] = "/foo"
instance.ssh_info[:private_key_path].should == "foo" instance.ssh_info[:private_key_path].should == "/foo"
end end
it "should return the configured SSH key path if set" do it "should return the configured SSH key path if set" do
provider_ssh_info[:private_key_path] = "foo" provider_ssh_info[:private_key_path] = "/foo"
instance.config.ssh.private_key_path = "bar" instance.config.ssh.private_key_path = "/bar"
instance.ssh_info[:private_key_path].should == "bar" instance.ssh_info[:private_key_path].should == "/bar"
end
context "expanding path relative to the root path" do
it "should with the provider key path" do
provider_ssh_info[:private_key_path] = "~/foo"
instance.ssh_info[:private_key_path].should ==
File.expand_path("~/foo", env.root_path)
end
it "should with the config private key path" do
provider_ssh_info[:private_key_path] = "~/foo"
instance.config.ssh.private_key_path = "~/bar"
instance.ssh_info[:private_key_path].should ==
File.expand_path("~/bar", env.root_path)
end
end end
it "should return the default private key path if provider and config doesn't have one" do it "should return the default private key path if provider and config doesn't have one" do
provider_ssh_info[:private_key_path] = nil provider_ssh_info[:private_key_path] = nil
instance.config.ssh.private_key_path = nil instance.config.ssh.private_key_path = nil
instance.ssh_info[:private_key_path].should == instance.env.default_private_key_path instance.ssh_info[:private_key_path].should == instance.env.default_private_key_path.to_s
end end
end end
end end