2018-07-27 23:28:48 +00:00
|
|
|
require File.expand_path("../../../../base", __FILE__)
|
|
|
|
|
|
|
|
require Vagrant.source_root.join("plugins/kernel_v2/config/ssh_connect")
|
|
|
|
|
|
|
|
describe VagrantPlugins::Kernel_V2::SSHConnectConfig do
|
2018-12-11 15:51:44 +00:00
|
|
|
include_context "unit"
|
|
|
|
|
|
|
|
let(:iso_env) do
|
|
|
|
# We have to create a Vagrantfile so there is a root path
|
|
|
|
env = isolated_environment
|
|
|
|
env.vagrantfile("")
|
|
|
|
env.create_vagrant_env
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:machine) { iso_env.machine(iso_env.machine_names[0], :dummy) }
|
|
|
|
|
2018-07-27 23:28:48 +00:00
|
|
|
subject { described_class.new }
|
|
|
|
|
|
|
|
describe "#verify_host_key" do
|
|
|
|
it "defaults to :never" do
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.verify_host_key).to eq(:never)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should modify true value to :accepts_new_or_local_tunnel" do
|
|
|
|
subject.verify_host_key = true
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.verify_host_key).to eq(:accepts_new_or_local_tunnel)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should modify :very value to :accept_new" do
|
|
|
|
subject.verify_host_key = :very
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.verify_host_key).to eq(:accept_new)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should modify :secure to :always" do
|
|
|
|
subject.verify_host_key = :secure
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.verify_host_key).to eq(:always)
|
|
|
|
end
|
|
|
|
end
|
2018-12-11 15:51:44 +00:00
|
|
|
|
|
|
|
describe "#config" do
|
|
|
|
let(:config_file) { "/path/to/config" }
|
|
|
|
|
|
|
|
before do
|
|
|
|
# NOTE: The machine instance must be initialized before
|
|
|
|
# any mocks on File are registered. Otherwise it
|
|
|
|
# will cause a failure attempting to create the
|
|
|
|
# instance
|
|
|
|
machine
|
|
|
|
allow(File).to receive(:file?).
|
|
|
|
with(/#{Regexp.escape(config_file)}/).
|
|
|
|
and_return(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "defaults to nil" do
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.config).to be_nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should return the set path" do
|
|
|
|
subject.config = config_file
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.config).to eq(config_file)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should validate when path exists" do
|
|
|
|
subject.config = config_file
|
|
|
|
subject.finalize!
|
|
|
|
machine
|
|
|
|
expect(File).to receive(:file?).
|
|
|
|
with(/#{Regexp.escape(config_file)}/).
|
|
|
|
and_return(true)
|
|
|
|
expect(subject.validate(machine)).to be_empty
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should not validate when path does not exist" do
|
|
|
|
subject.config = config_file
|
|
|
|
subject.finalize!
|
|
|
|
expect(File).to receive(:file?).
|
|
|
|
with(/#{Regexp.escape(config_file)}/).
|
|
|
|
and_return(false)
|
|
|
|
expect(subject.validate(machine)).not_to be_empty
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#remote_user" do
|
|
|
|
let(:username) { double("username") }
|
|
|
|
let(:remote_user) { double("remote_user") }
|
|
|
|
|
|
|
|
it "should default to username value" do
|
|
|
|
subject.username = username
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.remote_user).to eq(subject.username)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should be set to provided value" do
|
|
|
|
subject.username = username
|
|
|
|
subject.remote_user = remote_user
|
|
|
|
subject.finalize!
|
|
|
|
expect(subject.remote_user).to eq(remote_user)
|
|
|
|
end
|
|
|
|
end
|
2018-07-27 23:28:48 +00:00
|
|
|
end
|