diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 14:10:13 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 14:10:13 +0300 |
commit | 0ea3fcec397b69815975647f5e2aa5fe944a8486 (patch) | |
tree | 7979381b89d26011bcf9bdc989a40fcc2f1ed4ff /spec/services/static_site_editor/config_service_spec.rb | |
parent | 72123183a20411a36d607d70b12d57c484394c8e (diff) |
Add latest changes from gitlab-org/gitlab@15-1-stable-eev15.1.0-rc42
Diffstat (limited to 'spec/services/static_site_editor/config_service_spec.rb')
-rw-r--r-- | spec/services/static_site_editor/config_service_spec.rb | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/spec/services/static_site_editor/config_service_spec.rb b/spec/services/static_site_editor/config_service_spec.rb deleted file mode 100644 index fed373828a1..00000000000 --- a/spec/services/static_site_editor/config_service_spec.rb +++ /dev/null @@ -1,126 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe StaticSiteEditor::ConfigService do - let_it_be(:project) { create(:project, :repository) } - let_it_be(:user) { create(:user) } - - # params - let(:ref) { 'master' } - let(:path) { 'README.md' } - let(:return_url) { double(:return_url) } - - # stub data - let(:generated_data) { { generated: true } } - let(:file_data) { { file: true } } - - describe '#execute' do - subject(:execute) do - described_class.new( - container: project, - current_user: user, - params: { - ref: ref, - path: path, - return_url: return_url - } - ).execute - end - - context 'when insufficient permission' do - it 'returns an error' do - expect(execute).to be_error - expect(execute.message).to eq('Insufficient permissions to read configuration') - end - end - - context 'for developer' do - before do - project.add_developer(user) - - allow_next_instance_of(Gitlab::StaticSiteEditor::Config::GeneratedConfig) do |config| - allow(config).to receive(:data) { generated_data } - end - end - - context 'when reading file from repo fails with an unexpected error' do - let(:unexpected_error) { RuntimeError.new('some unexpected error') } - - before do - allow(project.repository).to receive(:blob_data_at).and_raise(unexpected_error) - end - - it 'returns an error response' do - expect(Gitlab::ErrorTracking).to receive(:track_and_raise_exception).with(unexpected_error).and_call_original - expect { execute }.to raise_error(unexpected_error) - end - end - - context 'when file is missing' do - before do - allow(project.repository).to receive(:blob_data_at).and_raise(GRPC::NotFound) - expect_next_instance_of(Gitlab::StaticSiteEditor::Config::FileConfig, '{}') do |config| - allow(config).to receive(:valid?) { true } - allow(config).to receive(:to_hash_with_defaults) { file_data } - end - end - - it 'returns default config' do - expect(execute).to be_success - expect(execute.payload).to eq(generated: true, file: true) - end - end - - context 'when file is present' do - before do - allow(project.repository).to receive(:blob_data_at).with(ref, anything) do - config_content - end - end - - context 'and configuration is not valid' do - let(:config_content) { 'invalid content' } - - before do - expect_next_instance_of(Gitlab::StaticSiteEditor::Config::FileConfig, config_content) do |config| - error = 'error' - allow(config).to receive_message_chain('errors.first') { error } - allow(config).to receive(:valid?) { false } - end - end - - it 'returns an error' do - expect(execute).to be_error - expect(execute.message).to eq('Invalid configuration format') - end - end - - context 'and configuration is valid' do - # NOTE: This has to be a valid config, even though it is mocked, because - # `expect_next_instance_of` executes the constructor logic. - let(:config_content) { 'static_site_generator: middleman' } - - before do - expect_next_instance_of(Gitlab::StaticSiteEditor::Config::FileConfig, config_content) do |config| - allow(config).to receive(:valid?) { true } - allow(config).to receive(:to_hash_with_defaults) { file_data } - end - end - - it 'returns merged generated data and config file data' do - expect(execute).to be_success - expect(execute.payload).to eq(generated: true, file: true) - end - - it 'returns an error if any keys would be overwritten by the merge' do - generated_data[:duplicate_key] = true - file_data[:duplicate_key] = true - expect(execute).to be_error - expect(execute.message).to match(/duplicate key.*duplicate_key.*found/i) - end - end - end - end - end -end |