diff --git a/app/models/user.rb b/app/models/user.rb index 5d69ccede9e..ac0ce5c7eaa 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -273,7 +273,7 @@ class User < ActiveRecord::Base end def self.normalize_username(username) - username.unicode_normalize.downcase if username.present? + username.to_s.unicode_normalize.downcase if username.present? end def self.username_available?(username, email = nil, allow_reserved_username: false) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 5e4b26de5b7..383656c34c2 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -50,6 +50,12 @@ describe User do expect(user.errors.full_messages.first) .to include(user_error_message(:username, :same_as_password)) end + + describe 'when a username is an integer' do + it 'is converted to a string on normalization' do + expect(User.normalize_username(123)).to eq("123") # This is possible via the API + end + end end describe 'name' do