class Shoulda::Matchers::ActiveModel::HaveSecurePasswordMatcher
@private
Constants
- CORRECT_PASSWORD
- INCORRECT_PASSWORD
- MESSAGES
Attributes
Public Class Methods
Source
# File lib/shoulda/matchers/active_model/have_secure_password_matcher.rb, line 52 def initialize(attribute) @attribute = attribute.to_sym end
Public Instance Methods
Source
# File lib/shoulda/matchers/active_model/have_secure_password_matcher.rb, line 56 def description "have a secure password, defined on #{@attribute} attribute" end
Source
# File lib/shoulda/matchers/active_model/have_secure_password_matcher.rb, line 60 def matches?(subject) @subject = subject if failure = validate key, params = failure @failure_message = MESSAGES[key] % { subject: subject.class }.merge(params) end failure.nil? end
Protected Instance Methods
Source
# File lib/shoulda/matchers/active_model/have_secure_password_matcher.rb, line 76 def validate missing_methods = expected_methods.reject do |m| subject.respond_to?(m) end if missing_methods.present? [:method_not_found, { methods: missing_methods.to_sentence }] else subject.send("#{@attribute}=", CORRECT_PASSWORD) subject.send("#{@attribute}_confirmation=", CORRECT_PASSWORD) if not subject.send(authenticate_method, CORRECT_PASSWORD) [:did_not_authenticate_correct_password, { attribute: @attribute },] elsif subject.send(authenticate_method, INCORRECT_PASSWORD) [:authenticated_incorrect_password, { attribute: @attribute }] end end end
Private Instance Methods
Source
# File lib/shoulda/matchers/active_model/have_secure_password_matcher.rb, line 108 def authenticate_method if @attribute == :password :authenticate else "authenticate_#{@attribute}".to_sym end end
Source
# File lib/shoulda/matchers/active_model/have_secure_password_matcher.rb, line 98 def expected_methods @_expected_methods ||= %I[ #{authenticate_method} #{@attribute}= #{@attribute}_confirmation= #{@attribute}_digest #{@attribute}_digest= ] end