summaryrefslogtreecommitdiff
path: root/spec/factories
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2018-02-02 13:59:43 +0000
committerKamil TrzciƄski <ayufan@ayufan.eu>2018-02-28 20:58:15 +0100
commita7dae52e9d27adde427ef8aa066c0761071a3cd9 (patch)
tree8b6229e4e0afe7e71f9754089758cee8acd56cde /spec/factories
parent45d2c31643017807cb3fc66c0be6e9cad9964faf (diff)
downloadgitlab-ce-a7dae52e9d27adde427ef8aa066c0761071a3cd9.tar.gz
Merge branch '4163-move-uploads-to-object-storage' into 'master'
Move uploads to object storage Closes #4163 See merge request gitlab-org/gitlab-ee!3867
Diffstat (limited to 'spec/factories')
-rw-r--r--spec/factories/ci/job_artifacts.rb2
-rw-r--r--spec/factories/geo/event_log.rb121
-rw-r--r--spec/factories/groups.rb2
-rw-r--r--spec/factories/notes.rb4
-rw-r--r--spec/factories/projects.rb2
-rw-r--r--spec/factories/uploads.rb27
-rw-r--r--spec/factories/users.rb2
7 files changed, 150 insertions, 10 deletions
diff --git a/spec/factories/ci/job_artifacts.rb b/spec/factories/ci/job_artifacts.rb
index 436735e7ed3..9bb456e89ff 100644
--- a/spec/factories/ci/job_artifacts.rb
+++ b/spec/factories/ci/job_artifacts.rb
@@ -6,7 +6,7 @@ FactoryBot.define do
file_type :archive
trait :remote_store do
- file_store JobArtifactUploader::REMOTE_STORE
+ file_store JobArtifactUploader::Store::REMOTE
end
after :build do |artifact|
diff --git a/spec/factories/geo/event_log.rb b/spec/factories/geo/event_log.rb
new file mode 100644
index 00000000000..dbe2f400f97
--- /dev/null
+++ b/spec/factories/geo/event_log.rb
@@ -0,0 +1,121 @@
+FactoryBot.define do
+ factory :geo_event_log, class: Geo::EventLog do
+ trait :created_event do
+ repository_created_event factory: :geo_repository_created_event
+ end
+
+ trait :updated_event do
+ repository_updated_event factory: :geo_repository_updated_event
+ end
+
+ trait :deleted_event do
+ repository_deleted_event factory: :geo_repository_deleted_event
+ end
+
+ trait :renamed_event do
+ repository_renamed_event factory: :geo_repository_renamed_event
+ end
+
+ trait :hashed_storage_migration_event do
+ hashed_storage_migrated_event factory: :geo_hashed_storage_migrated_event
+ end
+
+ trait :hashed_storage_attachments_event do
+ hashed_storage_attachments_event factory: :geo_hashed_storage_attachments_event
+ end
+
+ trait :lfs_object_deleted_event do
+ lfs_object_deleted_event factory: :geo_lfs_object_deleted_event
+ end
+
+ trait :job_artifact_deleted_event do
+ job_artifact_deleted_event factory: :geo_job_artifact_deleted_event
+ end
+ end
+
+ factory :geo_repository_created_event, class: Geo::RepositoryCreatedEvent do
+ project
+
+ repository_storage_name { project.repository_storage }
+ repository_storage_path { project.repository_storage_path }
+ add_attribute(:repo_path) { project.disk_path }
+ project_name { project.name }
+ wiki_path { project.wiki.disk_path }
+ end
+
+ factory :geo_repository_updated_event, class: Geo::RepositoryUpdatedEvent do
+ project
+
+ source 0
+ branches_affected 0
+ tags_affected 0
+ end
+
+ factory :geo_repository_deleted_event, class: Geo::RepositoryDeletedEvent do
+ project
+
+ repository_storage_name { project.repository_storage }
+ repository_storage_path { project.repository_storage_path }
+ deleted_path { project.path_with_namespace }
+ deleted_project_name { project.name }
+ end
+
+ factory :geo_repositories_changed_event, class: Geo::RepositoriesChangedEvent do
+ geo_node
+ end
+
+ factory :geo_repository_renamed_event, class: Geo::RepositoryRenamedEvent do
+ project { create(:project, :repository) }
+
+ repository_storage_name { project.repository_storage }
+ repository_storage_path { project.repository_storage_path }
+ old_path_with_namespace { project.path_with_namespace }
+ new_path_with_namespace { project.path_with_namespace + '_new' }
+ old_wiki_path_with_namespace { project.wiki.path_with_namespace }
+ new_wiki_path_with_namespace { project.wiki.path_with_namespace + '_new' }
+ old_path { project.path }
+ new_path { project.path + '_new' }
+ end
+
+ factory :geo_hashed_storage_migrated_event, class: Geo::HashedStorageMigratedEvent do
+ project { create(:project, :repository) }
+
+ repository_storage_name { project.repository_storage }
+ repository_storage_path { project.repository_storage_path }
+ old_disk_path { project.path_with_namespace }
+ new_disk_path { project.path_with_namespace + '_new' }
+ old_wiki_disk_path { project.wiki.path_with_namespace }
+ new_wiki_disk_path { project.wiki.path_with_namespace + '_new' }
+ new_storage_version { Project::HASHED_STORAGE_FEATURES[:repository] }
+ end
+
+ factory :geo_hashed_storage_attachments_event, class: Geo::HashedStorageAttachmentsEvent do
+ project { create(:project, :repository) }
+
+ old_attachments_path { Storage::LegacyProject.new(project).disk_path }
+ new_attachments_path { Storage::HashedProject.new(project).disk_path }
+ end
+
+ factory :geo_lfs_object_deleted_event, class: Geo::LfsObjectDeletedEvent do
+ lfs_object { create(:lfs_object, :with_file) }
+
+ after(:build, :stub) do |event, _|
+ local_store_path = Pathname.new(LfsObjectUploader.root)
+ relative_path = Pathname.new(event.lfs_object.file.path).relative_path_from(local_store_path)
+
+ event.oid = event.lfs_object.oid
+ event.file_path = relative_path
+ end
+ end
+
+ factory :geo_job_artifact_deleted_event, class: Geo::JobArtifactDeletedEvent do
+ job_artifact { create(:ci_job_artifact, :archive) }
+
+ after(:build, :stub) do |event, _|
+ local_store_path = Pathname.new(JobArtifactUploader.root)
+ relative_path = Pathname.new(event.job_artifact.file.path).relative_path_from(local_store_path)
+
+ event.file_path = relative_path
+ end
+ end
+end
diff --git a/spec/factories/groups.rb b/spec/factories/groups.rb
index 1512f5a0e58..8c531cf5909 100644
--- a/spec/factories/groups.rb
+++ b/spec/factories/groups.rb
@@ -18,7 +18,7 @@ FactoryBot.define do
end
trait :with_avatar do
- avatar { File.open(Rails.root.join('spec/fixtures/dk.png')) }
+ avatar { fixture_file_upload('spec/fixtures/dk.png') }
end
trait :access_requestable do
diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb
index 707ecbd6be5..0889c5090fb 100644
--- a/spec/factories/notes.rb
+++ b/spec/factories/notes.rb
@@ -122,11 +122,11 @@ FactoryBot.define do
end
trait :with_attachment do
- attachment { fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png") }
+ attachment { fixture_file_upload(Rails.root.join( "spec/fixtures/dk.png"), "image/png") }
end
trait :with_svg_attachment do
- attachment { fixture_file_upload(Rails.root + "spec/fixtures/unsanitized.svg", "image/svg+xml") }
+ attachment { fixture_file_upload(Rails.root.join("spec/fixtures/unsanitized.svg"), "image/svg+xml") }
end
transient do
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index d0f3911f730..16d328a5bc2 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -90,7 +90,7 @@ FactoryBot.define do
end
trait :with_avatar do
- avatar { File.open(Rails.root.join('spec/fixtures/dk.png')) }
+ avatar { fixture_file_upload('spec/fixtures/dk.png') }
end
trait :broken_storage do
diff --git a/spec/factories/uploads.rb b/spec/factories/uploads.rb
index c39500faea1..9e8a55eaedb 100644
--- a/spec/factories/uploads.rb
+++ b/spec/factories/uploads.rb
@@ -1,24 +1,43 @@
FactoryBot.define do
factory :upload do
model { build(:project) }
- path { "uploads/-/system/project/avatar/avatar.jpg" }
size 100.kilobytes
uploader "AvatarUploader"
+ store ObjectStorage::Store::LOCAL
- trait :personal_snippet do
+ # we should build a mount agnostic upload by default
+ transient do
+ mounted_as :avatar
+ secret SecureRandom.hex
+ end
+
+ # this needs to comply with RecordsUpload::Concern#upload_path
+ path { File.join("uploads/-/system", model.class.to_s.underscore, mounted_as.to_s, 'avatar.jpg') }
+
+ trait :personal_snippet_upload do
model { build(:personal_snippet) }
+ path { File.join(secret, 'myfile.jpg') }
uploader "PersonalFileUploader"
end
trait :issuable_upload do
- path { "#{SecureRandom.hex}/myfile.jpg" }
+ path { File.join(secret, 'myfile.jpg') }
uploader "FileUploader"
end
trait :namespace_upload do
- path { "#{SecureRandom.hex}/myfile.jpg" }
model { build(:group) }
+ path { File.join(secret, 'myfile.jpg') }
uploader "NamespaceFileUploader"
end
+
+ trait :attachment_upload do
+ transient do
+ mounted_as :attachment
+ end
+
+ model { build(:note) }
+ uploader "AttachmentUploader"
+ end
end
end
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
index e62e0b263ca..769fd656e7a 100644
--- a/spec/factories/users.rb
+++ b/spec/factories/users.rb
@@ -38,7 +38,7 @@ FactoryBot.define do
end
trait :with_avatar do
- avatar { File.open(Rails.root.join('spec/fixtures/dk.png')) }
+ avatar { fixture_file_upload('spec/fixtures/dk.png') }
end
trait :two_factor_via_otp do