From 8e23d1105400b67ee5f5c34fa7f5da13ae56daa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20St=C4=99pie=C5=84?= Date: Mon, 5 Sep 2011 01:10:47 +0200 Subject: [PATCH] Added User.uses_deprecated_password? method --- app/models/user.rb | 5 +++++ test/unit/user_test.rb | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index 29c55439..ab520d7b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -211,6 +211,11 @@ class User < ActiveRecord::Base save(false) end + # Returns true if the user has a password hashed using SHA-1. + def uses_deprecated_password? + crypted_password =~ /^[a-f0-9]{40}$/i + end + protected def self.salted(s) diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index a1946295..b820fbaf 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -330,6 +330,19 @@ class UserTest < ActiveSupport::TestCase assert_equal u.id, User.find_by_open_id_url(raw_open_id_url).id end end + + def test_should_discover_using_depracted_password + assert_nil @admin_user.uses_deprecated_password? + assert_nil @other_user.uses_deprecated_password? + assert users(:user_with_sha1_password).uses_deprecated_password? + end + + def test_should_not_have_deprecated_password_after_update + u = users(:user_with_sha1_password) + assert u.uses_deprecated_password? + u.change_password("foobar", "foobar") + assert_nil u.uses_deprecated_password? + end protected