mirror of
https://github.com/discourse/discourse.git
synced 2025-01-19 10:32:45 +08:00
0924f874bd
We've had the UploadReference table for some time now in core, but it was added after ChatUpload was and chat was just never moved over to this new system. This commit changes all chat code dealing with uploads to create/ update/delete/query UploadReference records instead of ChatUpload records for consistency. At a later date we will drop the ChatUpload table, but for now keeping it for data backup. The migration + post migration are the same, we need both in case any chat uploads are added/removed during deploy.
105 lines
2.7 KiB
Ruby
105 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
Fabricator(:upload) do
|
|
user
|
|
sha1 { sequence(:sha1) { |n| Digest::SHA1.hexdigest("#{n}#{Process.pid}") } }
|
|
original_filename "logo.png"
|
|
filesize 1234
|
|
width 100
|
|
height 200
|
|
thumbnail_width 30
|
|
thumbnail_height 60
|
|
|
|
url do |attrs|
|
|
sequence(:url) do |n|
|
|
Discourse.store.get_path_for("original", n + 1, attrs[:sha1], ".#{attrs[:extension]}")
|
|
end
|
|
end
|
|
|
|
extension "png"
|
|
end
|
|
|
|
Fabricator(:large_image_upload, from: :upload) do
|
|
width 2000
|
|
height 2000
|
|
after_create do |upload, _transients|
|
|
file = file_from_fixtures("2000x2000.png")
|
|
upload.url = Discourse.store.store_upload(file, upload)
|
|
upload.sha1 = Upload.generate_digest(file)
|
|
end
|
|
end
|
|
|
|
Fabricator(:image_upload, from: :upload) do
|
|
transient color: "white"
|
|
|
|
after_create do |upload, transients|
|
|
file = Tempfile.new(%w[fabricated .png])
|
|
`convert -size #{upload.width}x#{upload.height} xc:#{transients[:color]} "#{file.path}"`
|
|
|
|
upload.url = Discourse.store.store_upload(file, upload)
|
|
upload.sha1 = Upload.generate_digest(file.path)
|
|
|
|
WebMock.stub_request(:get, "http://#{Discourse.current_hostname}#{upload.url}").to_return(
|
|
status: 200,
|
|
body: File.new(file.path),
|
|
)
|
|
end
|
|
end
|
|
|
|
Fabricator(:upload_no_dimensions, from: :upload) do
|
|
width nil
|
|
height nil
|
|
thumbnail_width nil
|
|
thumbnail_height nil
|
|
end
|
|
|
|
Fabricator(:video_upload, from: :upload) do
|
|
original_filename "video.mp4"
|
|
width nil
|
|
height nil
|
|
thumbnail_width nil
|
|
thumbnail_height nil
|
|
extension "mp4"
|
|
end
|
|
|
|
Fabricator(:secure_upload, from: :upload) do
|
|
secure true
|
|
sha1 { SecureRandom.hex(20) }
|
|
original_sha1 { sequence(:sha1) { |n| Digest::SHA1.hexdigest(n.to_s) } }
|
|
end
|
|
|
|
Fabricator(:upload_s3, from: :upload) do
|
|
url do |attrs|
|
|
sequence(:url) do |n|
|
|
path = +Discourse.store.get_path_for("original", n + 1, attrs[:sha1], ".#{attrs[:extension]}")
|
|
|
|
path.prepend(File.join(Discourse.store.upload_path, "/")) if Rails.configuration.multisite
|
|
|
|
File.join(Discourse.store.absolute_base_url, path)
|
|
end
|
|
end
|
|
end
|
|
|
|
Fabricator(:s3_image_upload, from: :upload_s3) do
|
|
after_create do |upload|
|
|
file = Tempfile.new(%w[fabricated .png])
|
|
`convert -size #{upload.width}x#{upload.height} xc:white "#{file.path}"`
|
|
|
|
upload.url = Discourse.store.store_upload(file, upload)
|
|
upload.sha1 = Upload.generate_digest(file.path)
|
|
|
|
WebMock.stub_request(:get, upload.url).to_return(status: 200, body: File.new(file.path))
|
|
end
|
|
end
|
|
|
|
Fabricator(:secure_upload_s3, from: :upload_s3) do
|
|
secure true
|
|
sha1 { SecureRandom.hex(20) }
|
|
original_sha1 { sequence(:sha1) { |n| Digest::SHA1.hexdigest(n.to_s) } }
|
|
end
|
|
|
|
Fabricator(:upload_reference) do
|
|
target
|
|
upload
|
|
end
|