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/packages/dependency_proxy_helpers_spec.rb62
-rw-r--r--spec/lib/api/helpers/runner_helpers_spec.rb71
-rw-r--r--spec/lib/api/helpers/runner_spec.rb69
3 files changed, 45 insertions, 157 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
diff --git a/spec/lib/api/helpers/runner_helpers_spec.rb b/spec/lib/api/helpers/runner_helpers_spec.rb
deleted file mode 100644
index 65b35845aab..00000000000
--- a/spec/lib/api/helpers/runner_helpers_spec.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe API::Helpers::Runner do
- let(:ip_address) { '1.2.3.4' }
- let(:runner_class) do
- Class.new do
- include API::Helpers
- include API::Helpers::Runner
-
- attr_accessor :params
-
- def initialize(params)
- @params = params
- end
-
- def ip_address
- '1.2.3.4'
- end
- end
- end
-
- let(:runner_helper) { runner_class.new(runner_params) }
-
- describe '#get_runner_details_from_request' do
- context 'when no runner info is present' do
- let(:runner_params) { {} }
-
- it 'returns the runner IP' do
- expect(runner_helper.get_runner_details_from_request).to eq({ ip_address: ip_address })
- end
- end
-
- context 'when runner info is present' do
- let(:name) { 'runner' }
- let(:version) { '1.2.3' }
- let(:revision) { '10.0' }
- let(:platform) { 'test' }
- let(:architecture) { 'arm' }
- let(:config) { { 'gpus' => 'all' } }
- let(:runner_params) do
- {
- 'info' =>
- {
- 'name' => name,
- 'version' => version,
- 'revision' => revision,
- 'platform' => platform,
- 'architecture' => architecture,
- 'config' => config,
- 'ignored' => 1
- }
- }
- end
-
- subject(:details) { runner_helper.get_runner_details_from_request }
-
- it 'extracts the runner details', :aggregate_failures do
- expect(details.keys).to match_array(%w(name version revision platform architecture config ip_address))
- expect(details['name']).to eq(name)
- expect(details['version']).to eq(version)
- expect(details['revision']).to eq(revision)
- expect(details['platform']).to eq(platform)
- expect(details['architecture']).to eq(architecture)
- expect(details['config']).to eq(config)
- expect(details['ip_address']).to eq(ip_address)
- end
- end
- end
-end
diff --git a/spec/lib/api/helpers/runner_spec.rb b/spec/lib/api/helpers/runner_spec.rb
deleted file mode 100644
index e55c20b7ab6..00000000000
--- a/spec/lib/api/helpers/runner_spec.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe API::Helpers::Runner do
- let(:helper) { Class.new { include API::Helpers::Runner }.new }
-
- before do
- allow(helper).to receive(:env).and_return({})
- end
-
- describe '#current_job' do
- let(:build) { create(:ci_build, :running) }
-
- it 'handles sticking of a build when a build ID is specified' do
- allow(helper).to receive(:params).and_return(id: build.id)
-
- expect(Gitlab::Database::LoadBalancing::RackMiddleware)
- .to receive(:stick_or_unstick)
- .with({}, :build, build.id)
-
- helper.current_job
- end
-
- it 'does not handle sticking if no build ID was specified' do
- allow(helper).to receive(:params).and_return({})
-
- expect(Gitlab::Database::LoadBalancing::RackMiddleware)
- .not_to receive(:stick_or_unstick)
-
- helper.current_job
- end
-
- it 'returns the build if one could be found' do
- allow(helper).to receive(:params).and_return(id: build.id)
-
- expect(helper.current_job).to eq(build)
- end
- end
-
- describe '#current_runner' do
- let(:runner) { create(:ci_runner, token: 'foo') }
-
- it 'handles sticking of a runner if a token is specified' do
- allow(helper).to receive(:params).and_return(token: runner.token)
-
- expect(Gitlab::Database::LoadBalancing::RackMiddleware)
- .to receive(:stick_or_unstick)
- .with({}, :runner, runner.token)
-
- helper.current_runner
- end
-
- it 'does not handle sticking if no token was specified' do
- allow(helper).to receive(:params).and_return({})
-
- expect(Gitlab::Database::LoadBalancing::RackMiddleware)
- .not_to receive(:stick_or_unstick)
-
- helper.current_runner
- end
-
- it 'returns the runner if one could be found' do
- allow(helper).to receive(:params).and_return(token: runner.token)
-
- expect(helper.current_runner).to eq(runner)
- end
- end
-end