uploads: fix broken tests.

* Fix broken upload tests.
* Fix uploads to return an error if both a file and a source are given
  at the same time, or if neither are given. Also fix the error message
  in this case so that it doesn't include "base" at the start of the string.
* Fix uploads to percent-encode any Unicode characters in the source URL.
* Add a max filesize validation to media assets.
This commit is contained in:
evazion
2022-01-29 04:38:47 -06:00
parent 5d0c14d2bd
commit 11b7bcac91
9 changed files with 248 additions and 611 deletions

View File

@@ -1,45 +1,25 @@
require 'fileutils'
FactoryBot.define do
factory(:upload) do
rating {"s"}
uploader :factory => :user, :level => 20
uploader_ip_addr {"127.0.0.1"}
tag_string {"special"}
status {"pending"}
server {Socket.gethostname}
source {"xxx"}
md5 { SecureRandom.hex(32) }
media_asset { build(:media_asset) }
uploader factory: :user
uploader_ip_addr { "127.0.0.1" }
status { "pending" }
rating { "s" }
tag_string { "" }
source { "https://files.catbox.moe/om3tcw.webm" }
factory(:source_upload) do
source {"http://www.google.com/intl/en_ALL/images/logo.gif"}
factory(:completed_source_upload) do
status { "completed" }
source { "https://cdn.donmai.us/original/d3/4e/d34e4cf0a437a5d65f8e82b7bcd02606.jpg" }
upload_media_assets { [build(:upload_media_asset)] }
end
factory(:ugoira_upload) do
file do
f = Tempfile.new
IO.copy_stream("#{Rails.root}/test/files/ugoira.zip", f.path)
ActionDispatch::Http::UploadedFile.new(tempfile: f, filename: "ugoira.zip")
end
end
factory(:completed_file_upload) do
status { "completed" }
source { nil }
file { Rack::Test::UploadedFile.new("#{Rails.root}/test/files/test.jpg") }
factory(:jpg_upload) do
file do
f = Tempfile.new
IO.copy_stream("#{Rails.root}/test/files/test.jpg", f.path)
ActionDispatch::Http::UploadedFile.new(tempfile: f, filename: "test.jpg")
end
md5 { MediaFile.open("test/files/test.jpg").md5 }
media_asset { build(:media_asset, file: "test/files/test.jpg") }
end
factory(:large_jpg_upload) do
file do
f = Tempfile.new
IO.copy_stream("#{Rails.root}/test/files/test-large.jpg", f.path)
ActionDispatch::Http::UploadedFile.new(tempfile: f, filename: "test.jpg")
upload_media_assets do
[build(:upload_media_asset, media_asset: build(:media_asset, file: "test/files/test.jpg"))]
end
end
end

View File

@@ -0,0 +1,6 @@
FactoryBot.define do
factory(:upload_media_asset) do
upload
media_asset
end
end