diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-16 09:08:34 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-16 09:08:34 +0300 |
commit | 0754d9a52440799546ead06a820a0d58f4a8e85b (patch) | |
tree | 00301282c4f129d983a0543bfce04fd72791cb69 /spec/requests | |
parent | afb84634cdb5859f5f76431d68d45c29ddc89fac (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/requests')
-rw-r--r-- | spec/requests/api/nuget_project_packages_spec.rb | 38 | ||||
-rw-r--r-- | spec/requests/api/repositories_spec.rb | 46 | ||||
-rw-r--r-- | spec/requests/organizations/organizations_controller_spec.rb | 44 |
3 files changed, 107 insertions, 21 deletions
diff --git a/spec/requests/api/nuget_project_packages_spec.rb b/spec/requests/api/nuget_project_packages_spec.rb index 2d3781da42b..da74409cd77 100644 --- a/spec/requests/api/nuget_project_packages_spec.rb +++ b/spec/requests/api/nuget_project_packages_spec.rb @@ -50,6 +50,44 @@ 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/$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" } diff --git a/spec/requests/api/repositories_spec.rb b/spec/requests/api/repositories_spec.rb index 8853eff0b3e..a94ed63bf47 100644 --- a/spec/requests/api/repositories_spec.rb +++ b/spec/requests/api/repositories_spec.rb @@ -37,6 +37,52 @@ RSpec.describe API::Repositories, feature_category: :source_code_management do end end + context 'when path does not exist' do + let(:path) { 'bogus' } + + context 'when handle_structured_gitaly_errors feature is disabled' do + before do + stub_feature_flags(handle_structured_gitaly_errors: false) + end + + it 'returns an empty array' do + get api("#{route}?path=#{path}", current_user) + + expect(response).to have_gitlab_http_status(:ok) + expect(response).to include_pagination_headers + expect(json_response).to be_an(Array) + expect(json_response).to be_an_empty + end + end + + context 'when handle_structured_gitaly_errors feature is enabled' do + before do + stub_feature_flags(handle_structured_gitaly_errors: true) + end + + it_behaves_like '404 response' do + let(:request) { get api("#{route}?path=#{path}", current_user) } + let(:message) { '404 invalid revision or path Not Found' } + end + end + end + + context 'when path is empty directory ' do + context 'when handle_structured_gitaly_errors feature is disabled' do + before do + stub_feature_flags(handle_structured_gitaly_errors: false) + end + + it 'returns an empty array' do + get api(route, current_user) + + expect(response).to have_gitlab_http_status(:ok) + expect(response).to include_pagination_headers + expect(json_response).to be_an(Array) + end + end + end + context 'when repository is disabled' do include_context 'disabled repository' diff --git a/spec/requests/organizations/organizations_controller_spec.rb b/spec/requests/organizations/organizations_controller_spec.rb index 1dc3c3eaaa3..788d740504a 100644 --- a/spec/requests/organizations/organizations_controller_spec.rb +++ b/spec/requests/organizations/organizations_controller_spec.rb @@ -26,38 +26,40 @@ RSpec.describe Organizations::OrganizationsController, feature_category: :cell d end shared_examples 'basic organization controller action' do - before do - sign_in(user) + context 'when the user is not logged in' do + it_behaves_like 'successful response' + it_behaves_like 'action disabled by `ui_for_organizations` feature flag' end - context 'when the user does not have authorization' do - let_it_be(:user) { create(:user) } + context 'when the user is logged in' do + before do + sign_in(user) + end - it 'renders 404' do - gitlab_request + context 'with no association to an organization' do + let_it_be(:user) { create(:user) } - expect(response).to have_gitlab_http_status(:not_found) + it_behaves_like 'successful response' + it_behaves_like 'action disabled by `ui_for_organizations` feature flag' end - it_behaves_like 'action disabled by `ui_for_organizations` feature flag' - end + context 'as as admin', :enable_admin_mode do + let_it_be(:user) { create(:admin) } - context 'when the user is an admin', :enable_admin_mode do - let_it_be(:user) { create(:admin) } + it_behaves_like 'successful response' + it_behaves_like 'action disabled by `ui_for_organizations` feature flag' + end - it_behaves_like 'successful response' - it_behaves_like 'action disabled by `ui_for_organizations` feature flag' - end + context 'as an organization user' do + let_it_be(:user) { create :user } - context 'when the user is an organization user' do - let_it_be(:user) { create :user } + before do + create :organization_user, organization: organization, user: user + end - before do - create :organization_user, organization: organization, user: user + it_behaves_like 'successful response' + it_behaves_like 'action disabled by `ui_for_organizations` feature flag' end - - it_behaves_like 'successful response' - it_behaves_like 'action disabled by `ui_for_organizations` feature flag' end end |