Commit 3a114c2d authored by James Lopez's avatar James Lopez

fix specs

parent 7c9f2168
...@@ -11,7 +11,7 @@ module Gitlab ...@@ -11,7 +11,7 @@ module Gitlab
end end
def save def save
copy_files(@from, default_uploads_path) if File.directory?(@from) copy_files(@from, uploads_export_path) if File.directory?(@from)
if File.file?(@from) && @relative_export_path == 'avatar' if File.file?(@from) && @relative_export_path == 'avatar'
copy_files(@from, File.join(uploads_export_path, @project.avatar.filename)) copy_files(@from, File.join(uploads_export_path, @project.avatar.filename))
...@@ -29,9 +29,7 @@ module Gitlab ...@@ -29,9 +29,7 @@ module Gitlab
Dir["#{uploads_export_path}/**/*"].each do |upload| Dir["#{uploads_export_path}/**/*"].each do |upload|
next if File.directory?(upload) next if File.directory?(upload)
upload_path = File.join(uploads_export_path, upload) UploadService.new(@project, File.open(upload, 'r'), FileUploader).execute
UploadService.new(@project, File.open(upload_path, 'r'), FileUploader).execute
end end
true true
......
...@@ -2,9 +2,16 @@ module Gitlab ...@@ -2,9 +2,16 @@ module Gitlab
module ImportExport module ImportExport
class UploadsRestorer < UploadsSaver class UploadsRestorer < UploadsSaver
def restore def restore
return true unless File.directory?(uploads_export_path) if Gitlab::ImportExport.object_storage?
Gitlab::ImportExport::UploadsManager.new(
copy_files(uploads_export_path, uploads_path) project: @project,
shared: @shared
).restore
elsif File.directory?(uploads_export_path)
copy_files(uploads_export_path, uploads_path)
else
true
end
rescue => e rescue => e
@shared.error(e) @shared.error(e)
false false
......
...@@ -11,8 +11,8 @@ module Gitlab ...@@ -11,8 +11,8 @@ module Gitlab
def save def save
Gitlab::ImportExport::UploadsManager.new( Gitlab::ImportExport::UploadsManager.new(
project: @project, project: @project,
shared: @shared, shared: @shared
).copy ).save
rescue => e rescue => e
@shared.error(e) @shared.error(e)
false false
......
...@@ -17,7 +17,7 @@ describe Gitlab::ImportExport::UploadsManager do ...@@ -17,7 +17,7 @@ describe Gitlab::ImportExport::UploadsManager do
FileUtils.rm_rf(shared.export_path) FileUtils.rm_rf(shared.export_path)
end end
describe '#copy' do describe '#save' do
context 'when the project has uploads locally stored' do context 'when the project has uploads locally stored' do
let(:upload) { create(:upload, :issuable_upload, :with_file, model: project) } let(:upload) { create(:upload, :issuable_upload, :with_file, model: project) }
...@@ -26,13 +26,15 @@ describe Gitlab::ImportExport::UploadsManager do ...@@ -26,13 +26,15 @@ describe Gitlab::ImportExport::UploadsManager do
end end
it 'does not cause errors' do it 'does not cause errors' do
manager.copy manager.save
expect(shared.errors).to be_empty expect(shared.errors).to be_empty
end end
it 'copies the file in the correct location when there is an upload' do it 'copies the file in the correct location when there is an upload' do
manager.copy manager.save
puts exported_file_path
expect(File).to exist(exported_file_path) expect(File).to exist(exported_file_path)
end end
...@@ -52,10 +54,29 @@ describe Gitlab::ImportExport::UploadsManager do ...@@ -52,10 +54,29 @@ describe Gitlab::ImportExport::UploadsManager do
expect(fake_uri).to receive(:open).and_return(StringIO.new('File content')) expect(fake_uri).to receive(:open).and_return(StringIO.new('File content'))
expect(URI).to receive(:parse).and_return(fake_uri) expect(URI).to receive(:parse).and_return(fake_uri)
manager.copy manager.save
expect(File.read(exported_file_path)).to eq('File content') expect(File.read(exported_file_path)).to eq('File content')
end end
end end
describe '#restore' do
context 'using object storage' do
before do
stub_feature_flags(import_export_object_storage: true)
stub_uploads_object_storage(FileUploader)
FileUtils.mkdir_p(File.join(shared.export_path, 'uploads/random'))
FileUtils.touch(File.join(shared.export_path, 'uploads/random', "dummy.txt"))
end
it 'downloads the file to include in an archive' do
manager.restore
expect(project.uploads.size).to eq(1)
expect(project.uploads.first.build_uploader.filename).to eq('dummy.txt')
end
end
end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment