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-12-04 20:19:12 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-12-04 20:19:12 +0300
commita761a28a03863e85b958f61700a2b9dddeb5e3bd (patch)
tree4528765b166f492a31a3ce6679e39f87ffe84b81
parent45dda602ee61587a5366f0b555375eaa8cd5b94e (diff)
Add latest changes from gitlab-org/gitlab@16-6-stable-ee
-rw-r--r--app/services/packages/pypi/create_package_service.rb2
-rw-r--r--spec/requests/api/pypi_packages_spec.rb13
-rw-r--r--spec/services/packages/pypi/create_package_service_spec.rb17
3 files changed, 31 insertions, 1 deletions
diff --git a/app/services/packages/pypi/create_package_service.rb b/app/services/packages/pypi/create_package_service.rb
index fca7b1bca37..3c582b40203 100644
--- a/app/services/packages/pypi/create_package_service.rb
+++ b/app/services/packages/pypi/create_package_service.rb
@@ -12,7 +12,7 @@ module Packages
required_python: params[:requires_python] || '',
metadata_version: params[:metadata_version],
author_email: params[:author_email],
- description: params[:description],
+ description: params[:description]&.truncate(::Packages::Pypi::Metadatum::MAX_DESCRIPTION_LENGTH),
description_content_type: params[:description_content_type],
summary: params[:summary],
keywords: params[:keywords]
diff --git a/spec/requests/api/pypi_packages_spec.rb b/spec/requests/api/pypi_packages_spec.rb
index 9305155d285..2fc77f7f64f 100644
--- a/spec/requests/api/pypi_packages_spec.rb
+++ b/spec/requests/api/pypi_packages_spec.rb
@@ -330,6 +330,19 @@ RSpec.describe API::PypiPackages, feature_category: :package_registry do
it_behaves_like 'process PyPI api request', :developer, :bad_request, true
end
+ context 'with description too big' do
+ let(:description) { 'x' * ::Packages::Pypi::Metadatum::MAX_DESCRIPTION_LENGTH + 1 }
+ let(:token) { personal_access_token.token }
+ let(:user_headers) { basic_auth_header(user.username, token) }
+ let(:headers) { user_headers.merge(workhorse_headers) }
+
+ before do
+ project.update_column(:visibility_level, Gitlab::VisibilityLevel::PRIVATE)
+ end
+
+ it_behaves_like 'process PyPI api request', :developer, :created, true
+ end
+
context 'with an invalid package' do
let(:token) { personal_access_token.token }
let(:user_headers) { basic_auth_header(user.username, token) }
diff --git a/spec/services/packages/pypi/create_package_service_spec.rb b/spec/services/packages/pypi/create_package_service_spec.rb
index abff91d1878..d052a465442 100644
--- a/spec/services/packages/pypi/create_package_service_spec.rb
+++ b/spec/services/packages/pypi/create_package_service_spec.rb
@@ -93,6 +93,23 @@ RSpec.describe Packages::Pypi::CreatePackageService, :aggregate_failures, featur
end
end
+ context 'with a very long metadata description field' do
+ let(:max_length) { ::Packages::Pypi::Metadatum::MAX_DESCRIPTION_LENGTH }
+ let(:truncated_description) { ('x' * (max_length + 1)).truncate(max_length) }
+
+ before do
+ params.merge!(
+ description: 'x' * (max_length + 1)
+ )
+ end
+
+ it 'truncates the description field' do
+ expect { subject }.to change { Packages::Package.pypi.count }.by(1)
+
+ expect(created_package.pypi_metadatum.description).to eq(truncated_description)
+ end
+ end
+
context 'with an invalid metadata' do
let(:requires_python) { 'x' * 256 }