mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-07-25 16:03:48 +00:00
45 lines
1.5 KiB
Ruby
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
|