Commit a1ec2ad0 authored by Patrick Bajao's avatar Patrick Bajao

Auto create authorized_keys file if doesn't exist

Utilize the auto repair functionality of system checks.
parent b047359d
......@@ -22,6 +22,15 @@ module Gitlab
false
end
# Creates the authorized_keys file if it doesn't exist
#
# @return [Boolean]
def create
open_authorized_keys_file(File::CREAT) { true }
rescue Errno::EACCES
false
end
# Add id and its key to the authorized_keys file
#
# @param [String] id identifier of key prefixed by `key-`
......
......@@ -14,6 +14,10 @@ module SystemCheck
authorized_keys.accessible?
end
def repair!
authorized_keys.create
end
def show_error
try_fixing_it([
"sudo chmod 700 #{File.dirname(authorized_keys.file)}",
......
......@@ -37,6 +37,41 @@ describe Gitlab::AuthorizedKeys do
end
end
describe '#create' do
subject { authorized_keys.create }
context 'authorized_keys file exists' do
before do
create_authorized_keys_fixture
end
after do
delete_authorized_keys_file
end
it { is_expected.to be_truthy }
end
context 'authorized_keys file does not exist' do
after do
delete_authorized_keys_file
end
it 'creates authorized_keys file' do
expect(subject).to be_truthy
expect(File.exist?(tmp_authorized_keys_path)).to be_truthy
end
end
context 'cannot create file' do
before do
allow(File).to receive(:open).and_raise(Errno::EACCES)
end
it { is_expected.to be_falsey }
end
end
describe '#add_key' do
let(:id) { 'key-741' }
......
......@@ -42,4 +42,26 @@ describe SystemCheck::App::AuthorizedKeysPermissionCheck do
it { is_expected.to eq(false) }
end
end
describe '#repair!' do
subject { system_check.repair! }
before do
expect_next_instance_of(Gitlab::AuthorizedKeys) do |instance|
allow(instance).to receive(:create) { created }
end
end
context 'authorized_keys file created' do
let(:created) { true }
it { is_expected.to eq(true) }
end
context 'authorized_keys file is not created' do
let(:created) { false }
it { is_expected.to eq(false) }
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment