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-08-16 09:08:34 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-08-16 09:08:34 +0300
commit0754d9a52440799546ead06a820a0d58f4a8e85b (patch)
tree00301282c4f129d983a0543bfce04fd72791cb69 /spec/requests
parentafb84634cdb5859f5f76431d68d45c29ddc89fac (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/requests')
-rw-r--r--spec/requests/api/nuget_project_packages_spec.rb38
-rw-r--r--spec/requests/api/repositories_spec.rb46
-rw-r--r--spec/requests/organizations/organizations_controller_spec.rb44
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