diff options
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/backup/repositories_spec.rb | 62 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/canceled_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/created_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/failed_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/pending_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/preparing_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/running_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/scheduled_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/skipped_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/success_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/trace_spec.rb | 10 | ||||
-rw-r--r-- | spec/lib/gitlab/git/pre_receive_error_spec.rb | 16 | ||||
-rw-r--r-- | spec/lib/gitlab/middleware/go_spec.rb | 9 | ||||
-rw-r--r-- | spec/lib/gitlab/middleware/same_site_cookies_spec.rb | 4 |
15 files changed, 129 insertions, 12 deletions
diff --git a/spec/lib/backup/repositories_spec.rb b/spec/lib/backup/repositories_spec.rb index 5f734f4b71b..9c139e9f954 100644 --- a/spec/lib/backup/repositories_spec.rb +++ b/spec/lib/backup/repositories_spec.rb @@ -162,15 +162,17 @@ RSpec.describe Backup::Repositories do let_it_be(:personal_snippet) { create(:personal_snippet, author: project.owner) } let_it_be(:project_snippet) { create(:project_snippet, project: project, author: project.owner) } - it 'restores repositories from bundles', :aggregate_failures do - next_path_to_bundle = [ + let(:next_path_to_bundle) do + [ Rails.root.join('spec/fixtures/lib/backup/project_repo.bundle'), Rails.root.join('spec/fixtures/lib/backup/wiki_repo.bundle'), Rails.root.join('spec/fixtures/lib/backup/design_repo.bundle'), Rails.root.join('spec/fixtures/lib/backup/personal_snippet_repo.bundle'), Rails.root.join('spec/fixtures/lib/backup/project_snippet_repo.bundle') ].to_enum + end + it 'restores repositories from bundles', :aggregate_failures do allow_next_instance_of(described_class::BackupRestore) do |backup_restore| allow(backup_restore).to receive(:path_to_bundle).and_return(next_path_to_bundle.next) end @@ -231,6 +233,9 @@ RSpec.describe Backup::Repositories do end it 'cleans existing repositories' do + success_response = ServiceResponse.success(message: "Valid Snippet Repo") + allow(Snippets::RepositoryValidationService).to receive_message_chain(:new, :execute).and_return(success_response) + expect_next_instance_of(DesignManagement::Repository) do |repository| expect(repository).to receive(:remove) end @@ -246,5 +251,58 @@ RSpec.describe Backup::Repositories do subject.restore end + + context 'restoring snippets' do + before do + create(:snippet_repository, snippet: personal_snippet) + create(:snippet_repository, snippet: project_snippet) + + allow_next_instance_of(described_class::BackupRestore) do |backup_restore| + allow(backup_restore).to receive(:path_to_bundle).and_return(next_path_to_bundle.next) + end + end + + context 'when the repository is valid' do + it 'restores the snippet repositories' do + subject.restore + + expect(personal_snippet.snippet_repository.persisted?).to be true + expect(personal_snippet.repository).to exist + + expect(project_snippet.snippet_repository.persisted?).to be true + expect(project_snippet.repository).to exist + end + end + + context 'when repository is invalid' do + before do + error_response = ServiceResponse.error(message: "Repository has more than one branch") + allow(Snippets::RepositoryValidationService).to receive_message_chain(:new, :execute).and_return(error_response) + end + + it 'shows the appropriate error' do + subject.restore + + expect(progress).to have_received(:puts).with("Snippet #{personal_snippet.full_path} can't be restored: Repository has more than one branch") + expect(progress).to have_received(:puts).with("Snippet #{project_snippet.full_path} can't be restored: Repository has more than one branch") + end + + it 'removes the snippets from the DB' do + expect { subject.restore }.to change(PersonalSnippet, :count).by(-1) + .and change(ProjectSnippet, :count).by(-1) + .and change(SnippetRepository, :count).by(-2) + end + + it 'removes the repository from disk' do + gitlab_shell = Gitlab::Shell.new + shard_name = personal_snippet.repository.shard + path = personal_snippet.disk_path + '.git' + + subject.restore + + expect(gitlab_shell.repository_exists?(shard_name, path)).to eq false + end + end + end end end diff --git a/spec/lib/gitlab/ci/status/canceled_spec.rb b/spec/lib/gitlab/ci/status/canceled_spec.rb index a35efae5c57..7fae76f61ea 100644 --- a/spec/lib/gitlab/ci/status/canceled_spec.rb +++ b/spec/lib/gitlab/ci/status/canceled_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Canceled do describe '#group' do it { expect(subject.group).to eq 'canceled' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/created_spec.rb b/spec/lib/gitlab/ci/status/created_spec.rb index 1ddced923f6..1e54d1ed8c5 100644 --- a/spec/lib/gitlab/ci/status/created_spec.rb +++ b/spec/lib/gitlab/ci/status/created_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Created do describe '#group' do it { expect(subject.group).to eq 'created' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/failed_spec.rb b/spec/lib/gitlab/ci/status/failed_spec.rb index e8bd728b740..f3f3304b04d 100644 --- a/spec/lib/gitlab/ci/status/failed_spec.rb +++ b/spec/lib/gitlab/ci/status/failed_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Failed do describe '#group' do it { expect(subject.group).to eq 'failed' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/pending_spec.rb b/spec/lib/gitlab/ci/status/pending_spec.rb index 0e47b19d9c1..1c062a0133d 100644 --- a/spec/lib/gitlab/ci/status/pending_spec.rb +++ b/spec/lib/gitlab/ci/status/pending_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Pending do describe '#group' do it { expect(subject.group).to eq 'pending' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/preparing_spec.rb b/spec/lib/gitlab/ci/status/preparing_spec.rb index 6d33eb77560..ec1850c1959 100644 --- a/spec/lib/gitlab/ci/status/preparing_spec.rb +++ b/spec/lib/gitlab/ci/status/preparing_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Preparing do describe '#group' do it { expect(subject.group).to eq 'preparing' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/running_spec.rb b/spec/lib/gitlab/ci/status/running_spec.rb index fbc7bfd81b3..e40d696ee4d 100644 --- a/spec/lib/gitlab/ci/status/running_spec.rb +++ b/spec/lib/gitlab/ci/status/running_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Running do describe '#group' do it { expect(subject.group).to eq 'running' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/scheduled_spec.rb b/spec/lib/gitlab/ci/status/scheduled_spec.rb index 4a1dae937ca..8a923faf3f9 100644 --- a/spec/lib/gitlab/ci/status/scheduled_spec.rb +++ b/spec/lib/gitlab/ci/status/scheduled_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Scheduled do describe '#group' do it { expect(subject.group).to eq 'scheduled' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/skipped_spec.rb b/spec/lib/gitlab/ci/status/skipped_spec.rb index f402bbe5221..ac3c2f253f7 100644 --- a/spec/lib/gitlab/ci/status/skipped_spec.rb +++ b/spec/lib/gitlab/ci/status/skipped_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Skipped do describe '#group' do it { expect(subject.group).to eq 'skipped' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/success_spec.rb b/spec/lib/gitlab/ci/status/success_spec.rb index 2d1c50448d4..f2069334abd 100644 --- a/spec/lib/gitlab/ci/status/success_spec.rb +++ b/spec/lib/gitlab/ci/status/success_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::Success do describe '#group' do it { expect(subject.group).to eq 'success' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb b/spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb index de18198c6c2..bb6139accaf 100644 --- a/spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb +++ b/spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb @@ -26,4 +26,8 @@ RSpec.describe Gitlab::Ci::Status::WaitingForResource do describe '#group' do it { expect(subject.group).to eq 'waiting-for-resource' } end + + describe '#details_path' do + it { expect(subject.details_path).to be_nil } + end end diff --git a/spec/lib/gitlab/ci/trace_spec.rb b/spec/lib/gitlab/ci/trace_spec.rb index cd67f913c9b..92bf2519588 100644 --- a/spec/lib/gitlab/ci/trace_spec.rb +++ b/spec/lib/gitlab/ci/trace_spec.rb @@ -33,6 +33,16 @@ RSpec.describe Gitlab::Ci::Trace, :clean_gitlab_redis_shared_state, factory_defa expect(artifact2.job.trace.raw).to eq(test_data) end + + it 'reloads the trace in case of a chunk error' do + chunk_error = described_class::ChunkedIO::FailedToGetChunkError + + allow_any_instance_of(described_class::Stream) + .to receive(:raw).and_raise(chunk_error) + + expect(build).to receive(:reset).and_return(build) + expect { trace.raw }.to raise_error(chunk_error) + end end context 'when live trace feature is disabled' do diff --git a/spec/lib/gitlab/git/pre_receive_error_spec.rb b/spec/lib/gitlab/git/pre_receive_error_spec.rb index 2ad27361c80..1a10ff56266 100644 --- a/spec/lib/gitlab/git/pre_receive_error_spec.rb +++ b/spec/lib/gitlab/git/pre_receive_error_spec.rb @@ -21,13 +21,21 @@ RSpec.describe Gitlab::Git::PreReceiveError do expect(ex.raw_message).to eq(raw_message) end - it 'sanitizes the user message' do - raw_message = 'Raw message' - ex = described_class.new(raw_message, "#{prefix} User message") + it 'prefers the original message over the fallback' do + raw_message = "#{prefix} Hello,\nworld!" + ex = described_class.new(raw_message, fallback_message: "User message") + expect(ex.message).to eq('Hello,') expect(ex.raw_message).to eq(raw_message) - expect(ex.message).to eq('User message') end end + + it 'uses the fallback message' do + raw_message = 'Hello\n' + ex = described_class.new(raw_message, fallback_message: "User message") + + expect(ex.raw_message).to eq(raw_message) + expect(ex.message).to eq('User message') + end end end diff --git a/spec/lib/gitlab/middleware/go_spec.rb b/spec/lib/gitlab/middleware/go_spec.rb index af6146ea93c..7bac041cd65 100644 --- a/spec/lib/gitlab/middleware/go_spec.rb +++ b/spec/lib/gitlab/middleware/go_spec.rb @@ -142,8 +142,8 @@ RSpec.describe Gitlab::Middleware::Go do response = go expect(response[0]).to eq(403) - expect(response[1]['Content-Length']).to eq('0') - expect(response[2].body).to eq(['']) + expect(response[1]['Content-Length']).to be_nil + expect(response[2]).to eq(['']) end end end @@ -187,10 +187,11 @@ RSpec.describe Gitlab::Middleware::Go do it 'returns 404' do response = go + expect(response[0]).to eq(404) expect(response[1]['Content-Type']).to eq('text/html') expected_body = %{<html><body>go get #{Gitlab.config.gitlab.url}/#{project.full_path}</body></html>} - expect(response[2].body).to eq([expected_body]) + expect(response[2]).to eq([expected_body]) end end @@ -262,7 +263,7 @@ RSpec.describe Gitlab::Middleware::Go do expect(response[0]).to eq(200) expect(response[1]['Content-Type']).to eq('text/html') expected_body = %{<html><head><meta name="go-import" content="#{Gitlab.config.gitlab.host}/#{path} git #{repository_url}" /><meta name="go-source" content="#{Gitlab.config.gitlab.host}/#{path} #{project_url} #{project_url}/-/tree/#{branch}{/dir} #{project_url}/-/blob/#{branch}{/dir}/{file}#L{line}" /></head><body>go get #{Gitlab.config.gitlab.url}/#{path}</body></html>} - expect(response[2].body).to eq([expected_body]) + expect(response[2]).to eq([expected_body]) end end end diff --git a/spec/lib/gitlab/middleware/same_site_cookies_spec.rb b/spec/lib/gitlab/middleware/same_site_cookies_spec.rb index 2d1a9b2eee2..18342fd78ac 100644 --- a/spec/lib/gitlab/middleware/same_site_cookies_spec.rb +++ b/spec/lib/gitlab/middleware/same_site_cookies_spec.rb @@ -60,12 +60,12 @@ RSpec.describe Gitlab::Middleware::SameSiteCookies do end context 'with no cookies' do - let(:cookies) { nil } + let(:cookies) { "" } it 'does not add headers' do response = do_request - expect(response['Set-Cookie']).to be_nil + expect(response['Set-Cookie']).to eq("") end end |