summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/import_export/uploads_manager_spec.rb
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2018-08-14 11:20:21 -0700
committerMichael Kozono <mkozono@gmail.com>2018-08-14 11:33:02 -0700
commit029d5eeb9d2520ba341b3e4e0939e85b4ebd7033 (patch)
tree65086c7fb5c2535d6bfb607eea561796e6d3cf8a /spec/lib/gitlab/import_export/uploads_manager_spec.rb
parent197a305b845246c5a39266a64c167169f09ac787 (diff)
downloadgitlab-ce-029d5eeb9d2520ba341b3e4e0939e85b4ebd7033.tar.gz
Resolve "Orphaned upload files are accessible via project exports"
Diffstat (limited to 'spec/lib/gitlab/import_export/uploads_manager_spec.rb')
-rw-r--r--spec/lib/gitlab/import_export/uploads_manager_spec.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/lib/gitlab/import_export/uploads_manager_spec.rb b/spec/lib/gitlab/import_export/uploads_manager_spec.rb
index 9c3870a0af8..f799de18cd0 100644
--- a/spec/lib/gitlab/import_export/uploads_manager_spec.rb
+++ b/spec/lib/gitlab/import_export/uploads_manager_spec.rb
@@ -36,6 +36,38 @@ describe Gitlab::ImportExport::UploadsManager do
expect(File).to exist(exported_file_path)
end
+
+ context 'with orphaned project upload files' do
+ let(:orphan_path) { File.join(FileUploader.absolute_base_dir(project), 'f93f088ddf492ffd950cf059002cbbb6', 'orphan.jpg') }
+ let(:exported_orphan_path) { "#{shared.export_path}/uploads/f93f088ddf492ffd950cf059002cbbb6/orphan.jpg" }
+
+ before do
+ FileUtils.mkdir_p(File.dirname(orphan_path))
+ FileUtils.touch(orphan_path)
+ end
+
+ after do
+ File.delete(orphan_path) if File.exist?(orphan_path)
+ end
+
+ it 'excludes orphaned upload files' do
+ manager.save
+
+ expect(File).not_to exist(exported_orphan_path)
+ end
+ end
+
+ context 'with an upload missing its file' do
+ before do
+ File.delete(upload.absolute_path)
+ end
+
+ it 'does not cause errors' do
+ manager.save
+
+ expect(shared.errors).to be_empty
+ end
+ end
end
context 'using object storage' do