Browse Source

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.
pull/4/head
Aurélien Reeves 5 years ago
committed by Eugen Rochko
parent
commit
85537b0069
2 changed files with 10 additions and 0 deletions
  1. +5
    -0
      app/models/account.rb
  2. +5
    -0
      spec/models/account_spec.rb

+ 5
- 0
app/models/account.rb View File

@ -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?

+ 5
- 0
spec/models/account_spec.rb View File

@ -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')

Loading…
Cancel
Save