diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-18 13:50:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-18 13:50:51 +0300 |
commit | db384e6b19af03b4c3c82a5760d83a3fd79f7982 (patch) | |
tree | 34beaef37df5f47ccbcf5729d7583aae093cffa0 /spec/requests/api/nuget_project_packages_spec.rb | |
parent | 54fd7b1bad233e3944434da91d257fa7f63c3996 (diff) |
Add latest changes from gitlab-org/gitlab@16-3-stable-eev16.3.0-rc42
Diffstat (limited to 'spec/requests/api/nuget_project_packages_spec.rb')
-rw-r--r-- | spec/requests/api/nuget_project_packages_spec.rb | 126 |
1 files changed, 68 insertions, 58 deletions
diff --git a/spec/requests/api/nuget_project_packages_spec.rb b/spec/requests/api/nuget_project_packages_spec.rb index 887dfd4beeb..da74409cd77 100644 --- a/spec/requests/api/nuget_project_packages_spec.rb +++ b/spec/requests/api/nuget_project_packages_spec.rb @@ -42,6 +42,52 @@ RSpec.describe API::NugetProjectPackages, feature_category: :package_registry do it_behaves_like 'accept get request on private project with access to package registry for everyone' end + describe 'GET /api/v4/projects/:id/packages/nuget/v2' do + let(:url) { "/projects/#{target.id}/packages/nuget/v2" } + + it_behaves_like 'handling nuget service requests', v2: true + + it_behaves_like 'accept get request on private project with access to package registry for everyone' + end + + describe 'GET /api/v4/projects/:id/packages/nuget/v2/$metadata' do + let(:url) { "/projects/#{target.id}/packages/nuget/v2/$metadata" } + + subject(:api_request) { get api(url) } + + it { is_expected.to have_request_urgency(:low) } + + context 'with valid target' do + using RSpec::Parameterized::TableSyntax + + where(:visibility_level, :user_role, :member, :expected_status) do + 'PUBLIC' | :developer | true | :success + 'PUBLIC' | :guest | true | :success + 'PUBLIC' | :developer | false | :success + 'PUBLIC' | :guest | false | :success + 'PUBLIC' | :anonymous | false | :success + 'PRIVATE' | :developer | true | :success + 'PRIVATE' | :guest | true | :success + 'PRIVATE' | :developer | false | :success + 'PRIVATE' | :guest | false | :success + 'PRIVATE' | :anonymous | false | :success + 'INTERNAL' | :developer | true | :success + 'INTERNAL' | :guest | true | :success + 'INTERNAL' | :developer | false | :success + 'INTERNAL' | :guest | false | :success + 'INTERNAL' | :anonymous | false | :success + end + + with_them do + before do + update_visibility_to(Gitlab::VisibilityLevel.const_get(visibility_level, false)) + end + + it_behaves_like 'process nuget v2 $metadata service request', params[:user_role], params[:expected_status], params[:member] + end + end + end + describe 'GET /api/v4/projects/:id/packages/nuget/metadata/*package_name/index' do let(:url) { "/projects/#{target.id}/packages/nuget/metadata/#{package_name}/index.json" } @@ -125,7 +171,7 @@ RSpec.describe API::NugetProjectPackages, feature_category: :package_registry do end describe 'GET /api/v4/projects/:id/packages/nuget/download/*package_name/*package_version/*package_filename' do - let_it_be(:package) { create(:nuget_package, :with_symbol_package, project: project, name: package_name) } + let_it_be(:package) { create(:nuget_package, :with_symbol_package, :with_metadatum, project: project, name: package_name, version: '0.1') } let(:format) { 'nupkg' } let(:url) { "/projects/#{target.id}/packages/nuget/download/#{package.name}/#{package.version}/#{package.name}.#{package.version}.#{format}" } @@ -183,75 +229,39 @@ RSpec.describe API::NugetProjectPackages, feature_category: :package_registry do end describe 'PUT /api/v4/projects/:id/packages/nuget/authorize' do - include_context 'workhorse headers' - - let(:url) { "/projects/#{target.id}/packages/nuget/authorize" } - let(:headers) { {} } - - subject { put api(url), headers: headers } - - it_behaves_like 'nuget authorize upload endpoint' + it_behaves_like 'nuget authorize upload endpoint' do + let(:url) { "/projects/#{target.id}/packages/nuget/authorize" } + end end describe 'PUT /api/v4/projects/:id/packages/nuget' do - include_context 'workhorse headers' - - let_it_be(:file_name) { 'package.nupkg' } - - let(:url) { "/projects/#{target.id}/packages/nuget" } - let(:headers) { {} } - let(:params) { { package: temp_file(file_name) } } - let(:file_key) { :package } - let(:send_rewritten_field) { true } - - subject do - workhorse_finalize( - api(url), - method: :put, - file_key: file_key, - params: params, - headers: headers, - send_rewritten_field: send_rewritten_field - ) + it_behaves_like 'nuget upload endpoint' do + let(:url) { "/projects/#{target.id}/packages/nuget" } end - - it_behaves_like 'nuget upload endpoint' end describe 'PUT /api/v4/projects/:id/packages/nuget/symbolpackage/authorize' do - include_context 'workhorse headers' - - let(:url) { "/projects/#{target.id}/packages/nuget/symbolpackage/authorize" } - let(:headers) { {} } - - subject { put api(url), headers: headers } - - it_behaves_like 'nuget authorize upload endpoint' + it_behaves_like 'nuget authorize upload endpoint' do + let(:url) { "/projects/#{target.id}/packages/nuget/symbolpackage/authorize" } + end end describe 'PUT /api/v4/projects/:id/packages/nuget/symbolpackage' do - include_context 'workhorse headers' - - let_it_be(:file_name) { 'package.snupkg' } - - let(:url) { "/projects/#{target.id}/packages/nuget/symbolpackage" } - let(:headers) { {} } - let(:params) { { package: temp_file(file_name) } } - let(:file_key) { :package } - let(:send_rewritten_field) { true } - - subject do - workhorse_finalize( - api(url), - method: :put, - file_key: file_key, - params: params, - headers: headers, - send_rewritten_field: send_rewritten_field - ) + it_behaves_like 'nuget upload endpoint', symbol_package: true do + let(:url) { "/projects/#{target.id}/packages/nuget/symbolpackage" } + end + end + + describe 'PUT /api/v4/projects/:id/packages/nuget/v2/authorize' do + it_behaves_like 'nuget authorize upload endpoint' do + let(:url) { "/projects/#{target.id}/packages/nuget/v2/authorize" } end + end - it_behaves_like 'nuget upload endpoint', symbol_package: true + describe 'PUT /api/v4/projects/:id/packages/nuget/v2' do + it_behaves_like 'nuget upload endpoint' do + let(:url) { "/projects/#{target.id}/packages/nuget/v2" } + end end def update_visibility_to(visibility) |