mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Validate upload is still valid after calling the "before_upload_creation" event (#13091)
Since we use the event to perform additional validations on the file, we should check if it added any errors to the upload before saving it. This change makes the UploadCreator more consistent since we no longer have to rely on exceptions.
This commit is contained in:
@@ -599,4 +599,30 @@ RSpec.describe UploadCreator do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'before_upload_creation event' do
|
||||
let(:filename) { "logo.jpg" }
|
||||
let(:file) { file_from_fixtures(filename) }
|
||||
|
||||
before do
|
||||
setup_s3
|
||||
stub_s3_store
|
||||
end
|
||||
|
||||
it 'does not save the upload if an event added errors to the upload' do
|
||||
error = 'This upload is invalid'
|
||||
|
||||
event = Proc.new do |file, is_image, upload|
|
||||
upload.errors.add(:base, error)
|
||||
end
|
||||
|
||||
DiscourseEvent.on(:before_upload_creation, &event)
|
||||
|
||||
created_upload = UploadCreator.new(file, filename).create_for(user.id)
|
||||
|
||||
expect(created_upload.persisted?).to eq(false)
|
||||
expect(created_upload.errors).to contain_exactly(error)
|
||||
DiscourseEvent.off(:before_upload_creation, &event)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user