From d988f63f74cde5c8e9e84a870f980e954d8e23c4 Mon Sep 17 00:00:00 2001 From: Adie Po Date: Sun, 14 Sep 2025 11:26:51 +0200 Subject: [PATCH] Extract common code from Maven shared context for reuse Extract maven and container virtual registry's similar lines of code and reuse them as an included context --- .../container_vreg_shared_context.rb | 77 ------------------- ...b => virtual_registries_shared_context.rb} | 34 ++++++-- 2 files changed, 26 insertions(+), 85 deletions(-) delete mode 100644 ee/spec/support/shared_contexts/container_vreg_shared_context.rb rename ee/spec/support/shared_contexts/{maven_vreg_shared_context.rb => virtual_registries_shared_context.rb} (83%) diff --git a/ee/spec/support/shared_contexts/container_vreg_shared_context.rb b/ee/spec/support/shared_contexts/container_vreg_shared_context.rb deleted file mode 100644 index 14f8a8c3ee4d02..00000000000000 --- a/ee/spec/support/shared_contexts/container_vreg_shared_context.rb +++ /dev/null @@ -1,77 +0,0 @@ -# frozen_string_literal: true - -RSpec.shared_context 'for container virtual registry api setup' do - include WorkhorseHelpers - include HttpBasicAuthHelpers - - let_it_be(:group) { create(:group) } - let_it_be_with_reload(:registry) { create(:virtual_registries_container_registry, group: group) } - let_it_be(:upstream) { create(:virtual_registries_container_upstream, registries: [registry]) } - - let_it_be(:project) { create(:project, namespace: group) } - let_it_be(:user) { create(:user, owner_of: project) } - let_it_be(:job) { create(:ci_build, :running, user: user, project: project) } - let_it_be(:deploy_token) do - create(:deploy_token, :group, groups: [group], read_virtual_registry: true) - end - - let_it_be(:oauth_application) { create(:oauth_application, owner: user) } - let_it_be(:oauth_token) do - create(:oauth_access_token, application_id: oauth_application.id, resource_owner_id: user.id, scopes: [:api]) - end - - let(:personal_access_token) { create(:personal_access_token, user: user) } - let(:headers) { token_header(:personal_access_token, sent_as: :header) } - - before do - stub_config(dependency_proxy: { enabled: true }) # not enabled by default - stub_licensed_features(container_virtual_registry: true) - end - - def token_header(token, sent_as: :header) - case token - when :personal_access_token - header_name = 'PRIVATE-TOKEN' - token_value = personal_access_token.token - when :deploy_token - header_name = 'Deploy-Token' - token_value = deploy_token.token - when :job_token - header_name = 'Job-Token' - token_value = job.token - when :oauth_token - # oauth tokens don't support a custom header. - # they should always be sent with the bearer header. - token_value = oauth_token.plaintext_token - end - - case sent_as - when :header - { header_name => token_value } - when :bearer_header - { 'Authorization' => "Bearer #{token_value}" } - end - end - - def token_query_param(token) - case token - when :personal_access_token - { private_token: personal_access_token.token } - when :job_token - { job_token: job.token } - when :oauth_token - { access_token: oauth_token.plaintext_token } - end - end - - def token_basic_auth(token) - case token - when :personal_access_token - user_basic_auth_header(user, personal_access_token) - when :deploy_token - deploy_token_basic_auth_header(deploy_token) - when :job_token - job_basic_auth_header(job) - end - end -end diff --git a/ee/spec/support/shared_contexts/maven_vreg_shared_context.rb b/ee/spec/support/shared_contexts/virtual_registries_shared_context.rb similarity index 83% rename from ee/spec/support/shared_contexts/maven_vreg_shared_context.rb rename to ee/spec/support/shared_contexts/virtual_registries_shared_context.rb index 61340ecec99cbe..6712a2951e3422 100644 --- a/ee/spec/support/shared_contexts/maven_vreg_shared_context.rb +++ b/ee/spec/support/shared_contexts/virtual_registries_shared_context.rb @@ -1,16 +1,10 @@ # frozen_string_literal: true -RSpec.shared_context 'for maven virtual registry api setup' do +RSpec.shared_context 'for virtual registry api setup' do include WorkhorseHelpers include HttpBasicAuthHelpers let_it_be(:group) { create(:group) } - let_it_be_with_reload(:registry) { create(:virtual_registries_packages_maven_registry, group: group) } - let_it_be(:upstream) { create(:virtual_registries_packages_maven_upstream, registries: [registry]) } - let_it_be_with_reload(:cache_entry) do - create(:virtual_registries_packages_maven_cache_entry, :with_download_metrics, upstream: upstream) - end - let_it_be(:project) { create(:project, namespace: group) } let_it_be(:user) { create(:user, owner_of: project) } let_it_be(:job) { create(:ci_build, :running, user: user, project: project) } @@ -28,7 +22,6 @@ before do stub_config(dependency_proxy: { enabled: true }) # not enabled by default - stub_licensed_features(packages_virtual_registry: true) end def token_header(token, sent_as: :header) @@ -78,3 +71,28 @@ def token_basic_auth(token) end end end + +RSpec.shared_context 'for maven virtual registry api setup' do + include_context 'for virtual registry api setup' + + let_it_be_with_reload(:registry) { create(:virtual_registries_packages_maven_registry, group: group) } + let_it_be(:upstream) { create(:virtual_registries_packages_maven_upstream, registries: [registry]) } + let_it_be_with_reload(:cache_entry) do + create(:virtual_registries_packages_maven_cache_entry, :with_download_metrics, upstream: upstream) + end + + before do + stub_licensed_features(packages_virtual_registry: true) + end +end + +RSpec.shared_context 'for container virtual registry api setup' do + include_context 'for virtual registry api setup' + + let_it_be_with_reload(:registry) { create(:virtual_registries_container_registry, group: group) } + let_it_be(:upstream) { create(:virtual_registries_container_upstream, registries: [registry]) } + + before do + stub_licensed_features(container_virtual_registry: true) + end +end -- GitLab