class Shoulda::Matchers::ActiveModel::HaveSecurePasswordMatcher

def validate

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