]> cat aescling's git repositories - mastodon.git/commitdiff
Validate uri presence for remote status (#4985)
authorunarist <m.unarist@gmail.com>
Sun, 17 Sep 2017 13:21:57 +0000 (22:21 +0900)
committerEugen Rochko <eugen@zeonfederated.com>
Sun, 17 Sep 2017 13:21:57 +0000 (15:21 +0200)
app/models/status.rb
spec/models/status_spec.rb

index 8e82c6aa6827c83233c41ef76c8e0d851ca44d17..2a2cdcf6ea010087700e2ed5b568f64708d00504 100644 (file)
@@ -55,7 +55,7 @@ class Status < ApplicationRecord
   has_one :notification, as: :activity, dependent: :destroy
   has_one :stream_entry, as: :activity, inverse_of: :status
 
-  validates :uri, uniqueness: true, unless: :local?
+  validates :uri, uniqueness: true, presence: true, unless: :local?
   validates :text, presence: true, unless: :reblog?
   validates_with StatusLengthValidator
   validates :reblog, uniqueness: { scope: :account }, if: :reblog?
index f7ee0a609d949d8d40d882c8e56458bfb30c0536..12efcae617315e8f499ac894971639d62d45650c 100644 (file)
@@ -516,6 +516,14 @@ RSpec.describe Status, type: :model do
     end
   end
 
+  describe 'validation' do
+    it 'disallow empty uri for remote status' do
+      alice.update(domain: 'example.com')
+      status = Fabricate.build(:status, uri: '', account: alice)
+      expect(status).to model_have_error_on_field(:uri)
+    end
+  end
+
   describe 'after_create' do
     it 'saves ActivityPub uri as uri for local status' do
       status = Status.create(account: alice, text: 'foo')