Simplified logic for checking if the email is present and moved the Mongoid classes out of eval statements
This commit is contained in:
parent
0287d8cc80
commit
cb5e0c4a7b
|
@ -15,8 +15,7 @@ module Devise
|
|||
def database_authenticatable(options={})
|
||||
null = options[:null] || false
|
||||
default = options.key?(:default) ? options[:default] : ("" if null == false)
|
||||
include_email = !self.respond_to?(:authentication_keys) \
|
||||
|| (self.respond_to?(:authentication_keys) && self.authentication_keys.include?(:email))
|
||||
include_email = !self.respond_to?(:authentication_keys) || self.authentication_keys.include?(:email)
|
||||
|
||||
apply_devise_schema :email, String, :null => null, :default => default if include_email
|
||||
apply_devise_schema :encrypted_password, String, :null => null, :default => default, :limit => 128
|
||||
|
|
|
@ -1,21 +1,33 @@
|
|||
require 'test_helper'
|
||||
if DEVISE_ORM == :mongoid
|
||||
|
||||
class SchemaTest < ActiveSupport::TestCase
|
||||
if DEVISE_ORM == :mongoid
|
||||
require 'test_helper'
|
||||
|
||||
class User2
|
||||
include Mongoid::Document
|
||||
devise :database_authenticatable
|
||||
end
|
||||
|
||||
class User3
|
||||
include Mongoid::Document
|
||||
devise :database_authenticatable, :authentication_keys => [:username, :email]
|
||||
end
|
||||
|
||||
class User4
|
||||
include Mongoid::Document
|
||||
devise :database_authenticatable, :authentication_keys => [:username]
|
||||
end
|
||||
|
||||
class SchemaTest < ActiveSupport::TestCase
|
||||
test 'should create an email field if there are no custom authentication keys' do
|
||||
eval "class User2; include Mongoid::Document; devise :database_authenticatable; end"
|
||||
assert_not_equal User2.fields['email'], nil
|
||||
end
|
||||
|
||||
test 'should create an email field if there are custom authentication keys and they include email' do
|
||||
eval "class User3; include Mongoid::Document; devise :database_authenticatable, :authentication_keys => [:username, :email]; end"
|
||||
assert_not_equal User3.fields['email'], nil
|
||||
end
|
||||
|
||||
|
||||
test 'should not create an email field if there are custom authentication keys they don\'t include email' do
|
||||
eval "class User4; include Mongoid::Document; devise :database_authenticatable, :authentication_keys => [:usernames]; end"
|
||||
assert_equal User4.fields['email'], nil
|
||||
assert_equal User4.fields['username'], nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue