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
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-20 13:43:29 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-20 13:43:29 +0300
commit3b1af5cc7ed2666ff18b718ce5d30fa5a2756674 (patch)
tree3bc4a40e0ee51ec27eabf917c537033c0c5b14d4 /spec/services/packages/nuget/update_package_from_metadata_service_spec.rb
parent9bba14be3f2c211bf79e15769cd9b77bc73a13bc (diff)
Add latest changes from gitlab-org/gitlab@16-1-stable-eev16.1.0-rc42
Diffstat (limited to 'spec/services/packages/nuget/update_package_from_metadata_service_spec.rb')
-rw-r--r--spec/services/packages/nuget/update_package_from_metadata_service_spec.rb92
1 files changed, 54 insertions, 38 deletions
diff --git a/spec/services/packages/nuget/update_package_from_metadata_service_spec.rb b/spec/services/packages/nuget/update_package_from_metadata_service_spec.rb
index c35863030b0..fa7d994c13c 100644
--- a/spec/services/packages/nuget/update_package_from_metadata_service_spec.rb
+++ b/spec/services/packages/nuget/update_package_from_metadata_service_spec.rb
@@ -12,13 +12,15 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
let(:package_version) { '1.0.0' }
let(:package_file_name) { 'dummyproject.dummypackage.1.0.0.nupkg' }
- shared_examples 'raising an' do |error_class|
+ shared_examples 'raising an' do |error_class, with_message:|
it "raises an #{error_class}" do
- expect { subject }.to raise_error(error_class)
+ expect { subject }.to raise_error(error_class, with_message)
end
end
describe '#execute' do
+ using RSpec::Parameterized::TableSyntax
+
subject { service.execute }
shared_examples 'taking the lease' do
@@ -38,7 +40,7 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
shared_examples 'not updating the package if the lease is taken' do
context 'without obtaining the exclusive lease' do
let(:lease_key) { "packages:nuget:update_package_from_metadata_service:package:#{package_id}" }
- let(:metadata) { { package_name: package_name, package_version: package_version } }
+ let(:metadata) { { package_name: package_name, package_version: package_version, authors: 'author1, author2', description: 'test description' } }
let(:package_from_package_file) { package_file.package }
before do
@@ -66,12 +68,12 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
context 'with no existing package' do
let(:package_id) { package.id }
- it 'updates package and package file', :aggregate_failures do
+ it 'updates package and package file and creates metadatum', :aggregate_failures do
expect { subject }
.to not_change { ::Packages::Package.count }
.and change { Packages::Dependency.count }.by(1)
.and change { Packages::DependencyLink.count }.by(1)
- .and change { ::Packages::Nuget::Metadatum.count }.by(0)
+ .and change { ::Packages::Nuget::Metadatum.count }.by(1)
expect(package.reload.name).to eq(package_name)
expect(package.version).to eq(package_version)
@@ -98,7 +100,7 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
.and change { Packages::Dependency.count }.by(0)
.and change { Packages::DependencyLink.count }.by(0)
.and change { Packages::Nuget::DependencyLinkMetadatum.count }.by(0)
- .and change { ::Packages::Nuget::Metadatum.count }.by(0)
+ .and change { ::Packages::Nuget::Metadatum.count }.by(1)
expect(package_file.reload.file_name).to eq(package_file_name)
expect(package_file.package).to eq(existing_package)
end
@@ -117,7 +119,7 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
.to not_change { ::Packages::Package.count }
.and change { Packages::Dependency.count }.by(1)
.and change { Packages::DependencyLink.count }.by(1)
- .and change { ::Packages::Nuget::Metadatum.count }.by(0)
+ .and change { ::Packages::Nuget::Metadatum.count }.by(1)
end
end
end
@@ -158,6 +160,8 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
.and change { ::Packages::Nuget::Metadatum.count }.by(1)
metadatum = package_file.reload.package.nuget_metadatum
+ expect(metadatum.authors).to eq('Author Test')
+ expect(metadatum.description).to eq('Description Test')
expect(metadatum.license_url).to eq('https://opensource.org/licenses/MIT')
expect(metadatum.project_url).to eq('https://gitlab.com/gitlab-org/gitlab')
expect(metadatum.icon_url).to eq('https://opensource.org/files/osi_keyhole_300X300_90ppi_0.png')
@@ -166,13 +170,25 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
context 'with too long url' do
let_it_be(:too_long_url) { "http://localhost/#{'bananas' * 50}" }
- let(:metadata) { { package_name: package_name, package_version: package_version, license_url: too_long_url } }
+ let(:metadata) { { package_name: package_name, package_version: package_version, authors: 'Author Test', description: 'Description Test', license_url: too_long_url } }
before do
allow(service).to receive(:metadata).and_return(metadata)
end
- it_behaves_like 'raising an', ::Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError
+ it_behaves_like 'raising an', described_class::InvalidMetadataError, with_message: /Validation failed: License url is too long/
+ end
+
+ context 'without authors or description' do
+ %i[authors description].each do |property|
+ let(:metadata) { { package_name: package_name, package_version: package_version, property => nil } }
+
+ before do
+ allow(service).to receive(:metadata).and_return(metadata)
+ end
+
+ it_behaves_like 'raising an', described_class::InvalidMetadataError, with_message: described_class::INVALID_METADATA_ERROR_MESSAGE
+ end
end
end
@@ -212,7 +228,7 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
end
end
- it_behaves_like 'raising an', ::Packages::Nuget::MetadataExtractionService::ExtractionError
+ it_behaves_like 'raising an', ::Packages::Nuget::MetadataExtractionService::ExtractionError, with_message: 'nuspec file not found'
end
context 'with a symbol package' do
@@ -222,7 +238,7 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
context 'with no existing package' do
let(:package_id) { package.id }
- it_behaves_like 'raising an', ::Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError
+ it_behaves_like 'raising an', described_class::InvalidMetadataError, with_message: described_class::MISSING_MATCHING_PACKAGE_ERROR_MESSAGE
end
context 'with existing package' do
@@ -251,41 +267,41 @@ RSpec.describe Packages::Nuget::UpdatePackageFromMetadataService, :clean_gitlab_
end
context 'with an invalid package name' do
- invalid_names = [
- '',
- 'My/package',
- '../../../my_package',
- '%2e%2e%2fmy_package'
- ]
-
- invalid_names.each do |invalid_name|
- context "with #{invalid_name}" do
- before do
- allow(service).to receive(:package_name).and_return(invalid_name)
- end
+ invalid_name_error_msg = 'Validation failed: Name is invalid'
+
+ where(:invalid_name, :error_message) do
+ '' | described_class::INVALID_METADATA_ERROR_MESSAGE
+ 'My/package' | invalid_name_error_msg
+ '../../../my_package' | invalid_name_error_msg
+ '%2e%2e%2fmy_package' | invalid_name_error_msg
+ end
- it_behaves_like 'raising an', ::Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError
+ with_them do
+ before do
+ allow(service).to receive(:package_name).and_return(invalid_name)
end
+
+ it_behaves_like 'raising an', described_class::InvalidMetadataError, with_message: params[:error_message]
end
end
context 'with an invalid package version' do
- invalid_versions = [
- '',
- '555',
- '1./2.3',
- '../../../../../1.2.3',
- '%2e%2e%2f1.2.3'
- ]
-
- invalid_versions.each do |invalid_version|
- context "with #{invalid_version}" do
- before do
- allow(service).to receive(:package_version).and_return(invalid_version)
- end
+ invalid_version_error_msg = 'Validation failed: Version is invalid'
+
+ where(:invalid_version, :error_message) do
+ '' | described_class::INVALID_METADATA_ERROR_MESSAGE
+ '555' | invalid_version_error_msg
+ '1./2.3' | invalid_version_error_msg
+ '../../../../../1.2.3' | invalid_version_error_msg
+ '%2e%2e%2f1.2.3' | invalid_version_error_msg
+ end
- it_behaves_like 'raising an', ::Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError
+ with_them do
+ before do
+ allow(service).to receive(:package_version).and_return(invalid_version)
end
+
+ it_behaves_like 'raising an', described_class::InvalidMetadataError, with_message: params[:error_message]
end
end
end