Commit 9bb7abed authored by Kamil Trzciński's avatar Kamil Trzciński

Fix file_store for artifacts and lfs when saving

parent 9267ef0b
...@@ -77,8 +77,7 @@ class Projects::LfsStorageController < Projects::GitHttpClientController ...@@ -77,8 +77,7 @@ class Projects::LfsStorageController < Projects::GitHttpClientController
def link_to_project!(object) def link_to_project!(object)
if object && !object.projects.exists?(storage_project.id) if object && !object.projects.exists?(storage_project.id)
object.projects << storage_project object.lfs_objects_projects.create!(project: storage_project)
object.save!
end end
end end
end end
...@@ -13,7 +13,7 @@ module Ci ...@@ -13,7 +13,7 @@ module Ci
after_save :update_project_statistics_after_save, if: :size_changed? after_save :update_project_statistics_after_save, if: :size_changed?
after_destroy :update_project_statistics_after_destroy, unless: :project_destroyed? after_destroy :update_project_statistics_after_destroy, unless: :project_destroyed?
after_save :update_file_store after_save :update_file_store, if: :file_changed?
scope :with_files_stored_locally, -> { where(file_store: [nil, ::JobArtifactUploader::Store::LOCAL]) } scope :with_files_stored_locally, -> { where(file_store: [nil, ::JobArtifactUploader::Store::LOCAL]) }
......
...@@ -11,7 +11,7 @@ class LfsObject < ActiveRecord::Base ...@@ -11,7 +11,7 @@ class LfsObject < ActiveRecord::Base
mount_uploader :file, LfsObjectUploader mount_uploader :file, LfsObjectUploader
after_save :update_file_store after_save :update_file_store, if: :file_changed?
def update_file_store def update_file_store
# The file.object_store is set during `uploader.store!` # The file.object_store is set during `uploader.store!`
......
---
title: Fix file_store for artifacts and lfs when saving
merge_request:
author:
type: fixed
...@@ -54,9 +54,9 @@ describe Projects::RawController do ...@@ -54,9 +54,9 @@ describe Projects::RawController do
end end
context 'and lfs uses object storage' do context 'and lfs uses object storage' do
let(:lfs_object) { create(:lfs_object, :with_file, oid: '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897', size: '1575078') }
before do before do
lfs_object.file = fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "`/png")
lfs_object.save!
stub_lfs_object_storage stub_lfs_object_storage
lfs_object.file.migrate!(LfsObjectUploader::Store::REMOTE) lfs_object.file.migrate!(LfsObjectUploader::Store::REMOTE)
end end
......
...@@ -62,9 +62,7 @@ describe LfsObject do ...@@ -62,9 +62,7 @@ describe LfsObject do
.with('LfsObjectUploader', described_class.name, :file, kind_of(Numeric)) .with('LfsObjectUploader', described_class.name, :file, kind_of(Numeric))
.once .once
lfs_object = create(:lfs_object) create(:lfs_object, :with_file)
lfs_object.file = fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "`/png")
lfs_object.save!
end end
end end
end end
......
...@@ -123,12 +123,14 @@ describe Projects::UpdatePagesService do ...@@ -123,12 +123,14 @@ describe Projects::UpdatePagesService do
expect(execute).not_to eq(:success) expect(execute).not_to eq(:success)
end end
it 'fails for empty file fails' do context 'when using empty file' do
build.job_artifacts_archive.update_attributes(file: empty_file) let(:file) { empty_file }
it 'fails to extract' do
expect { execute } expect { execute }
.to raise_error(Projects::UpdatePagesService::FailedToExtractError) .to raise_error(Projects::UpdatePagesService::FailedToExtractError)
end end
end
context 'when timeout happens by DNS error' do context 'when timeout happens by DNS error' do
before do before do
......
...@@ -46,8 +46,7 @@ describe LfsObjectUploader do ...@@ -46,8 +46,7 @@ describe LfsObjectUploader do
end end
describe 'remote file' do describe 'remote file' do
let(:remote) { described_class::Store::REMOTE } let(:lfs_object) { create(:lfs_object, :object_storage, :with_file) }
let(:lfs_object) { create(:lfs_object, file_store: remote) }
context 'with object storage enabled' do context 'with object storage enabled' do
before do before do
...@@ -57,16 +56,11 @@ describe LfsObjectUploader do ...@@ -57,16 +56,11 @@ describe LfsObjectUploader do
it 'can store file remotely' do it 'can store file remotely' do
allow(ObjectStorage::BackgroundMoveWorker).to receive(:perform_async) allow(ObjectStorage::BackgroundMoveWorker).to receive(:perform_async)
store_file(lfs_object) lfs_object
expect(lfs_object.file_store).to eq remote expect(lfs_object.file_store).to eq(described_class::Store::REMOTE)
expect(lfs_object.file.path).not_to be_blank expect(lfs_object.file.path).not_to be_blank
end end
end end
end end
def store_file(lfs_object)
lfs_object.file = fixture_file_upload(Rails.root.join("spec/fixtures/dk.png"), "`/png")
lfs_object.save!
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