From 0a4e41e5d121662cb189489672119961cdd8d27d Mon Sep 17 00:00:00 2001 From: Mike Slemmer Date: Thu, 13 Dec 2012 19:32:23 -0800 Subject: [PATCH] set_password plus some refactoring --- lib/jam_ruby/models/user.rb | 11 ++++++----- spec/jam_ruby/models/user_spec.rb | 31 ++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/lib/jam_ruby/models/user.rb b/lib/jam_ruby/models/user.rb index 0638f4697..8612d2109 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -164,11 +164,12 @@ module JamRuby return id end - def set_password(old_password, new_password) - raise JamRuby::JamArgumentError, ValidationMessages::OLD_PASSWORD_DOESNT_MATCH unless authenticate old_password - # FIXME: Should verify that the new password meets certain quality criteria - # FIXME: Need to run the new password through the validations here. Not sure if this does that. - password = new_password + def set_password(old_password, new_password, new_password_confirmation) + raise JamRuby::JamArgumentError unless authenticate old_password + # FIXME: Should verify that the new password meets certain quality criteria. Really, maybe that should be a + # verification step. + self.password = new_password + self.password_confirmation = new_password_confirmation save end diff --git a/spec/jam_ruby/models/user_spec.rb b/spec/jam_ruby/models/user_spec.rb index ed3937bc2..088854d87 100644 --- a/spec/jam_ruby/models/user_spec.rb +++ b/spec/jam_ruby/models/user_spec.rb @@ -125,15 +125,32 @@ describe User do it { should be_invalid } end - describe "setting a new password should work" do - - end - describe "setting a new password should fail if old one doesnt match" do - - end - describe "setting a new password should fail if new one doesnt validate" do + describe "set_password" do + before do + @user.confirm_email! + end + + it "setting a new password should work" do + @user.set_password("foobar", "newpassword", "newpassword") + User.authenticate(@user.email, "newpassword").should_not be_nil + end + + it "setting a new password should fail if old one doesnt match" do + @user.set_password("wrongold", "newpassword", "newpassword").should_raise # This doesnt work. + end + + it "setting a new password should fail if new ones dont match" do + @user.set_password("foobar", "newpassword", "newpassword2") + User.authenticate(@user.email, "newpassword").should be_nil + end + + it "setting a new password should fail if new one doesnt validate" do + @user.set_password("foobar", "a", "a") + User.authenticate(@user.email, "newpassword").should be_nil + end end + describe "return value of authenticate method" do