Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-09 21:09:32 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-09 21:09:32 +0300
commit1268cfeaf73a73c5593f13639530513716826e2b (patch)
tree2508ffb2fddaa666d99b4e5984d3340eb9194782 /spec/lib
parentbe769d5fcced48143e92f83c997b7d5ba14873e1 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/backup/repositories_spec.rb93
-rw-r--r--spec/lib/gitlab/slash_commands/incident_management/incident_new_spec.rb63
2 files changed, 155 insertions, 1 deletions
diff --git a/spec/lib/backup/repositories_spec.rb b/spec/lib/backup/repositories_spec.rb
index b11538b93b7..d8794ba68a0 100644
--- a/spec/lib/backup/repositories_spec.rb
+++ b/spec/lib/backup/repositories_spec.rb
@@ -7,6 +7,7 @@ RSpec.describe Backup::Repositories, feature_category: :backup_restore do
let(:strategy) { spy(:strategy) }
let(:storages) { [] }
let(:paths) { [] }
+ let(:skip_paths) { [] }
let(:destination) { 'repositories' }
let(:backup_id) { 'backup_id' }
@@ -15,7 +16,8 @@ RSpec.describe Backup::Repositories, feature_category: :backup_restore do
progress,
strategy: strategy,
storages: storages,
- paths: paths
+ paths: paths,
+ skip_paths: skip_paths
)
end
@@ -155,6 +157,51 @@ RSpec.describe Backup::Repositories, feature_category: :backup_restore do
end
end
end
+
+ describe 'skip_paths' do
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:excluded_project) { create(:project, :repository) }
+
+ context 'project path' do
+ let(:skip_paths) { [excluded_project.full_path] }
+
+ it 'calls enqueue for all repositories on the specified project', :aggregate_failures do
+ excluded_project_snippet = create(:project_snippet, :repository, project: excluded_project)
+ included_personal_snippet = create(:personal_snippet, :repository, author: excluded_project.first_owner)
+
+ subject.dump(destination, backup_id)
+
+ expect(strategy).to have_received(:start).with(:create, destination, backup_id: backup_id)
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(included_personal_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::WIKI)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::DESIGN)
+ expect(strategy).to have_received(:finish!)
+ end
+ end
+
+ context 'group path' do
+ let(:skip_paths) { [excluded_project.namespace.full_path] }
+
+ it 'calls enqueue for all repositories on all descendant projects', :aggregate_failures do
+ excluded_project_snippet = create(:project_snippet, :repository, project: excluded_project)
+ included_personal_snippet = create(:personal_snippet, :repository, author: excluded_project.first_owner)
+
+ subject.dump(destination, backup_id)
+
+ expect(strategy).to have_received(:start).with(:create, destination, backup_id: backup_id)
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(included_personal_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::WIKI)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::DESIGN)
+ expect(strategy).to have_received(:finish!)
+ end
+ end
+ end
end
describe '#restore' do
@@ -301,5 +348,49 @@ RSpec.describe Backup::Repositories, feature_category: :backup_restore do
end
end
end
+
+ context 'skip_paths' do
+ let_it_be(:excluded_project) { create(:project, :repository) }
+
+ context 'project path' do
+ let(:skip_paths) { [excluded_project.full_path] }
+
+ it 'calls enqueue for all repositories on the specified project', :aggregate_failures do
+ excluded_project_snippet = create(:project_snippet, :repository, project: excluded_project)
+ included_personal_snippet = create(:personal_snippet, :repository, author: excluded_project.first_owner)
+
+ subject.restore(destination)
+
+ expect(strategy).to have_received(:start).with(:restore, destination, remove_all_repositories: %w[default])
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(included_personal_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::WIKI)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::DESIGN)
+ expect(strategy).to have_received(:finish!)
+ end
+ end
+
+ context 'group path' do
+ let(:skip_paths) { [excluded_project.namespace.full_path] }
+
+ it 'calls enqueue for all repositories on all descendant projects', :aggregate_failures do
+ excluded_project_snippet = create(:project_snippet, :repository, project: excluded_project)
+ included_personal_snippet = create(:personal_snippet, :repository, author: excluded_project.first_owner)
+
+ subject.restore(destination)
+
+ expect(strategy).to have_received(:start).with(:restore, destination, remove_all_repositories: %w[default])
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).not_to have_received(:enqueue).with(excluded_project_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(included_personal_snippet, Gitlab::GlRepository::SNIPPET)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::PROJECT)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::WIKI)
+ expect(strategy).to have_received(:enqueue).with(project, Gitlab::GlRepository::DESIGN)
+ expect(strategy).to have_received(:finish!)
+ end
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/slash_commands/incident_management/incident_new_spec.rb b/spec/lib/gitlab/slash_commands/incident_management/incident_new_spec.rb
new file mode 100644
index 00000000000..9f891ceacbf
--- /dev/null
+++ b/spec/lib/gitlab/slash_commands/incident_management/incident_new_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::SlashCommands::IncidentManagement::IncidentNew, feature_category: :incident_management do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:chat_name) { create(:chat_name, user: user) }
+ let_it_be(:regex_match) { described_class.match('incident declare') }
+
+ subject do
+ described_class.new(project, chat_name)
+ end
+
+ describe '#execute' do
+ before do
+ allow_next_instance_of(
+ Integrations::SlackInteractions::IncidentManagement::IncidentModalOpenedService
+ ) do |modal_service|
+ allow(modal_service).to receive(:execute).and_return(
+ ServiceResponse.success(message: 'Please fill the incident creation form.')
+ )
+ end
+ end
+
+ context 'when invoked' do
+ it 'sends ephemeral response' do
+ response = subject.execute(regex_match)
+
+ expect(response[:response_type]).to be(:ephemeral)
+ expect(response[:text]).to eq('Please fill the incident creation form.')
+ end
+ end
+ end
+
+ describe '#allowed?' do
+ it 'returns true' do
+ expect(described_class).to be_allowed(project, user)
+ end
+
+ context 'when feature flag is disabled' do
+ before do
+ stub_feature_flags(incident_declare_slash_command: false)
+ end
+
+ it 'returns false in allowed?' do
+ expect(described_class).not_to be_allowed(project, user)
+ end
+ end
+ end
+
+ describe '#collection' do
+ context 'when collection method id called' do
+ it 'calls IssuesFinder' do
+ expect_next_instance_of(IssuesFinder) do |finder|
+ expect(finder).to receive(:execute)
+ end
+
+ subject.collection
+ end
+ end
+ end
+end