summaryrefslogtreecommitdiff
path: root/spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-08-19 09:08:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-08-19 09:08:42 +0000
commitb76ae638462ab0f673e5915986070518dd3f9ad3 (patch)
treebdab0533383b52873be0ec0eb4d3c66598ff8b91 /spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb
parent434373eabe7b4be9593d18a585fb763f1e5f1a6f (diff)
downloadgitlab-ce-b76ae638462ab0f673e5915986070518dd3f9ad3.tar.gz
Add latest changes from gitlab-org/gitlab@14-2-stable-eev14.2.0-rc42
Diffstat (limited to 'spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb')
-rw-r--r--spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb62
1 files changed, 45 insertions, 17 deletions
diff --git a/spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb b/spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb
index 99b52236771..ae0c0f53acd 100644
--- a/spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb
+++ b/spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
let_it_be(:helper) { Class.new.include(described_class).new }
- describe 'redirect_registry_request' do
+ describe '#redirect_registry_request' do
using RSpec::Parameterized::TableSyntax
let(:options) { {} }
@@ -13,7 +13,7 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
subject { helper.redirect_registry_request(forward_to_registry, package_type, options) { helper.fallback } }
before do
- allow(helper).to receive(:options).and_return(for: API::NpmInstancePackages)
+ allow(helper).to receive(:options).and_return(for: described_class)
end
shared_examples 'executing fallback' do
@@ -34,38 +34,66 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
subject
- expect_snowplow_event(category: 'API::NpmInstancePackages', action: 'npm_request_forward')
+ expect_snowplow_event(category: described_class.to_s, action: "#{package_type}_request_forward")
end
end
- context 'with npm packages' do
- let(:package_type) { :npm }
+ %i[npm pypi].each do |forwardable_package_type|
+ context "with #{forwardable_package_type} packages" do
+ include_context 'dependency proxy helpers context'
- where(:application_setting, :forward_to_registry, :example_name) do
- true | true | 'executing redirect'
- true | false | 'executing fallback'
- false | true | 'executing fallback'
- false | false | 'executing fallback'
- end
+ let(:package_type) { forwardable_package_type }
- with_them do
- before do
- stub_application_setting(npm_package_requests_forwarding: application_setting)
+ where(:application_setting, :forward_to_registry, :example_name) do
+ true | true | 'executing redirect'
+ true | false | 'executing fallback'
+ false | true | 'executing fallback'
+ false | false | 'executing fallback'
end
- it_behaves_like params[:example_name]
+ with_them do
+ before do
+ allow_fetch_application_setting(attribute: "#{forwardable_package_type}_package_requests_forwarding", return_value: application_setting)
+ end
+
+ it_behaves_like params[:example_name]
+ end
end
end
- context 'with non-forwardable packages' do
+ context 'with non-forwardable package type' do
let(:forward_to_registry) { true }
before do
stub_application_setting(npm_package_requests_forwarding: true)
+ stub_application_setting(pypi_package_requests_forwarding: true)
end
- Packages::Package.package_types.keys.without('npm').each do |pkg_type|
+ Packages::Package.package_types.keys.without('npm', 'pypi').each do |pkg_type|
context "#{pkg_type}" do
+ let(:package_type) { pkg_type.to_sym }
+
+ it 'raises an error' do
+ expect { subject }.to raise_error(ArgumentError, "Can't find application setting for package_type #{package_type}")
+ end
+ end
+ end
+ end
+
+ describe '#registry_url' do
+ subject { helper.registry_url(package_type, package_name: 'test') }
+
+ where(:package_type, :expected_result) do
+ :npm | 'https://registry.npmjs.org/test'
+ :pypi | 'https://pypi.org/simple/test/'
+ end
+
+ with_them do
+ it { is_expected.to eq(expected_result) }
+ end
+
+ Packages::Package.package_types.keys.without('npm', 'pypi').each do |pkg_type|
+ context "with non-forwardable package type #{pkg_type}" do
let(:package_type) { pkg_type }
it 'raises an error' do