diff options
author | Aurélien Reeves <aurelien.reeves@hiptest.net> | 2019-03-11 20:48:24 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2019-03-11 20:48:24 +0100 |
commit | 85537b00695b1091e2a147597ab7c3557b150b11 (patch) | |
tree | cf722bd91358600bbcb751dc0abee98166daa1c3 | |
parent | f5eeac01047874269bbb2910bab4b32f739c616d (diff) |
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.
-rw-r--r-- | app/models/account.rb | 5 | ||||
-rw-r--r-- | spec/models/account_spec.rb | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index b81c64182..d6d718354 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -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? diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index f7f78d34c..46886b91f 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -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') |