From dd6f9a1b827226346d0fff22a79538351fb33028 Mon Sep 17 00:00:00 2001 From: unarist Date: Sun, 17 Sep 2017 22:21:57 +0900 Subject: [PATCH] Validate uri presence for remote status (#4985) --- app/models/status.rb | 2 +- spec/models/status_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/models/status.rb b/app/models/status.rb index 8e82c6aa6..2a2cdcf6e 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -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? diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index f7ee0a609..12efcae61 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -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')