From a6760dd8e7743e048cb2f38c474e05889356e8ac Mon Sep 17 00:00:00 2001 From: hendrenj Date: Tue, 19 Jul 2016 11:22:35 -0600 Subject: [PATCH 1/3] fixes #7610 --- plugins/guests/linux/cap/public_key.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/guests/linux/cap/public_key.rb b/plugins/guests/linux/cap/public_key.rb index 92a718281ac..3d57f559601 100644 --- a/plugins/guests/linux/cap/public_key.rb +++ b/plugins/guests/linux/cap/public_key.rb @@ -54,6 +54,7 @@ def self.remove_public_key(machine, contents) if test -f ~/.ssh/authorized_keys; then grep -v -x -f '#{remote_path}' ~/.ssh/authorized_keys > ~/.ssh/authorized_keys.tmp mv ~/.ssh/authorized_keys.tmp ~/.ssh/authorized_keys + chmod 0600 ~/.ssh/authorized_keys fi rm -f '#{remote_path}' From 855643e9a53ab8392f1fee3790b6225962ddf2ec Mon Sep 17 00:00:00 2001 From: hendrenj Date: Tue, 19 Jul 2016 11:45:03 -0600 Subject: [PATCH 2/3] s/bsd/linux/ --- plugins/guests/linux/cap/public_key.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/guests/linux/cap/public_key.rb b/plugins/guests/linux/cap/public_key.rb index 3d57f559601..c75251dd3e1 100644 --- a/plugins/guests/linux/cap/public_key.rb +++ b/plugins/guests/linux/cap/public_key.rb @@ -38,7 +38,7 @@ def self.remove_public_key(machine, contents) contents = contents.strip << "\n" remote_path = "/tmp/vagrant-remove-pubkey-#{Time.now.to_i}" - Tempfile.open("vagrant-bsd-remove-public-key") do |f| + Tempfile.open("vagrant-linux-remove-public-key") do |f| f.binmode f.write(contents) f.fsync From 41063204ca540c44f9555bd11ba9e76c7307bec5 Mon Sep 17 00:00:00 2001 From: hendrenj Date: Tue, 19 Jul 2016 11:45:46 -0600 Subject: [PATCH 3/3] added unit tests for .remove_public_key method in VagrantPlugins::GuestLinux::Cap --- .../linux/cap/remove_public_key_test.rb | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 test/unit/plugins/guests/linux/cap/remove_public_key_test.rb diff --git a/test/unit/plugins/guests/linux/cap/remove_public_key_test.rb b/test/unit/plugins/guests/linux/cap/remove_public_key_test.rb new file mode 100644 index 00000000000..0ea8faec9af --- /dev/null +++ b/test/unit/plugins/guests/linux/cap/remove_public_key_test.rb @@ -0,0 +1,32 @@ +require_relative "../../../../base" + +describe "VagrantPlugins::GuestLinux::Cap::RemovePublicKey" do + let(:caps) do + VagrantPlugins::GuestLinux::Plugin + .components + .guest_capabilities[:linux] + end + + let(:machine) { double("machine") } + let(:comm) { VagrantTests::DummyCommunicator::Communicator.new(machine) } + + before do + allow(machine).to receive(:communicate).and_return(comm) + end + + after do + comm.verify_expectations! + end + + describe ".remove_public_key" do + let(:cap) { caps.get(:remove_public_key) } + + it "removes the public key" do + cap.remove_public_key(machine, "ssh-rsa ...") + expect(comm.received_commands[0]).to match(/grep -v -x -f '\/tmp\/vagrant-(.+)' ~\/\.ssh\/authorized_keys > ~\/.ssh\/authorized_keys\.tmp/) + expect(comm.received_commands[0]).to match(/mv ~\/.ssh\/authorized_keys\.tmp ~\/.ssh\/authorized_keys/) + expect(comm.received_commands[0]).to match(/chmod 0600 ~\/.ssh\/authorized_keys/) + expect(comm.received_commands[0]).to match(/rm -f '\/tmp\/vagrant-(.+)'/) + end + end +end