Merge pull request #8410 from chrisroberts/fix/smb-mount

Fix linux guest mount smb capability
This commit is contained in:
Chris Roberts 2017-03-27 09:07:22 -07:00 committed by GitHub
commit 4af1fbccfb
2 changed files with 72 additions and 1 deletions

View File

@ -15,7 +15,7 @@ module VagrantPlugins
mount_device = "//#{options[:smb_host]}/#{name}"
mount_options = options.fetch(:mount_options, [])
detected_ids = detect_owner_group_ids(machine, guest_path, mount_options, options)
detected_ids = detect_owner_group_ids(machine, guestpath, mount_options, options)
mount_uid = detected_ids[:uid]
mount_gid = detected_ids[:gid]

View File

@ -0,0 +1,71 @@
require_relative "../../../../base"
describe "VagrantPlugins::GuestLinux::Cap::MountSMBSharedFolder" do
let(:caps) do
VagrantPlugins::GuestLinux::Plugin
.components
.guest_capabilities[:linux]
end
let(:machine) { double("machine") }
let(:guest) { double("guest") }
let(:comm) { VagrantTests::DummyCommunicator::Communicator.new(machine) }
let(:mount_owner){ "vagrant" }
let(:mount_group){ "vagrant" }
let(:mount_uid){ "1000" }
let(:mount_gid){ "1000" }
let(:mount_name){ "vagrant" }
let(:mount_guest_path){ "/vagrant" }
let(:folder_options) do
{
owner: mount_owner,
group: mount_group,
smb_host: "localhost",
smb_username: "user",
smb_password: "pass"
}
end
let(:cap){ caps.get(:mount_smb_shared_folder) }
before do
allow(machine).to receive(:communicate).and_return(comm)
end
after do
comm.verify_expectations!
end
describe ".mount_smb_shared_folder" do
before do
allow(comm).to receive(:sudo).with(any_args).and_return(0)
allow(comm).to receive(:execute).with(any_args)
allow(machine).to receive(:guest).and_return(guest)
allow(guest).to receive(:capability).with(:shell_expand_guest_path, mount_guest_path).and_return(mount_guest_path)
end
it "generates the expected default mount command" do
expect(comm).to receive(:sudo).with(/mount -t cifs/, anything).and_return(0)
cap.mount_smb_shared_folder(machine, mount_name, mount_guest_path, folder_options)
end
it "creates directory on guest machine" do
expect(comm).to receive(:sudo).with("mkdir -p #{mount_guest_path}")
cap.mount_smb_shared_folder(machine, mount_name, mount_guest_path, folder_options)
end
it "writes username into guest credentials file" do
expect(comm).to receive(:sudo).with(/smb_creds.*username=#{folder_options[:smb_username]}/m)
cap.mount_smb_shared_folder(machine, mount_name, mount_guest_path, folder_options)
end
it "writes password into guest credentials file" do
expect(comm).to receive(:sudo).with(/smb_creds.*password=#{folder_options[:smb_password]}/m)
cap.mount_smb_shared_folder(machine, mount_name, mount_guest_path, folder_options)
end
it "sends upstart notification after mount" do
expect(comm).to receive(:sudo).with(/emit/)
cap.mount_smb_shared_folder(machine, mount_name, mount_guest_path, folder_options)
end
end
end