Commit 293c51e3 authored by Michael Kozono's avatar Michael Kozono

Remove more BG migration spec dependencies

For the `PrepareUntrackedUploads` spec.
parent 348c60d9
...@@ -38,8 +38,8 @@ describe Gitlab::BackgroundMigration::PopulateUntrackedUploads, :sidekiq, :migra ...@@ -38,8 +38,8 @@ describe Gitlab::BackgroundMigration::PopulateUntrackedUploads, :sidekiq, :migra
untracked_files_for_uploads.create!(path: get_uploads(user2, 'User').first.path) untracked_files_for_uploads.create!(path: get_uploads(user2, 'User').first.path)
untracked_files_for_uploads.create!(path: get_uploads(project1, 'Project').first.path) untracked_files_for_uploads.create!(path: get_uploads(project1, 'Project').first.path)
untracked_files_for_uploads.create!(path: get_uploads(project2, 'Project').first.path) untracked_files_for_uploads.create!(path: get_uploads(project2, 'Project').first.path)
untracked_files_for_uploads.create!(path: "#{project_uploads_dir(project1).sub("#{TrackUntrackedUploadsHelpers::PUBLIC_DIR}/", '')}/#{get_uploads(project1, 'Project').last.path}") untracked_files_for_uploads.create!(path: "#{legacy_project_uploads_dir(project1).sub("#{TrackUntrackedUploadsHelpers::PUBLIC_DIR}/", '')}/#{get_uploads(project1, 'Project').last.path}")
untracked_files_for_uploads.create!(path: "#{project_uploads_dir(project2).sub("#{TrackUntrackedUploadsHelpers::PUBLIC_DIR}/", '')}/#{get_uploads(project2, 'Project').last.path}") untracked_files_for_uploads.create!(path: "#{legacy_project_uploads_dir(project2).sub("#{TrackUntrackedUploadsHelpers::PUBLIC_DIR}/", '')}/#{get_uploads(project2, 'Project').last.path}")
# Untrack 4 files # Untrack 4 files
get_uploads(user2, 'User').delete_all get_uploads(user2, 'User').delete_all
......
require 'spec_helper' require 'spec_helper'
describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq, :migration, schema: 20180129193323 do # Rollback DB to 10.5 (later than this was originally written for) because it still needs to work.
describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq, :migration, schema: 20180208183958 do
include TrackUntrackedUploadsHelpers include TrackUntrackedUploadsHelpers
include MigrationsHelpers
let!(:untracked_files_for_uploads) { described_class::UntrackedFile } let!(:untracked_files_for_uploads) { described_class::UntrackedFile }
let!(:appearances) { table(:appearances) }
let!(:namespaces) { table(:namespaces) }
let!(:projects) { table(:projects) }
let!(:routes) { table(:routes) }
let!(:uploads) { table(:uploads) }
let!(:users) { table(:users) }
around do |example| around do |example|
# Especially important so the follow-up migration does not get run # Especially important so the follow-up migration does not get run
...@@ -15,19 +21,17 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq, :migrat ...@@ -15,19 +21,17 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq, :migrat
shared_examples 'prepares the untracked_files_for_uploads table' do shared_examples 'prepares the untracked_files_for_uploads table' do
context 'when files were uploaded before and after hashed storage was enabled' do context 'when files were uploaded before and after hashed storage was enabled' do
let!(:appearance) { create_or_update_appearance(logo: uploaded_file, header_logo: uploaded_file) } let!(:appearance) { create_or_update_appearance(logo: true, header_logo: true) }
let!(:user) { create(:user, :with_avatar) } let!(:user) { create_user(avatar: true) }
let!(:project1) { create(:project, :with_avatar, :legacy_storage) } let!(:project1) { create_project(avatar: true) }
let(:project2) { create(:project) } # instantiate after enabling hashed_storage let(:project2) { create_project } # instantiate after enabling hashed_storage
before do before do
# Markdown upload before enabling hashed_storage # Markdown upload before enabling hashed_storage
UploadService.new(project1, uploaded_file, FileUploader).execute add_markdown_attachment(project1)
stub_application_setting(hashed_storage_enabled: true)
# Markdown upload after enabling hashed_storage # Markdown upload after enabling hashed_storage
UploadService.new(project2, uploaded_file, FileUploader).execute add_markdown_attachment(project2, hashed_storage: true)
end end
it 'has a path field long enough for really long paths' do it 'has a path field long enough for really long paths' do
...@@ -61,7 +65,7 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq, :migrat ...@@ -61,7 +65,7 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq, :migrat
it 'does not add hashed files to the untracked_files_for_uploads table' do it 'does not add hashed files to the untracked_files_for_uploads table' do
described_class.new.perform described_class.new.perform
hashed_file_path = project2.uploads.where(uploader: 'FileUploader').first.path hashed_file_path = get_uploads(project2, 'Project').where(uploader: 'FileUploader').first.path
expect(untracked_files_for_uploads.where("path like '%#{hashed_file_path}%'").exists?).to be_falsey expect(untracked_files_for_uploads.where("path like '%#{hashed_file_path}%'").exists?).to be_falsey
end end
......
...@@ -71,8 +71,8 @@ module TrackUntrackedUploadsHelpers ...@@ -71,8 +71,8 @@ module TrackUntrackedUploadsHelpers
) )
end end
def add_markdown_attachment(project) def add_markdown_attachment(project, hashed_storage: false)
project_dir = project_uploads_dir(project) project_dir = hashed_storage ? hashed_project_uploads_dir(project) : legacy_project_uploads_dir(project)
attachment_dir = File.join(project_dir, SecureRandom.hex) attachment_dir = File.join(project_dir, SecureRandom.hex)
attachment_file_path = File.join(attachment_dir, UPLOAD_FILENAME) attachment_file_path = File.join(attachment_dir, UPLOAD_FILENAME)
project_attachment_path_relative_to_project = attachment_file_path.sub("#{project_dir}/", '') project_attachment_path_relative_to_project = attachment_file_path.sub("#{project_dir}/", '')
...@@ -88,8 +88,13 @@ module TrackUntrackedUploadsHelpers ...@@ -88,8 +88,13 @@ module TrackUntrackedUploadsHelpers
) )
end end
def project_uploads_dir(project) def legacy_project_uploads_dir(project)
File.join(UPLOADS_DIR, project.full_path) namespace = namespaces.find_by(id: project.namespace_id)
File.join(UPLOADS_DIR, namespace.path, project.path)
end
def hashed_project_uploads_dir(project)
File.join(UPLOADS_DIR, '@hashed', 'aa', 'aaaaaaaaaaaa')
end end
def upload_file_path(model, model_type, attachment_type) def upload_file_path(model, model_type, attachment_type)
......
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