Treat non-null but blank account domain as local (#33576)

pull/33592/head
Matt Jankowski 4 weeks ago committed by GitHub
parent e1d7efadc0
commit 68c9f91ccb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -126,6 +126,8 @@ class Account < ApplicationRecord
validates :uri, absence: true validates :uri, absence: true
end end
validates :domain, exclusion: { in: [''] }
normalizes :username, with: ->(username) { username.squish } normalizes :username, with: ->(username) { username.squish }
scope :without_internal, -> { where(id: 1...) } scope :without_internal, -> { where(id: 1...) }
@ -187,7 +189,7 @@ class Account < ApplicationRecord
end end
def remote? def remote?
domain.present? !domain.nil?
end end
def moved? def moved?

@ -49,14 +49,16 @@ RSpec.describe Account do
end end
describe '#local?' do describe '#local?' do
it 'returns true when domain is null' do context 'when the domain is null' do
account = Fabricate(:account, domain: nil) subject { Fabricate.build :account, domain: nil }
expect(account).to be_local
it { is_expected.to be_local }
end end
it 'returns false when domain is present' do context 'when the domain is present' do
account = Fabricate(:account, domain: 'foreign.tld') subject { Fabricate.build :account, domain: 'host.example' }
expect(account).to_not be_local
it { is_expected.to_not be_local }
end end
end end
@ -67,12 +69,6 @@ RSpec.describe Account do
it { is_expected.to_not be_remote } it { is_expected.to_not be_remote }
end end
context 'when the domain is blank' do
subject { Fabricate.build :account, domain: '' }
it { is_expected.to_not be_remote }
end
context 'when the domain is present' do context 'when the domain is present' do
subject { Fabricate.build :account, domain: 'host.example' } subject { Fabricate.build :account, domain: 'host.example' }
@ -557,6 +553,8 @@ RSpec.describe Account do
describe 'Validations' do describe 'Validations' do
it { is_expected.to validate_presence_of(:username) } it { is_expected.to validate_presence_of(:username) }
it { is_expected.to_not allow_value('').for(:domain) }
context 'when account is local' do context 'when account is local' do
subject { Fabricate.build :account, domain: nil } subject { Fabricate.build :account, domain: nil }

@ -204,7 +204,7 @@ RSpec.describe ImportService, :inline_jobs do
subject { described_class.new } subject { described_class.new }
let(:csv) { attachment_fixture('bookmark-imports.txt') } let(:csv) { attachment_fixture('bookmark-imports.txt') }
let(:local_account) { Fabricate(:account, username: 'foo', domain: '') } let(:local_account) { Fabricate(:account, username: 'foo', domain: nil) }
let!(:remote_status) { Fabricate(:status, uri: 'https://example.com/statuses/1312') } let!(:remote_status) { Fabricate(:status, uri: 'https://example.com/statuses/1312') }
let!(:direct_status) { Fabricate(:status, uri: 'https://example.com/statuses/direct', visibility: :direct) } let!(:direct_status) { Fabricate(:status, uri: 'https://example.com/statuses/direct', visibility: :direct) }

Loading…
Cancel
Save