diff options
Diffstat (limited to 'spec/uploaders/object_storage/cdn_spec.rb')
-rw-r--r-- | spec/uploaders/object_storage/cdn_spec.rb | 88 |
1 files changed, 43 insertions, 45 deletions
diff --git a/spec/uploaders/object_storage/cdn_spec.rb b/spec/uploaders/object_storage/cdn_spec.rb index d6c638297fa..0c1966b4df2 100644 --- a/spec/uploaders/object_storage/cdn_spec.rb +++ b/spec/uploaders/object_storage/cdn_spec.rb @@ -3,19 +3,6 @@ require 'spec_helper' RSpec.describe ObjectStorage::CDN, feature_category: :build_artifacts do - let(:cdn_options) do - { - 'object_store' => { - 'cdn' => { - 'provider' => 'google', - 'url' => 'https://gitlab.example.com', - 'key_name' => 'test-key', - 'key' => Base64.urlsafe_encode64('12345') - } - } - }.freeze - end - let(:uploader_class) do Class.new(GitlabUploader) do include ObjectStorage::Concern @@ -39,44 +26,66 @@ RSpec.describe ObjectStorage::CDN, feature_category: :build_artifacts do subject { uploader_class.new(object, :file) } context 'with CDN config' do + let(:cdn_options) do + { + 'object_store' => { + 'cdn' => { + 'provider' => cdn_provider, + 'url' => 'https://gitlab.example.com', + 'key_name' => 'test-key', + 'key' => Base64.urlsafe_encode64('12345') + } + } + }.freeze + end + before do stub_artifacts_object_storage(enabled: true) - uploader_class.options = Settingslogic.new(Gitlab.config.uploads.deep_merge(cdn_options)) + options = Settingslogic.new(Gitlab.config.uploads.deep_merge(cdn_options)) + allow(uploader_class).to receive(:options).and_return(options) end - describe '#cdn_enabled_url' do - it 'calls #cdn_signed_url' do - expect(subject).not_to receive(:url) - expect(subject).to receive(:cdn_signed_url).with(query_params).and_call_original + context 'with a known CDN provider' do + let(:cdn_provider) { 'google' } - result = subject.cdn_enabled_url(public_ip, query_params) + describe '#cdn_enabled_url' do + it 'calls #cdn_signed_url' do + expect(subject).not_to receive(:url) + expect(subject).to receive(:cdn_signed_url).with(query_params).and_call_original + + result = subject.cdn_enabled_url(public_ip, query_params) - expect(result.used_cdn).to be true + 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 + describe '#use_cdn?' do + it 'returns true' do + expect(subject.use_cdn?(public_ip)).to be true + end end - end - describe '#cdn_signed_url' do - it 'returns a URL' do - expect_next_instance_of(ObjectStorage::CDN::GoogleCDN) do |cdn| - expect(cdn).to receive(:signed_url).and_return("https://cdn.example.com/path") + describe '#cdn_signed_url' do + it 'returns a URL' do + expect_next_instance_of(ObjectStorage::CDN::GoogleCDN) do |cdn| + expect(cdn).to receive(:signed_url).and_return("https://cdn.example.com/path") + end + + expect(subject.cdn_signed_url).to eq("https://cdn.example.com/path") end + end + end + + context 'with an unknown CDN provider' do + let(:cdn_provider) { 'amazon' } - expect(subject.cdn_signed_url).to eq("https://cdn.example.com/path") + it 'raises an error' do + expect { subject.use_cdn?(public_ip) }.to raise_error("Unknown CDN provider: amazon") end end end context 'without CDN config' do - before do - uploader_class.options = Gitlab.config.uploads - end - describe '#cdn_enabled_url' do it 'calls #url' do expect(subject).not_to receive(:cdn_signed_url) @@ -94,15 +103,4 @@ RSpec.describe ObjectStorage::CDN, feature_category: :build_artifacts do end end end - - context 'with an unknown CDN provider' do - before do - cdn_options['object_store']['cdn']['provider'] = 'amazon' - uploader_class.options = Settingslogic.new(Gitlab.config.uploads.deep_merge(cdn_options)) - end - - it 'raises an error' do - expect { subject.use_cdn?(public_ip) }.to raise_error("Unknown CDN provider: amazon") - end - end end |