2019-02-15 15:39:39 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Uploads::Fog do
|
|
|
|
let(:data_store) { described_class.new }
|
|
|
|
|
|
|
|
before do
|
|
|
|
stub_uploads_object_storage(FileUploader)
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#available?' do
|
|
|
|
subject { data_store.available? }
|
|
|
|
|
|
|
|
context 'when object storage is enabled' do
|
|
|
|
it { is_expected.to be_truthy }
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when object storage is disabled' do
|
|
|
|
before do
|
|
|
|
stub_uploads_object_storage(FileUploader, enabled: false)
|
|
|
|
end
|
|
|
|
|
|
|
|
it { is_expected.to be_falsy }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'model with uploads' do
|
|
|
|
let(:project) { create(:project) }
|
|
|
|
let(:relation) { project.uploads }
|
|
|
|
|
|
|
|
describe '#keys' do
|
|
|
|
let!(:uploads) { create_list(:upload, 2, :object_storage, uploader: FileUploader, model: project) }
|
2020-03-09 13:42:32 +05:30
|
|
|
|
2019-02-15 15:39:39 +05:30
|
|
|
subject { data_store.keys(relation) }
|
|
|
|
|
|
|
|
it 'returns keys' do
|
|
|
|
is_expected.to match_array(relation.pluck(:path))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#delete_keys' do
|
|
|
|
let(:keys) { data_store.keys(relation) }
|
|
|
|
let!(:uploads) { create_list(:upload, 2, :with_file, :issuable_upload, model: project) }
|
2020-03-09 13:42:32 +05:30
|
|
|
|
2019-02-15 15:39:39 +05:30
|
|
|
subject { data_store.delete_keys(keys) }
|
|
|
|
|
|
|
|
before do
|
2019-12-21 20:55:43 +05:30
|
|
|
uploads.each { |upload| upload.retrieve_uploader.migrate!(2) }
|
2019-02-15 15:39:39 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
it 'deletes multiple data' do
|
|
|
|
paths = relation.pluck(:path)
|
|
|
|
|
|
|
|
::Fog::Storage.new(FileUploader.object_store_credentials).tap do |connection|
|
|
|
|
paths.each do |path|
|
|
|
|
expect(connection.get_object('uploads', path)[:body]).not_to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
subject
|
|
|
|
|
|
|
|
::Fog::Storage.new(FileUploader.object_store_credentials).tap do |connection|
|
|
|
|
paths.each do |path|
|
|
|
|
expect { connection.get_object('uploads', path)[:body] }.to raise_error(Excon::Error::NotFound)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|