From 8feb94e13f97c7eb4d82b964e2a034dce4de2ae8 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 14 Feb 2017 09:17:52 -0500 Subject: [PATCH] FIX: password validator was being too strict --- lib/validators/password_validator.rb | 2 +- spec/components/validators/password_validator_spec.rb | 5 +++-- spec/controllers/users_controller_spec.rb | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/validators/password_validator.rb b/lib/validators/password_validator.rb index ea1bdec5cb4..bc4ae51b813 100644 --- a/lib/validators/password_validator.rb +++ b/lib/validators/password_validator.rb @@ -18,7 +18,7 @@ class PasswordValidator < ActiveModel::EachValidator record.errors.add(attribute, :same_as_current) elsif SiteSetting.block_common_passwords && CommonPasswords.common_password?(value) record.errors.add(attribute, :common) - elsif value.chars.inject(Hash.new(0)) { |h,char| h[char] += 1; h }.reject { |k,v| v > 1 }.size < SiteSetting.password_unique_characters + elsif value.split("").uniq.length < SiteSetting.password_unique_characters record.errors.add(attribute, :unique_characters) end end diff --git a/spec/components/validators/password_validator_spec.rb b/spec/components/validators/password_validator_spec.rb index 7dc1b3f4b97..bbccc2f4e3c 100644 --- a/spec/components/validators/password_validator_spec.rb +++ b/spec/components/validators/password_validator_spec.rb @@ -93,19 +93,20 @@ describe PasswordValidator do end it "adds an error when there are too few unique characters" do + SiteSetting.password_unique_characters = 6 @password = "aaaaaa5432" validate expect(record.errors[:password]).to include(password_error_message(:unique_characters)) end it "doesn't add an error when there are enough unique characters" do - @password = "aaaaa54321" + @password = "aaaaa54322" validate expect(record.errors[:password]).not_to be_present end it "counts capital letters as different" do - @password = "aaaAaa5432" + @password = "aaaAaa543A" validate expect(record.errors[:password]).not_to be_present end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 7849594d55c..47a3246704b 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -613,9 +613,9 @@ describe UsersController do auth[:authenticator_name] = 'twitter' auth[:extra_data] = twitter_auth - TwitterUserInfo.expects(:create) - post_user + + expect(TwitterUserInfo.count).to eq(1) end end end