From 5da2959b6e68128c3c86af72d8cbbef770aef1ed Mon Sep 17 00:00:00 2001 From: moaz-khalifa <mkhalifa@gitlab.com> Date: Wed, 19 Feb 2025 19:30:41 +0100 Subject: [PATCH] Move virtual registry API classes to EE and add license check We move the Maven virtual registry feature from CE to EE and implement a license check to restrict access to Premium tier and above. In this MR, we start by moving the API classes and adding the license check when accessing any related endpoint. --- .../models/gitlab_subscriptions/features.rb | 1 + .../virtual_registries/packages/endpoint.rb | 0 .../packages/maven/shared_setup.rb | 35 +++++++++++++++++++ .../packages/maven/cache/entry.rb | 0 .../packages/maven/registry.rb | 0 .../packages/maven/upstream.rb | 0 .../packages/maven/cache/entries.rb | 23 ++---------- .../packages/maven/endpoints.rb | 20 ++--------- .../packages/maven/registries.rb | 27 +++----------- .../packages/maven/upstreams.rb | 23 ++---------- ee/lib/ee/api/api.rb | 4 +++ .../virtual_registries/packages/maven_spec.rb | 6 ++-- .../packages/maven/cache/entry_spec.rb | 0 .../packages/maven/registry_spec.rb | 0 .../packages/maven/upstream_spec.rb | 0 .../packages/maven/cache/entries_spec.rb | 2 ++ .../packages/maven/endpoints_spec.rb | 2 ++ .../packages/maven/registries_spec.rb | 4 +++ .../packages/maven/upstreams_spec.rb | 5 +++ .../maven_vreg_shared_context.rb | 1 + .../maven_packages_shared_examples.rb | 8 +++++ lib/api/api.rb | 4 --- 22 files changed, 78 insertions(+), 87 deletions(-) rename {lib => ee/lib}/api/concerns/virtual_registries/packages/endpoint.rb (100%) create mode 100644 ee/lib/api/concerns/virtual_registries/packages/maven/shared_setup.rb rename {lib => ee/lib}/api/entities/virtual_registries/packages/maven/cache/entry.rb (100%) rename {lib => ee/lib}/api/entities/virtual_registries/packages/maven/registry.rb (100%) rename {lib => ee/lib}/api/entities/virtual_registries/packages/maven/upstream.rb (100%) rename {lib => ee/lib}/api/virtual_registries/packages/maven/cache/entries.rb (83%) rename {lib => ee/lib}/api/virtual_registries/packages/maven/endpoints.rb (91%) rename {lib => ee/lib}/api/virtual_registries/packages/maven/registries.rb (87%) rename {lib => ee/lib}/api/virtual_registries/packages/maven/upstreams.rb (91%) rename {spec/features/api => ee/spec/features}/virtual_registries/packages/maven_spec.rb (95%) rename {spec => ee/spec}/lib/api/entities/virtual_registries/packages/maven/cache/entry_spec.rb (100%) rename {spec => ee/spec}/lib/api/entities/virtual_registries/packages/maven/registry_spec.rb (100%) rename {spec => ee/spec}/lib/api/entities/virtual_registries/packages/maven/upstream_spec.rb (100%) rename {spec => ee/spec}/requests/api/virtual_registries/packages/maven/cache/entries_spec.rb (97%) rename {spec => ee/spec}/requests/api/virtual_registries/packages/maven/endpoints_spec.rb (98%) rename {spec => ee/spec}/requests/api/virtual_registries/packages/maven/registries_spec.rb (97%) rename {spec => ee/spec}/requests/api/virtual_registries/packages/maven/upstreams_spec.rb (97%) rename {spec/support/shared_contexts/requests/api => ee/spec/support/shared_contexts}/maven_vreg_shared_context.rb (96%) rename {spec => ee/spec}/support/shared_examples/requests/api/virtual_registries/maven_packages_shared_examples.rb (85%) diff --git a/ee/app/models/gitlab_subscriptions/features.rb b/ee/app/models/gitlab_subscriptions/features.rb index 89316ee19eaf8..e4c26f565753d 100644 --- a/ee/app/models/gitlab_subscriptions/features.rb +++ b/ee/app/models/gitlab_subscriptions/features.rb @@ -150,6 +150,7 @@ class Features microsoft_group_sync operations_dashboard package_forwarding + packages_virtual_registry pages_size_limit pages_multiple_versions productivity_analytics diff --git a/lib/api/concerns/virtual_registries/packages/endpoint.rb b/ee/lib/api/concerns/virtual_registries/packages/endpoint.rb similarity index 100% rename from lib/api/concerns/virtual_registries/packages/endpoint.rb rename to ee/lib/api/concerns/virtual_registries/packages/endpoint.rb diff --git a/ee/lib/api/concerns/virtual_registries/packages/maven/shared_setup.rb b/ee/lib/api/concerns/virtual_registries/packages/maven/shared_setup.rb new file mode 100644 index 0000000000000..10d31e9d14f96 --- /dev/null +++ b/ee/lib/api/concerns/virtual_registries/packages/maven/shared_setup.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module API + module Concerns + module VirtualRegistries + module Packages + module Maven + module SharedSetup + extend ActiveSupport::Concern + include ::API::Helpers::Authentication + + included do + feature_category :virtual_registry + urgency :low + + authenticate_with do |accept| + accept.token_types(:personal_access_token).sent_through(:http_private_token_header) + accept.token_types(:deploy_token).sent_through(:http_deploy_token_header) + accept.token_types(:job_token).sent_through(:http_job_token_header) + end + + after_validation do + not_found! unless ::Feature.enabled?(:virtual_registry_maven, current_user) + not_found! unless ::Gitlab.config.dependency_proxy.enabled + not_found! unless target_group.licensed_feature_available?(:packages_virtual_registry) + + authenticate! + end + end + end + end + end + end + end +end diff --git a/lib/api/entities/virtual_registries/packages/maven/cache/entry.rb b/ee/lib/api/entities/virtual_registries/packages/maven/cache/entry.rb similarity index 100% rename from lib/api/entities/virtual_registries/packages/maven/cache/entry.rb rename to ee/lib/api/entities/virtual_registries/packages/maven/cache/entry.rb diff --git a/lib/api/entities/virtual_registries/packages/maven/registry.rb b/ee/lib/api/entities/virtual_registries/packages/maven/registry.rb similarity index 100% rename from lib/api/entities/virtual_registries/packages/maven/registry.rb rename to ee/lib/api/entities/virtual_registries/packages/maven/registry.rb diff --git a/lib/api/entities/virtual_registries/packages/maven/upstream.rb b/ee/lib/api/entities/virtual_registries/packages/maven/upstream.rb similarity index 100% rename from lib/api/entities/virtual_registries/packages/maven/upstream.rb rename to ee/lib/api/entities/virtual_registries/packages/maven/upstream.rb diff --git a/lib/api/virtual_registries/packages/maven/cache/entries.rb b/ee/lib/api/virtual_registries/packages/maven/cache/entries.rb similarity index 83% rename from lib/api/virtual_registries/packages/maven/cache/entries.rb rename to ee/lib/api/virtual_registries/packages/maven/cache/entries.rb index f900b3f1f3bad..deacfc9307f78 100644 --- a/lib/api/virtual_registries/packages/maven/cache/entries.rb +++ b/ee/lib/api/virtual_registries/packages/maven/cache/entries.rb @@ -6,23 +6,14 @@ module Packages module Maven module Cache class Entries < ::API::Base - include ::API::Helpers::Authentication + include ::API::Concerns::VirtualRegistries::Packages::Maven::SharedSetup include ::API::PaginationParams - feature_category :virtual_registry - urgency :low - - authenticate_with do |accept| - accept.token_types(:personal_access_token).sent_through(:http_private_token_header) - accept.token_types(:deploy_token).sent_through(:http_deploy_token_header) - accept.token_types(:job_token).sent_through(:http_job_token_header) - end - helpers do include ::Gitlab::Utils::StrongMemoize - def require_dependency_proxy_enabled! - not_found! unless ::Gitlab.config.dependency_proxy.enabled + def target_group + request.path.include?('/upstreams') ? upstream.group : cache_entry.group end def upstream @@ -42,14 +33,6 @@ def cache_entry strong_memoize_attr :cache_entry end - after_validation do - not_found! unless Feature.enabled?(:virtual_registry_maven, current_user) - - require_dependency_proxy_enabled! - - authenticate! - end - namespace 'virtual_registries/packages/maven' do namespace :upstreams do route_param :id, type: Integer, desc: 'The ID of the maven virtual registry upstream' do diff --git a/lib/api/virtual_registries/packages/maven/endpoints.rb b/ee/lib/api/virtual_registries/packages/maven/endpoints.rb similarity index 91% rename from lib/api/virtual_registries/packages/maven/endpoints.rb rename to ee/lib/api/virtual_registries/packages/maven/endpoints.rb index 5437850785d89..0e48c012958be 100644 --- a/lib/api/virtual_registries/packages/maven/endpoints.rb +++ b/ee/lib/api/virtual_registries/packages/maven/endpoints.rb @@ -5,13 +5,10 @@ module VirtualRegistries module Packages module Maven class Endpoints < ::API::Base - include ::API::Helpers::Authentication + include ::API::Concerns::VirtualRegistries::Packages::Maven::SharedSetup include ::API::Concerns::VirtualRegistries::Packages::Endpoint include ::API::APIGuard - feature_category :virtual_registry - urgency :low - AUTHENTICATE_REALM_HEADER = 'WWW-Authenticate' AUTHENTICATE_REALM_NAME = 'Basic realm="GitLab Virtual Registry"' @@ -36,10 +33,7 @@ class Endpoints < ::API::Base include ::Gitlab::Utils::StrongMemoize delegate :group, :upstream, :registry_upstream, to: :registry - - def require_dependency_proxy_enabled! - not_found! unless ::Gitlab.config.dependency_proxy.enabled - end + alias_method :target_group, :group def registry ::VirtualRegistries::Packages::Maven::Registry.find(params[:id]) @@ -71,14 +65,6 @@ def unauthorized!(reason = nil) end end - after_validation do - not_found! unless Feature.enabled?(:virtual_registry_maven, current_user) - - require_dependency_proxy_enabled! - - authenticate! - end - namespace 'virtual_registries/packages/maven/:id/*path' do desc 'Download endpoint of the Maven virtual registry.' do detail 'This feature was introduced in GitLab 17.3. \ @@ -137,7 +123,7 @@ def unauthorized!(reason = nil) require_gitlab_workhorse! authorize!(:read_virtual_registry, registry) - etag, content_type, upstream_gid = request.headers.fetch_values( + etag, content_type, upstream_gid = headers.fetch_values( 'Etag', ::Gitlab::Workhorse::SEND_DEPENDENCY_CONTENT_TYPE_HEADER, UPSTREAM_GID_HEADER diff --git a/lib/api/virtual_registries/packages/maven/registries.rb b/ee/lib/api/virtual_registries/packages/maven/registries.rb similarity index 87% rename from lib/api/virtual_registries/packages/maven/registries.rb rename to ee/lib/api/virtual_registries/packages/maven/registries.rb index 7ab9678411f39..a5b6a8ad8cfbb 100644 --- a/lib/api/virtual_registries/packages/maven/registries.rb +++ b/ee/lib/api/virtual_registries/packages/maven/registries.rb @@ -5,20 +5,15 @@ module VirtualRegistries module Packages module Maven class Registries < ::API::Base - include ::API::Helpers::Authentication - - feature_category :virtual_registry - urgency :low - - authenticate_with do |accept| - accept.token_types(:personal_access_token).sent_through(:http_private_token_header) - accept.token_types(:deploy_token).sent_through(:http_deploy_token_header) - accept.token_types(:job_token).sent_through(:http_job_token_header) - end + include ::API::Concerns::VirtualRegistries::Packages::Maven::SharedSetup helpers do include ::Gitlab::Utils::StrongMemoize + def target_group + request.path.include?('/groups') ? group : registry.group + end + def group find_group!(params[:id]) end @@ -32,18 +27,6 @@ def registry def policy_subject ::VirtualRegistries::Packages::Policies::Group.new(group) end - - def require_dependency_proxy_enabled! - not_found! unless ::Gitlab.config.dependency_proxy.enabled - end - end - - after_validation do - not_found! unless Feature.enabled?(:virtual_registry_maven, current_user) - - require_dependency_proxy_enabled! - - authenticate! end resource :groups, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do diff --git a/lib/api/virtual_registries/packages/maven/upstreams.rb b/ee/lib/api/virtual_registries/packages/maven/upstreams.rb similarity index 91% rename from lib/api/virtual_registries/packages/maven/upstreams.rb rename to ee/lib/api/virtual_registries/packages/maven/upstreams.rb index 8bb1c90119144..9b21822f71173 100644 --- a/lib/api/virtual_registries/packages/maven/upstreams.rb +++ b/ee/lib/api/virtual_registries/packages/maven/upstreams.rb @@ -5,24 +5,15 @@ module VirtualRegistries module Packages module Maven class Upstreams < ::API::Base - include ::API::Helpers::Authentication - - feature_category :virtual_registry - urgency :low - - authenticate_with do |accept| - accept.token_types(:personal_access_token).sent_through(:http_private_token_header) - accept.token_types(:deploy_token).sent_through(:http_deploy_token_header) - accept.token_types(:job_token).sent_through(:http_job_token_header) - end + include ::API::Concerns::VirtualRegistries::Packages::Maven::SharedSetup helpers do include ::Gitlab::Utils::StrongMemoize delegate :group, :registry_upstream, to: :registry - def require_dependency_proxy_enabled! - not_found! unless Gitlab.config.dependency_proxy.enabled + def target_group + request.path.include?('/registries') ? group : upstream.group end def registry @@ -36,14 +27,6 @@ def upstream strong_memoize_attr :upstream end - after_validation do - not_found! unless Feature.enabled?(:virtual_registry_maven, current_user) - - require_dependency_proxy_enabled! - - authenticate! - end - namespace 'virtual_registries/packages/maven' do namespace :registries do route_param :id, type: Integer, desc: 'The ID of the maven virtual registry' do diff --git a/ee/lib/ee/api/api.rb b/ee/lib/ee/api/api.rb index e82bbd7bae55b..dba3ed0e65000 100644 --- a/ee/lib/ee/api/api.rb +++ b/ee/lib/ee/api/api.rb @@ -80,6 +80,10 @@ module API mount ::API::Chat mount ::API::DuoCodeReview mount ::API::SecurityScans + mount ::API::VirtualRegistries::Packages::Maven::Registries + mount ::API::VirtualRegistries::Packages::Maven::Upstreams + mount ::API::VirtualRegistries::Packages::Maven::Cache::Entries + mount ::API::VirtualRegistries::Packages::Maven::Endpoints mount ::API::Internal::AppSec::Dast::SiteValidations mount ::API::Internal::Search::Zoekt diff --git a/spec/features/api/virtual_registries/packages/maven_spec.rb b/ee/spec/features/virtual_registries/packages/maven_spec.rb similarity index 95% rename from spec/features/api/virtual_registries/packages/maven_spec.rb rename to ee/spec/features/virtual_registries/packages/maven_spec.rb index af141cc75350d..f1bf4fd143ea7 100644 --- a/spec/features/api/virtual_registries/packages/maven_spec.rb +++ b/ee/spec/features/virtual_registries/packages/maven_spec.rb @@ -10,6 +10,7 @@ let_it_be(:user) { create(:user, owner_of: group) } let_it_be(:personal_access_token) { create(:personal_access_token, user: user) } let_it_be(:registry) { create(:virtual_registries_packages_maven_registry, group: group) } + let_it_be(:upstream) { create(:virtual_registries_packages_maven_upstream, registry: registry) } let_it_be(:external_server) do handler = ->(env) do @@ -23,10 +24,6 @@ run_server(handler) end - let_it_be(:upstream) do - create(:virtual_registries_packages_maven_upstream, registry: registry) - end - let(:api_path) { "/virtual_registries/packages/maven/#{registry.id}/file" } let(:url) { capybara_url(api(api_path)) } let(:authorization) do @@ -38,6 +35,7 @@ before do upstream.update_column(:url, external_server.base_url) # avoids guard that rejects local urls stub_config(dependency_proxy: { enabled: true }) + stub_licensed_features(packages_virtual_registry: true) allow(Gitlab::CurrentSettings).to receive(:allow_local_requests_from_web_hooks_and_services?).and_return(true) end diff --git a/spec/lib/api/entities/virtual_registries/packages/maven/cache/entry_spec.rb b/ee/spec/lib/api/entities/virtual_registries/packages/maven/cache/entry_spec.rb similarity index 100% rename from spec/lib/api/entities/virtual_registries/packages/maven/cache/entry_spec.rb rename to ee/spec/lib/api/entities/virtual_registries/packages/maven/cache/entry_spec.rb diff --git a/spec/lib/api/entities/virtual_registries/packages/maven/registry_spec.rb b/ee/spec/lib/api/entities/virtual_registries/packages/maven/registry_spec.rb similarity index 100% rename from spec/lib/api/entities/virtual_registries/packages/maven/registry_spec.rb rename to ee/spec/lib/api/entities/virtual_registries/packages/maven/registry_spec.rb diff --git a/spec/lib/api/entities/virtual_registries/packages/maven/upstream_spec.rb b/ee/spec/lib/api/entities/virtual_registries/packages/maven/upstream_spec.rb similarity index 100% rename from spec/lib/api/entities/virtual_registries/packages/maven/upstream_spec.rb rename to ee/spec/lib/api/entities/virtual_registries/packages/maven/upstream_spec.rb diff --git a/spec/requests/api/virtual_registries/packages/maven/cache/entries_spec.rb b/ee/spec/requests/api/virtual_registries/packages/maven/cache/entries_spec.rb similarity index 97% rename from spec/requests/api/virtual_registries/packages/maven/cache/entries_spec.rb rename to ee/spec/requests/api/virtual_registries/packages/maven/cache/entries_spec.rb index b2069b269f1c8..617bf5726ba5f 100644 --- a/spec/requests/api/virtual_registries/packages/maven/cache/entries_spec.rb +++ b/ee/spec/requests/api/virtual_registries/packages/maven/cache/entries_spec.rb @@ -41,6 +41,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'with invalid upstream' do where(:upstream_id, :status) do @@ -132,6 +133,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'for different user roles' do where(:user_role, :status) do diff --git a/spec/requests/api/virtual_registries/packages/maven/endpoints_spec.rb b/ee/spec/requests/api/virtual_registries/packages/maven/endpoints_spec.rb similarity index 98% rename from spec/requests/api/virtual_registries/packages/maven/endpoints_spec.rb rename to ee/spec/requests/api/virtual_registries/packages/maven/endpoints_spec.rb index eb88a1c3e132c..01dddb1a47fac 100644 --- a/spec/requests/api/virtual_registries/packages/maven/endpoints_spec.rb +++ b/ee/spec/requests/api/virtual_registries/packages/maven/endpoints_spec.rb @@ -212,6 +212,7 @@ end it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' end describe 'POST /api/v4/virtual_registries/packages/maven/:id/*path/upload' do @@ -311,5 +312,6 @@ end it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' end end diff --git a/spec/requests/api/virtual_registries/packages/maven/registries_spec.rb b/ee/spec/requests/api/virtual_registries/packages/maven/registries_spec.rb similarity index 97% rename from spec/requests/api/virtual_registries/packages/maven/registries_spec.rb rename to ee/spec/requests/api/virtual_registries/packages/maven/registries_spec.rb index de71971e8dbbe..7dccd68270a85 100644 --- a/spec/requests/api/virtual_registries/packages/maven/registries_spec.rb +++ b/ee/spec/requests/api/virtual_registries/packages/maven/registries_spec.rb @@ -26,6 +26,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'with valid group_id' do it_behaves_like 'successful response' @@ -98,6 +99,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' where(:user_role, :status) do :owner | :created @@ -210,6 +212,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'with valid registry_id' do it_behaves_like 'successful response' @@ -276,6 +279,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'with valid registry_id' do where(:user_role, :status) do diff --git a/spec/requests/api/virtual_registries/packages/maven/upstreams_spec.rb b/ee/spec/requests/api/virtual_registries/packages/maven/upstreams_spec.rb similarity index 97% rename from spec/requests/api/virtual_registries/packages/maven/upstreams_spec.rb rename to ee/spec/requests/api/virtual_registries/packages/maven/upstreams_spec.rb index 6092da87e4ad5..74253c7a093da 100644 --- a/spec/requests/api/virtual_registries/packages/maven/upstreams_spec.rb +++ b/ee/spec/requests/api/virtual_registries/packages/maven/upstreams_spec.rb @@ -26,6 +26,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'with valid registry' do it_behaves_like 'successful response' @@ -103,6 +104,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'with valid params' do where(:user_role, :status) do @@ -220,6 +222,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'with valid params' do it_behaves_like 'successful response' @@ -271,6 +274,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' where(:user_role, :status) do :owner | :ok @@ -353,6 +357,7 @@ it_behaves_like 'disabled virtual_registry_maven feature flag' it_behaves_like 'maven virtual registry disabled dependency proxy' it_behaves_like 'maven virtual registry not authenticated user' + it_behaves_like 'maven virtual registry feature not licensed' context 'for different user roles' do where(:user_role, :status) do diff --git a/spec/support/shared_contexts/requests/api/maven_vreg_shared_context.rb b/ee/spec/support/shared_contexts/maven_vreg_shared_context.rb similarity index 96% rename from spec/support/shared_contexts/requests/api/maven_vreg_shared_context.rb rename to ee/spec/support/shared_contexts/maven_vreg_shared_context.rb index 6787cbc267e90..57ec0e5ebbfb2 100644 --- a/spec/support/shared_contexts/requests/api/maven_vreg_shared_context.rb +++ b/ee/spec/support/shared_contexts/maven_vreg_shared_context.rb @@ -23,6 +23,7 @@ before do stub_config(dependency_proxy: { enabled: true }) # not enabled by default + stub_licensed_features(packages_virtual_registry: true) end def token_header(token) diff --git a/spec/support/shared_examples/requests/api/virtual_registries/maven_packages_shared_examples.rb b/ee/spec/support/shared_examples/requests/api/virtual_registries/maven_packages_shared_examples.rb similarity index 85% rename from spec/support/shared_examples/requests/api/virtual_registries/maven_packages_shared_examples.rb rename to ee/spec/support/shared_examples/requests/api/virtual_registries/maven_packages_shared_examples.rb index 697ce59cb0d6f..4d8e824224c27 100644 --- a/spec/support/shared_examples/requests/api/virtual_registries/maven_packages_shared_examples.rb +++ b/ee/spec/support/shared_examples/requests/api/virtual_registries/maven_packages_shared_examples.rb @@ -41,3 +41,11 @@ end end end + +RSpec.shared_examples 'maven virtual registry feature not licensed' do + before do + stub_licensed_features(packages_virtual_registry: false) + end + + it_behaves_like 'returning response status', :not_found +end diff --git a/lib/api/api.rb b/lib/api/api.rb index f5623c218bdc2..ecf11f0603412 100644 --- a/lib/api/api.rb +++ b/lib/api/api.rb @@ -359,10 +359,6 @@ def initialize(location_url) mount ::API::Users mount ::API::UserCounts mount ::API::UserRunners - mount ::API::VirtualRegistries::Packages::Maven::Registries - mount ::API::VirtualRegistries::Packages::Maven::Upstreams - mount ::API::VirtualRegistries::Packages::Maven::Cache::Entries - mount ::API::VirtualRegistries::Packages::Maven::Endpoints mount ::API::WebCommits mount ::API::Wikis -- GitLab