Files
gitlab-foss/gems/gitlab-backup-cli/spec/gitlab/backup/cli/gitlab_config_spec.rb
2024-10-31 03:14:13 +00:00

45 lines
1.5 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Gitlab::Backup::Cli::GitlabConfig do
let(:config_fixture) { fixtures_path.join('config/gitlab.yml') }
subject(:gitlab_config) { described_class.new(config_fixture) }
describe '#initialize' do
context 'when provided with a gitlab configuration file' do
it 'loads the configuration' do
expect(gitlab_config.keys).to include('test')
end
end
context 'when provided with a filepath that does not exist' do
let(:config_fixture) { fixtures_path.join('unknown-gitlab.yml') }
it 'does not raise an exception', :silence_output do
expect { gitlab_config }.not_to raise_error
expect(gitlab_config).not_to be_loaded
end
it 'displays an error message' do
expect { gitlab_config }.to output(/GitLab configuration file: .+ does not exist/).to_stderr
end
end
context 'when the process lacks enough permission to read provided config file' do
before do
allow(ActiveSupport::ConfigurationFile).to receive(:parse).and_raise(Errno::EACCES)
end
it 'does not raise an exception', :silence_output do
expect { gitlab_config }.not_to raise_error
expect(gitlab_config).not_to be_loaded
end
it 'displays an error message' do
error_message_pattern = /GitLab configuration file: .+ can't be read \(permission denied\)/
expect { gitlab_config }.to output(error_message_pattern).to_stderr
end
end
end
end