summaryrefslogtreecommitdiff
path: root/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/projects/lfs_pointers/lfs_download_service_spec.rb')
-rw-r--r--spec/services/projects/lfs_pointers/lfs_download_service_spec.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb b/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
index 1fb6dae0c08..f27ebb2e19e 100644
--- a/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
+++ b/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
@@ -106,6 +106,26 @@ RSpec.describe Projects::LfsPointers::LfsDownloadService do
end
end
+ context 'when file download returns a redirect' do
+ let(:redirect_link) { 'http://external-link' }
+
+ before do
+ stub_full_request(download_link).to_return(status: 301, body: 'You are being redirected', headers: { 'Location' => redirect_link } )
+ stub_full_request(redirect_link).to_return(body: lfs_content)
+ end
+
+ it_behaves_like 'lfs object is created'
+
+ it 'correctly stores lfs object' do
+ subject.execute
+
+ new_lfs_object = LfsObject.first
+
+ expect(new_lfs_object).to have_attributes(oid: oid, size: size)
+ expect(File.binread(new_lfs_object.file.file.file)).to eq lfs_content
+ end
+ end
+
context 'when downloaded lfs file has a different size' do
let(:size) { 1 }
@@ -252,6 +272,18 @@ RSpec.describe Projects::LfsPointers::LfsDownloadService do
context 'and first fragments are the same' do
let(:lfs_content) { existing_lfs_object.file.read }
+ context 'when lfs_link_existing_object feature flag disabled' do
+ before do
+ stub_feature_flags(lfs_link_existing_object: false)
+ end
+
+ it 'does not call link_existing_lfs_object!' do
+ expect(subject).not_to receive(:link_existing_lfs_object!)
+
+ subject.execute
+ end
+ end
+
it 'returns success' do
expect(subject.execute).to eq({ status: :success })
end