diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-20 13:49:51 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-20 13:49:51 +0000 |
commit | 71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e (patch) | |
tree | 6a2d93ef3fb2d353bb7739e4b57e6541f51cdd71 /spec/support/shared_examples/services | |
parent | a7253423e3403b8c08f8a161e5937e1488f5f407 (diff) | |
download | gitlab-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')
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 |