summaryrefslogtreecommitdiff
path: root/spec/support/shared_examples/services
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 13:49:51 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 13:49:51 +0000
commit71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e (patch)
tree6a2d93ef3fb2d353bb7739e4b57e6541f51cdd71 /spec/support/shared_examples/services
parenta7253423e3403b8c08f8a161e5937e1488f5f407 (diff)
downloadgitlab-ce-71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e.tar.gz
Add latest changes from gitlab-org/gitlab@15-9-stable-eev15.9.0-rc42
Diffstat (limited to 'spec/support/shared_examples/services')
-rw-r--r--spec/support/shared_examples/services/export_csv/export_csv_invalid_fields_shared_examples.rb13
-rw-r--r--spec/support/shared_examples/services/issuable/discussions_list_shared_examples.rb14
-rw-r--r--spec/support/shared_examples/services/issuable_shared_examples.rb3
-rw-r--r--spec/support/shared_examples/services/metrics/dashboard_shared_examples.rb15
-rw-r--r--spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb50
-rw-r--r--spec/support/shared_examples/services/packages_shared_examples.rb2
-rw-r--r--spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb2
-rw-r--r--spec/support/shared_examples/services/security/ci_configuration/create_service_shared_examples.rb15
-rw-r--r--spec/support/shared_examples/services/updating_mentions_shared_examples.rb3
9 files changed, 67 insertions, 50 deletions
diff --git a/spec/support/shared_examples/services/export_csv/export_csv_invalid_fields_shared_examples.rb b/spec/support/shared_examples/services/export_csv/export_csv_invalid_fields_shared_examples.rb
new file mode 100644
index 00000000000..25899f93914
--- /dev/null
+++ b/spec/support/shared_examples/services/export_csv/export_csv_invalid_fields_shared_examples.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+RSpec.shared_examples 'a service that returns invalid fields from selection' do
+ describe '#invalid_fields' do
+ it 'returns invalid fields from selection' do
+ fields = %w[title invalid_1 invalid_2]
+
+ service = described_class.new(WorkItem.all, project, fields)
+
+ expect(service.invalid_fields).to eq(%w[invalid_1 invalid_2])
+ end
+ end
+end
diff --git a/spec/support/shared_examples/services/issuable/discussions_list_shared_examples.rb b/spec/support/shared_examples/services/issuable/discussions_list_shared_examples.rb
index c38ca6a3bf0..4188c4aa56c 100644
--- a/spec/support/shared_examples/services/issuable/discussions_list_shared_examples.rb
+++ b/spec/support/shared_examples/services/issuable/discussions_list_shared_examples.rb
@@ -26,7 +26,9 @@ RSpec.shared_examples 'listing issuable discussions' do |user_role, internal_dis
discussions = next_page_discussions_service.execute
expect(discussions.count).to eq(2)
- expect(discussions.first.notes.map(&:note)).to match_array(["added #{label.to_reference} label"])
+ expect(discussions.first.notes.map(&:note)).to match_array(
+ ["added #{label.to_reference} #{label_2.to_reference} labels"]
+ )
expect(discussions.second.notes.map(&:note)).to match_array(["removed #{label.to_reference} label"])
end
end
@@ -93,7 +95,15 @@ def create_notes(issuable, note_body)
discussion_id: first_discussion.discussion_id, noteable: issuable,
project: issuable.project, note: "reply on #{note_body}")
- create(:resource_label_event, user: current_user, "#{assoc_name}": issuable, label: label, action: 'add')
+ now = Time.current
+ create(
+ :resource_label_event,
+ user: current_user, "#{assoc_name}": issuable, label: label, action: 'add', created_at: now
+ )
+ create(
+ :resource_label_event,
+ user: current_user, "#{assoc_name}": issuable, label: label_2, action: 'add', created_at: now
+ )
create(:resource_label_event, user: current_user, "#{assoc_name}": issuable, label: label, action: 'remove')
unless issuable.is_a?(Epic)
diff --git a/spec/support/shared_examples/services/issuable_shared_examples.rb b/spec/support/shared_examples/services/issuable_shared_examples.rb
index 142d4ae8531..fe868d494d2 100644
--- a/spec/support/shared_examples/services/issuable_shared_examples.rb
+++ b/spec/support/shared_examples/services/issuable_shared_examples.rb
@@ -11,7 +11,8 @@ end
RSpec.shared_examples 'updating a single task' do
def update_issuable(opts)
issuable = try(:issue) || try(:merge_request)
- described_class.new(project: project, current_user: user, params: opts).execute(issuable)
+ described_class.new(**described_class.constructor_container_arg(project), current_user: user, params: opts)
+ .execute(issuable)
end
before do
diff --git a/spec/support/shared_examples/services/metrics/dashboard_shared_examples.rb b/spec/support/shared_examples/services/metrics/dashboard_shared_examples.rb
index 4df12f7849b..bdb01b12607 100644
--- a/spec/support/shared_examples/services/metrics/dashboard_shared_examples.rb
+++ b/spec/support/shared_examples/services/metrics/dashboard_shared_examples.rb
@@ -12,27 +12,20 @@ RSpec.shared_examples 'misconfigured dashboard service response' do |status_code
end
RSpec.shared_examples 'valid dashboard service response for schema' do
- file_ref_resolver = proc do |uri|
- file = Rails.root.join(uri.path)
- raise StandardError, "Ref file #{uri.path} must be json" unless uri.path.ends_with?('.json')
- raise StandardError, "File #{file.to_path} doesn't exists" unless file.exist?
-
- Gitlab::Json.parse(File.read(file))
- end
-
it 'returns a json representation of the dashboard' do
result = service_call
expect(result.keys).to contain_exactly(:dashboard, :status)
expect(result[:status]).to eq(:success)
- validator = JSONSchemer.schema(dashboard_schema, ref_resolver: file_ref_resolver)
+ schema_path = Rails.root.join('spec/fixtures', dashboard_schema)
+ validator = JSONSchemer.schema(schema_path)
expect(validator.valid?(result[:dashboard].with_indifferent_access)).to be true
end
end
RSpec.shared_examples 'valid dashboard service response' do
- let(:dashboard_schema) { Gitlab::Json.parse(fixture_file('lib/gitlab/metrics/dashboard/schemas/dashboard.json')) }
+ let(:dashboard_schema) { 'lib/gitlab/metrics/dashboard/schemas/dashboard.json' }
it_behaves_like 'valid dashboard service response for schema'
end
@@ -76,7 +69,7 @@ RSpec.shared_examples 'dashboard_version contains SHA256 hash of dashboard file
end
RSpec.shared_examples 'valid embedded dashboard service response' do
- let(:dashboard_schema) { Gitlab::Json.parse(fixture_file('lib/gitlab/metrics/dashboard/schemas/embedded_dashboard.json')) }
+ let(:dashboard_schema) { 'lib/gitlab/metrics/dashboard/schemas/embedded_dashboard.json' }
it_behaves_like 'valid dashboard service response for schema'
end
diff --git a/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb b/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb
index ea79dc674a1..a3042ac2e26 100644
--- a/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb
+++ b/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb
@@ -4,6 +4,8 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
def check_release_files(expected_release_content)
distribution.reload
+ expect(expected_release_content).not_to include('MD5')
+
distribution.file.use_file do |file_path|
expect(File.read(file_path)).to eq(expected_release_content)
end
@@ -12,8 +14,10 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
expect(distribution.file_signature).to end_with("\n-----END PGP SIGNATURE-----\n")
distribution.signed_file.use_file do |file_path|
- expect(File.read(file_path)).to start_with("-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA512\n\n#{expected_release_content}-----BEGIN PGP SIGNATURE-----\n")
- expect(File.read(file_path)).to end_with("\n-----END PGP SIGNATURE-----\n")
+ signed_file_content = File.read(file_path)
+ expect(signed_file_content).to start_with("-----BEGIN PGP SIGNED MESSAGE-----\nHash:")
+ expect(signed_file_content).to include("\n\n#{expected_release_content}-----BEGIN PGP SIGNATURE-----\n")
+ expect(signed_file_content).to end_with("\n-----END PGP SIGNATURE-----\n")
end
end
@@ -45,6 +49,7 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
expect(component_file.updated_at).to eq(release_date)
unless expected_content.nil?
+ expect(expected_content).not_to include('MD5')
component_file.file.use_file do |file_path|
expect(File.read(file_path)).to eq(expected_content)
end
@@ -73,9 +78,9 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
.and change { component_file1.reload.updated_at }.to(current_time.round)
package_files = package.package_files.order(id: :asc).preload_debian_file_metadata.to_a
- pool_prefix = 'pool/unstable'
+ pool_prefix = "pool/#{distribution.codename}"
pool_prefix += "/#{project.id}" if container_type == :group
- pool_prefix += "/p/#{package.name}/#{package.version}"
+ pool_prefix += "/#{package.name[0]}/#{package.name}/#{package.version}"
expected_main_amd64_content = <<~EOF
Package: libsample0
Source: #{package.name}
@@ -93,7 +98,6 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
Priority: optional
Filename: #{pool_prefix}/libsample0_1.2.3~alpha2_amd64.deb
Size: 409600
- MD5sum: #{package_files[2].file_md5}
SHA256: #{package_files[2].file_sha256}
Package: sample-dev
@@ -113,7 +117,6 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
Priority: optional
Filename: #{pool_prefix}/sample-dev_1.2.3~binary_amd64.deb
Size: 409600
- MD5sum: #{package_files[3].file_md5}
SHA256: #{package_files[3].file_sha256}
EOF
@@ -122,7 +125,6 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
Priority: extra
Filename: #{pool_prefix}/sample-udeb_1.2.3~alpha2_amd64.udeb
Size: 409600
- MD5sum: #{package_files[4].file_md5}
SHA256: #{package_files[4].file_sha256}
EOF
@@ -171,45 +173,26 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
check_component_file(current_time.round, 'contrib', :sources, nil, nil)
main_amd64_size = expected_main_amd64_content.length
- main_amd64_md5sum = Digest::MD5.hexdigest(expected_main_amd64_content)
main_amd64_sha256 = Digest::SHA256.hexdigest(expected_main_amd64_content)
contrib_all_size = component_file1.size
- contrib_all_md5sum = component_file1.file_md5
contrib_all_sha256 = component_file1.file_sha256
main_amd64_di_size = expected_main_amd64_di_content.length
- main_amd64_di_md5sum = Digest::MD5.hexdigest(expected_main_amd64_di_content)
main_amd64_di_sha256 = Digest::SHA256.hexdigest(expected_main_amd64_di_content)
main_sources_size = expected_main_sources_content.length
- main_sources_md5sum = Digest::MD5.hexdigest(expected_main_sources_content)
main_sources_sha256 = Digest::SHA256.hexdigest(expected_main_sources_content)
expected_release_content = <<~EOF
- Codename: unstable
+ Codename: #{distribution.codename}
Date: Sat, 25 Jan 2020 15:17:18 +0000
Valid-Until: Mon, 27 Jan 2020 15:17:18 +0000
Acquire-By-Hash: yes
Architectures: all amd64 arm64
Components: contrib main
- MD5Sum:
- #{contrib_all_md5sum} #{contrib_all_size} contrib/binary-all/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-all/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 contrib/binary-amd64/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-amd64/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 contrib/binary-arm64/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-arm64/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 contrib/source/Sources
- d41d8cd98f00b204e9800998ecf8427e 0 main/binary-all/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 main/debian-installer/binary-all/Packages
- #{main_amd64_md5sum} #{main_amd64_size} main/binary-amd64/Packages
- #{main_amd64_di_md5sum} #{main_amd64_di_size} main/debian-installer/binary-amd64/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 main/binary-arm64/Packages
- d41d8cd98f00b204e9800998ecf8427e 0 main/debian-installer/binary-arm64/Packages
- #{main_sources_md5sum} #{main_sources_size} main/source/Sources
SHA256:
- #{contrib_all_sha256} #{contrib_all_size} contrib/binary-all/Packages
+ #{contrib_all_sha256} #{contrib_all_size.to_s.rjust(8)} contrib/binary-all/Packages
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-all/Packages
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/binary-amd64/Packages
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-amd64/Packages
@@ -218,12 +201,13 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/source/Sources
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 main/binary-all/Packages
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 main/debian-installer/binary-all/Packages
- #{main_amd64_sha256} #{main_amd64_size} main/binary-amd64/Packages
- #{main_amd64_di_sha256} #{main_amd64_di_size} main/debian-installer/binary-amd64/Packages
+ #{main_amd64_sha256} #{main_amd64_size.to_s.rjust(8)} main/binary-amd64/Packages
+ #{main_amd64_di_sha256} #{main_amd64_di_size.to_s.rjust(8)} main/debian-installer/binary-amd64/Packages
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 main/binary-arm64/Packages
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 main/debian-installer/binary-arm64/Packages
- #{main_sources_sha256} #{main_sources_size} main/source/Sources
+ #{main_sources_sha256} #{main_sources_size.to_s.rjust(8)} main/source/Sources
EOF
+ expected_release_content = "Suite: #{distribution.suite}\n#{expected_release_content}" if distribution.suite
check_release_files(expected_release_content)
end
@@ -247,13 +231,13 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
.and not_change { distribution.component_files.reset.count }
expected_release_content = <<~EOF
- Codename: unstable
+ Codename: #{distribution.codename}
Date: Sat, 25 Jan 2020 15:17:18 +0000
Valid-Until: Mon, 27 Jan 2020 15:17:18 +0000
Acquire-By-Hash: yes
- MD5Sum:
SHA256:
EOF
+ expected_release_content = "Suite: #{distribution.suite}\n#{expected_release_content}" if distribution.suite
check_release_files(expected_release_content)
end
diff --git a/spec/support/shared_examples/services/packages_shared_examples.rb b/spec/support/shared_examples/services/packages_shared_examples.rb
index e0dd08ec50e..f63693dbf26 100644
--- a/spec/support/shared_examples/services/packages_shared_examples.rb
+++ b/spec/support/shared_examples/services/packages_shared_examples.rb
@@ -2,7 +2,7 @@
RSpec.shared_examples 'assigns build to package' do
context 'with build info' do
- let(:job) { create(:ci_build, user: user) }
+ let(:job) { create(:ci_build, user: user, project: project) }
let(:params) { super().merge(build: job) }
it 'assigns the pipeline to the package' do
diff --git a/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb b/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb
index a7e51408032..1383346644a 100644
--- a/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb
+++ b/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb
@@ -8,7 +8,7 @@ RSpec.shared_examples 'filters by paginated notes' do |event_type|
end
it 'only returns given notes' do
- paginated_notes = { event_type.to_s.pluralize => [double(id: event.id)] }
+ paginated_notes = { event_type.to_s.pluralize => [double(ids: [event.id])] }
notes = described_class.new(event.issue, user, paginated_notes: paginated_notes).execute
expect(notes.size).to eq(1)
diff --git a/spec/support/shared_examples/services/security/ci_configuration/create_service_shared_examples.rb b/spec/support/shared_examples/services/security/ci_configuration/create_service_shared_examples.rb
index 716be8c6210..209be09c807 100644
--- a/spec/support/shared_examples/services/security/ci_configuration/create_service_shared_examples.rb
+++ b/spec/support/shared_examples/services/security/ci_configuration/create_service_shared_examples.rb
@@ -160,6 +160,21 @@ RSpec.shared_examples_for 'services security ci configuration create service' do
end
end
end
+
+ context 'when the project is empty' do
+ let(:params) { nil }
+ let_it_be(:project) { create(:project_empty_repo) }
+
+ it 'returns an error' do
+ expect { result }.to raise_error { |error|
+ expect(error).to be_a(Gitlab::Graphql::Errors::MutationError)
+ expect(error.message).to eq('You must <a target="_blank" rel="noopener noreferrer" ' \
+ 'href="http://localhost/help/user/project/repository/index.md' \
+ '#add-files-to-a-repository">add at least one file to the repository' \
+ '</a> before using Security features.')
+ }
+ end
+ end
end
end
end
diff --git a/spec/support/shared_examples/services/updating_mentions_shared_examples.rb b/spec/support/shared_examples/services/updating_mentions_shared_examples.rb
index 13a2aa9ddac..0f649173683 100644
--- a/spec/support/shared_examples/services/updating_mentions_shared_examples.rb
+++ b/spec/support/shared_examples/services/updating_mentions_shared_examples.rb
@@ -15,7 +15,8 @@ RSpec.shared_examples 'updating mentions' do |service_class|
def update_mentionable(opts)
perform_enqueued_jobs do
- service_class.new(project: project, current_user: user, params: opts).execute(mentionable)
+ service_class.new(**service_class.constructor_container_arg(project),
+ current_user: user, params: opts).execute(mentionable)
end
mentionable.reload