Commit 85537b00 authored by Aurélien Reeves's avatar Aurélien Reeves Committed by Eugen Rochko

Squish username before validation (#10239)

* Squish username before validation (#10101)

Fix #10101

* Move before_validation hook to a private method

Also add Unicode wite-spaces to the spec to support the use of squish
over strip.
parent f5eeac01
......@@ -472,6 +472,7 @@ class Account < ApplicationRecord
before_create :generate_keys
before_validation :prepare_contents, if: :local?
before_validation :prepare_username, on: :create
before_destroy :clean_feed_manager
private
......@@ -481,6 +482,10 @@ class Account < ApplicationRecord
note&.strip!
end
def prepare_username
username&.squish!
end
def generate_keys
return unless local? && !Rails.env.test?
......
......@@ -558,6 +558,11 @@ RSpec.describe Account, type: :model do
expect(account).to model_have_error_on_field(:username)
end
it 'squishes the username before validation' do
account = Fabricate(:account, domain: nil, username: " \u3000bob \t \u00a0 \n ")
expect(account.username).to eq 'bob'
end
context 'when is local' do
it 'is invalid if the username is not unique in case-insensitive comparison among local accounts' do
account_1 = Fabricate(:account, username: 'the_doctor')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment