2018-07-30 14:14:38 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Gitlab::Cleanup::RemoteUploads do
|
|
|
|
context 'when object_storage is enabled' do
|
|
|
|
let(:connection) { double }
|
|
|
|
let(:directory) { double }
|
|
|
|
let!(:uploads) do
|
|
|
|
[
|
|
|
|
create(:upload, path: 'dir/file1', store: ObjectStorage::Store::REMOTE),
|
|
|
|
create(:upload, path: 'dir/file2', store: ObjectStorage::Store::LOCAL)
|
|
|
|
]
|
|
|
|
end
|
|
|
|
let(:remote_files) do
|
|
|
|
[
|
|
|
|
double(key: 'dir/file1'),
|
|
|
|
double(key: 'dir/file2'),
|
|
|
|
double(key: 'dir/file3'),
|
|
|
|
double(key: 'lost_and_found/dir/file3')
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
before do
|
|
|
|
stub_uploads_object_storage(FileUploader)
|
|
|
|
|
|
|
|
expect(::Fog::Storage).to receive(:new).and_return(connection)
|
|
|
|
|
2018-12-21 06:16:15 -05:00
|
|
|
expect(connection).to receive(:directories).and_return(double(new: directory))
|
2018-07-30 14:14:38 -04:00
|
|
|
expect(directory).to receive(:files).and_return(remote_files)
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when dry_run is set to false' do
|
|
|
|
subject { described_class.new.run!(dry_run: false) }
|
|
|
|
|
|
|
|
it 'moves files that are not in uploads table' do
|
|
|
|
expect(remote_files[0]).not_to receive(:copy)
|
|
|
|
expect(remote_files[0]).not_to receive(:destroy)
|
|
|
|
expect(remote_files[1]).to receive(:copy)
|
|
|
|
expect(remote_files[1]).to receive(:destroy)
|
|
|
|
expect(remote_files[2]).to receive(:copy)
|
|
|
|
expect(remote_files[2]).to receive(:destroy)
|
|
|
|
expect(remote_files[3]).not_to receive(:copy)
|
|
|
|
expect(remote_files[3]).not_to receive(:destroy)
|
|
|
|
|
|
|
|
subject
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when dry_run is set to true' do
|
|
|
|
subject { described_class.new.run!(dry_run: true) }
|
|
|
|
|
|
|
|
it 'does not move filese' do
|
|
|
|
expect(remote_files[0]).not_to receive(:copy)
|
|
|
|
expect(remote_files[0]).not_to receive(:destroy)
|
|
|
|
expect(remote_files[1]).not_to receive(:copy)
|
|
|
|
expect(remote_files[1]).not_to receive(:destroy)
|
|
|
|
expect(remote_files[2]).not_to receive(:copy)
|
|
|
|
expect(remote_files[2]).not_to receive(:destroy)
|
|
|
|
expect(remote_files[3]).not_to receive(:copy)
|
|
|
|
expect(remote_files[3]).not_to receive(:destroy)
|
|
|
|
|
|
|
|
subject
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when object_storage is not enabled' do
|
|
|
|
it 'does not connect to any storage' do
|
|
|
|
expect(::Fog::Storage).not_to receive(:new)
|
|
|
|
|
|
|
|
subject
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|