diff options
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.rb | 32 |
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 |