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:
Diffstat (limited to 'spec/lib/api/helpers')
-rw-r--r--spec/lib/api/helpers/caching_spec.rb9
-rw-r--r--spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb50
-rw-r--r--spec/lib/api/helpers/packages_helpers_spec.rb44
-rw-r--r--spec/lib/api/helpers/pagination_spec.rb2
4 files changed, 88 insertions, 17 deletions
diff --git a/spec/lib/api/helpers/caching_spec.rb b/spec/lib/api/helpers/caching_spec.rb
index 38b7b386d5c..828af7b5f91 100644
--- a/spec/lib/api/helpers/caching_spec.rb
+++ b/spec/lib/api/helpers/caching_spec.rb
@@ -33,10 +33,7 @@ RSpec.describe API::Helpers::Caching, :use_clean_rails_redis_caching do
end
describe "#present_cached" do
- subject do
- instance.present_cached(presentable, **kwargs)
- end
-
+ let(:method) { :present_cached }
let(:kwargs) do
{
with: presenter,
@@ -44,6 +41,10 @@ RSpec.describe API::Helpers::Caching, :use_clean_rails_redis_caching do
}
end
+ subject do
+ instance.public_send(method, presentable, **kwargs)
+ end
+
context 'single object' do
let_it_be(:presentable) { create(:todo, project: project) }
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 ae0c0f53acd..aa4b0a137cd 100644
--- a/spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb
+++ b/spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb
@@ -8,6 +8,8 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
describe '#redirect_registry_request' do
using RSpec::Parameterized::TableSyntax
+ let_it_be(:project) { create(:project) }
+
let(:options) { {} }
subject { helper.redirect_registry_request(forward_to_registry, package_type, options) { helper.fallback } }
@@ -18,8 +20,8 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
shared_examples 'executing fallback' do
it 'redirects to package registry' do
- expect(helper).to receive(:registry_url).never
- expect(helper).to receive(:redirect).never
+ expect(helper).not_to receive(:registry_url)
+ expect(helper).not_to receive(:redirect)
expect(helper).to receive(:fallback).once
subject
@@ -30,7 +32,7 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
it 'redirects to package registry', :snowplow do
expect(helper).to receive(:registry_url).once
expect(helper).to receive(:redirect).once
- expect(helper).to receive(:fallback).never
+ expect(helper).not_to receive(:fallback)
subject
@@ -38,11 +40,12 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
end
end
- %i[npm pypi].each do |forwardable_package_type|
+ %i[maven npm pypi].each do |forwardable_package_type|
context "with #{forwardable_package_type} packages" do
include_context 'dependency proxy helpers context'
let(:package_type) { forwardable_package_type }
+ let(:options) { { project: project } }
where(:application_setting, :forward_to_registry, :example_name) do
true | true | 'executing redirect'
@@ -59,17 +62,41 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
it_behaves_like params[:example_name]
end
end
+
+ context 'when maven_central_request_forwarding is disabled' do
+ let(:package_type) { :maven }
+ let(:options) { { project: project } }
+
+ include_context 'dependency proxy helpers context'
+
+ where(:application_setting, :forward_to_registry) do
+ true | true
+ true | false
+ false | true
+ false | false
+ end
+
+ with_them do
+ before do
+ stub_feature_flags(maven_central_request_forwarding: false)
+ allow_fetch_application_setting(attribute: "maven_package_requests_forwarding", return_value: application_setting)
+ end
+
+ it_behaves_like 'executing fallback'
+ end
+ end
end
context 'with non-forwardable package type' do
let(:forward_to_registry) { true }
before do
+ stub_application_setting(maven_package_requests_forwarding: true)
stub_application_setting(npm_package_requests_forwarding: true)
stub_application_setting(pypi_package_requests_forwarding: true)
end
- Packages::Package.package_types.keys.without('npm', 'pypi').each do |pkg_type|
+ Packages::Package.package_types.keys.without('maven', 'npm', 'pypi').each do |pkg_type|
context "#{pkg_type}" do
let(:package_type) { pkg_type.to_sym }
@@ -81,18 +108,21 @@ RSpec.describe API::Helpers::Packages::DependencyProxyHelpers do
end
describe '#registry_url' do
- subject { helper.registry_url(package_type, package_name: 'test') }
+ subject { helper.registry_url(package_type, options) }
- where(:package_type, :expected_result) do
- :npm | 'https://registry.npmjs.org/test'
- :pypi | 'https://pypi.org/simple/test/'
+ where(:package_type, :expected_result, :params) do
+ :maven | 'https://repo.maven.apache.org/maven2/test/123' | { path: 'test', file_name: '123', project: project }
+ :npm | 'https://registry.npmjs.org/test' | { package_name: 'test' }
+ :pypi | 'https://pypi.org/simple/test/' | { package_name: 'test' }
end
with_them do
+ let(:options) { params }
+
it { is_expected.to eq(expected_result) }
end
- Packages::Package.package_types.keys.without('npm', 'pypi').each do |pkg_type|
+ Packages::Package.package_types.keys.without('maven', 'npm', 'pypi').each do |pkg_type|
context "with non-forwardable package type #{pkg_type}" do
let(:package_type) { pkg_type }
diff --git a/spec/lib/api/helpers/packages_helpers_spec.rb b/spec/lib/api/helpers/packages_helpers_spec.rb
index 0c51e25bad9..cd6e718ce98 100644
--- a/spec/lib/api/helpers/packages_helpers_spec.rb
+++ b/spec/lib/api/helpers/packages_helpers_spec.rb
@@ -5,6 +5,8 @@ require 'spec_helper'
RSpec.describe API::Helpers::PackagesHelpers do
let_it_be(:helper) { Class.new.include(described_class).new }
let_it_be(:project) { create(:project) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:package) { create(:package) }
describe 'authorize_packages_access!' do
subject { helper.authorize_packages_access!(project) }
@@ -17,7 +19,45 @@ RSpec.describe API::Helpers::PackagesHelpers do
end
end
- %i[read_package create_package destroy_package].each do |action|
+ describe 'authorize_read_package!' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:subject, :expected_class) do
+ ref(:project) | ::Packages::Policies::Project
+ ref(:group) | ::Packages::Policies::Group
+ ref(:package) | ::Packages::Package
+ end
+
+ with_them do
+ it 'calls authorize! with correct subject' do
+ expect(helper).to receive(:authorize!).with(:read_package, have_attributes(id: subject.id, class: expected_class))
+
+ expect(helper.send('authorize_read_package!', subject)).to eq nil
+ end
+ end
+
+ context 'with feature flag disabled' do
+ before do
+ stub_feature_flags(read_package_policy_rule: false)
+ end
+
+ where(:subject, :expected_class) do
+ ref(:project) | ::Project
+ ref(:group) | ::Group
+ ref(:package) | ::Packages::Package
+ end
+
+ with_them do
+ it 'calls authorize! with correct subject' do
+ expect(helper).to receive(:authorize!).with(:read_package, have_attributes(id: subject.id, class: expected_class))
+
+ expect(helper.send('authorize_read_package!', subject)).to eq nil
+ end
+ end
+ end
+ end
+
+ %i[create_package destroy_package].each do |action|
describe "authorize_#{action}!" do
subject { helper.send("authorize_#{action}!", project) }
@@ -40,7 +80,7 @@ RSpec.describe API::Helpers::PackagesHelpers do
context 'with packages enabled' do
it "doesn't call not_found!" do
- expect(helper).to receive(:not_found!).never
+ expect(helper).not_to receive(:not_found!)
expect(subject).to eq nil
end
diff --git a/spec/lib/api/helpers/pagination_spec.rb b/spec/lib/api/helpers/pagination_spec.rb
index a008c1adeac..ae6af5b540e 100644
--- a/spec/lib/api/helpers/pagination_spec.rb
+++ b/spec/lib/api/helpers/pagination_spec.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-require 'spec_helper'
+require 'fast_spec_helper'
RSpec.describe API::Helpers::Pagination do
subject { Class.new.include(described_class).new }