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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-10-20 12:40:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-10-20 12:40:42 +0300
commitee664acb356f8123f4f6b00b73c1e1cf0866c7fb (patch)
treef8479f94a28f66654c6a4f6fb99bad6b4e86a40e /spec/uploaders
parent62f7d5c5b69180e82ae8196b7b429eeffc8e7b4f (diff)
Add latest changes from gitlab-org/gitlab@15-5-stable-eev15.5.0-rc42
Diffstat (limited to 'spec/uploaders')
-rw-r--r--spec/uploaders/job_artifact_uploader_spec.rb8
-rw-r--r--spec/uploaders/object_storage/cdn/google_cdn_spec.rb22
-rw-r--r--spec/uploaders/object_storage/cdn_spec.rb44
-rw-r--r--spec/uploaders/packages/rpm/repository_file_uploader_spec.rb45
4 files changed, 111 insertions, 8 deletions
diff --git a/spec/uploaders/job_artifact_uploader_spec.rb b/spec/uploaders/job_artifact_uploader_spec.rb
index 9ccf216d1fc..a7fd040837f 100644
--- a/spec/uploaders/job_artifact_uploader_spec.rb
+++ b/spec/uploaders/job_artifact_uploader_spec.rb
@@ -23,6 +23,14 @@ RSpec.describe JobArtifactUploader do
it_behaves_like "builds correct paths",
store_dir: %r[\h{2}/\h{2}/\h{64}/\d{4}_\d{1,2}_\d{1,2}/\d+/\d+\z]
+
+ describe '#cdn_enabled_url' do
+ it 'returns URL and false' do
+ result = uploader.cdn_enabled_url(nil, '127.0.0.1')
+
+ expect(result.used_cdn).to be false
+ end
+ end
end
context 'file is stored in valid local_path' do
diff --git a/spec/uploaders/object_storage/cdn/google_cdn_spec.rb b/spec/uploaders/object_storage/cdn/google_cdn_spec.rb
index b72f6d66d69..8e209dabddc 100644
--- a/spec/uploaders/object_storage/cdn/google_cdn_spec.rb
+++ b/spec/uploaders/object_storage/cdn/google_cdn_spec.rb
@@ -30,6 +30,8 @@ RSpec.describe ObjectStorage::CDN::GoogleCDN,
'2600:1900:4180:0000:0000:0000:0000:0000' | false
'10.10.1.5' | false
'fc00:0000:0000:0000:0000:0000:0000:0000' | false
+ '127.0.0.1' | false
+ '169.254.0.0' | false
end
with_them do
@@ -68,6 +70,26 @@ RSpec.describe ObjectStorage::CDN::GoogleCDN,
expect(subject.use_cdn?(public_ip)).to be false
end
end
+
+ context 'when URL is a domain' do
+ before do
+ options[:url] = 'cdn.gitlab.example.com'
+ end
+
+ it 'returns false' do
+ expect(subject.use_cdn?(public_ip)).to be false
+ end
+ end
+
+ context 'when URL uses HTTP' do
+ before do
+ options[:url] = 'http://cdn.gitlab.example.com'
+ end
+
+ it 'returns false' do
+ expect(subject.use_cdn?(public_ip)).to be false
+ end
+ end
end
describe '#signed_url' do
diff --git a/spec/uploaders/object_storage/cdn_spec.rb b/spec/uploaders/object_storage/cdn_spec.rb
index 246cb1bf349..f99450b274f 100644
--- a/spec/uploaders/object_storage/cdn_spec.rb
+++ b/spec/uploaders/object_storage/cdn_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe ObjectStorage::CDN do
'provider' => 'google',
'url' => 'https://gitlab.example.com',
'key_name' => 'test-key',
- 'key' => '12345'
+ 'key' => Base64.urlsafe_encode64('12345')
}
}
}.freeze
@@ -31,21 +31,49 @@ RSpec.describe ObjectStorage::CDN do
end
let(:object) { build_stubbed(:user) }
+ let(:public_ip) { '18.245.0.1' }
+
+ let_it_be(:project) { build(:project) }
subject { uploader_class.new(object, :file) }
context 'with CDN config' do
before do
+ stub_artifacts_object_storage(enabled: true)
uploader_class.options = Settingslogic.new(Gitlab.config.uploads.deep_merge(cdn_options))
end
- describe '#use_cdn?' do
- it 'returns true' do
- expect_next_instance_of(ObjectStorage::CDN::GoogleCDN) do |cdn|
- expect(cdn).to receive(:use_cdn?).and_return(true)
+ describe '#cdn_enabled_url' do
+ context 'with ci_job_artifacts_cdn feature flag disabled' do
+ before do
+ stub_feature_flags(ci_job_artifacts_cdn: false)
end
- expect(subject.use_cdn?('18.245.0.1')).to be true
+ it 'calls #url' do
+ expect(subject).to receive(:url).and_call_original
+ expect(subject).not_to receive(:cdn_signed_url)
+
+ result = subject.cdn_enabled_url(project, public_ip)
+
+ expect(result.used_cdn).to be false
+ end
+ end
+
+ context 'with ci_job_artifacts_cdn feature flag enabled' do
+ it 'calls #cdn_signed_url' do
+ expect(subject).not_to receive(:url)
+ expect(subject).to receive(:cdn_signed_url).and_call_original
+
+ result = subject.cdn_enabled_url(project, public_ip)
+
+ expect(result.used_cdn).to be true
+ end
+ end
+ end
+
+ describe '#use_cdn?' do
+ it 'returns true' do
+ expect(subject.use_cdn?(public_ip)).to be true
end
end
@@ -67,7 +95,7 @@ RSpec.describe ObjectStorage::CDN do
describe '#use_cdn?' do
it 'returns false' do
- expect(subject.use_cdn?('18.245.0.1')).to be false
+ expect(subject.use_cdn?(public_ip)).to be false
end
end
end
@@ -79,7 +107,7 @@ RSpec.describe ObjectStorage::CDN do
end
it 'raises an error' do
- expect { subject.use_cdn?('18.245.0.1') }.to raise_error("Unknown CDN provider: amazon")
+ expect { subject.use_cdn?(public_ip) }.to raise_error("Unknown CDN provider: amazon")
end
end
end
diff --git a/spec/uploaders/packages/rpm/repository_file_uploader_spec.rb b/spec/uploaders/packages/rpm/repository_file_uploader_spec.rb
new file mode 100644
index 00000000000..720e109533b
--- /dev/null
+++ b/spec/uploaders/packages/rpm/repository_file_uploader_spec.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+RSpec.describe Packages::Rpm::RepositoryFileUploader do
+ let_it_be(:repository_file) { create(:rpm_repository_file) }
+ let(:uploader) { described_class.new(repository_file, :file) }
+ let(:path) { Gitlab.config.packages.storage_path }
+
+ subject { uploader }
+
+ it_behaves_like 'builds correct paths',
+ store_dir: %r[^\h{2}/\h{2}/\h{64}/projects/\d+/rpm/repository_files/\d+$],
+ cache_dir: %r{/packages/tmp/cache},
+ work_dir: %r{/packages/tmp/work}
+
+ context 'when object store is remote' do
+ before do
+ stub_rpm_repository_file_object_storage
+ end
+
+ include_context 'with storage', described_class::Store::REMOTE
+
+ it_behaves_like 'builds correct paths',
+ store_dir: %r[^\h{2}/\h{2}/\h{64}/projects/\d+/rpm/repository_files/\d+$]
+ end
+
+ describe 'remote file' do
+ let(:repository_file) { create(:rpm_repository_file, :object_storage) }
+
+ context 'with object storage enabled' do
+ before do
+ stub_rpm_repository_file_object_storage
+ end
+
+ it 'can store file remotely' do
+ allow(ObjectStorage::BackgroundMoveWorker).to receive(:perform_async)
+
+ repository_file
+
+ expect(repository_file.file_store).to eq(described_class::Store::REMOTE)
+ expect(repository_file.file.path).not_to be_blank
+ end
+ end
+ end
+end