1
0
Fork 0
mirror of https://github.com/heartcombo/devise.git synced 2022-11-09 12:18:31 -05:00
heartcombo--devise/test/mapping_test.rb

137 lines
4.6 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require 'test_helper'
2009-10-12 07:37:42 -04:00
class FakeRequest < Struct.new(:path_info, :params)
end
class MappingTest < ActiveSupport::TestCase
def fake_request(path, params={})
FakeRequest.new(path, params)
end
2009-10-12 07:37:42 -04:00
test 'store options' do
2009-10-12 20:49:51 -04:00
mapping = Devise.mappings[:user]
assert_equal User, mapping.to
assert_equal User.devise_modules, mapping.modules
assert_equal "users", mapping.scoped_path
assert_equal :user, mapping.singular
assert_equal "users", mapping.path
assert_equal "/users", mapping.fullpath
end
test 'store options with namespace' do
mapping = Devise.mappings[:publisher_account]
assert_equal Admin, mapping.to
assert_equal "publisher/accounts", mapping.scoped_path
assert_equal :publisher_account, mapping.singular
assert_equal "accounts", mapping.path
assert_equal "/publisher/accounts", mapping.fullpath
2009-10-12 07:37:42 -04:00
end
test 'allows path to be given' do
assert_equal "admin_area", Devise.mappings[:admin].path
2009-10-12 07:37:42 -04:00
end
2009-10-12 07:49:28 -04:00
2011-09-14 19:50:13 -04:00
test 'allows to skip all routes' do
assert_equal [], Devise.mappings[:skip_admin].used_routes
end
test 'sign_out_via defaults to :delete' do
assert_equal :delete, Devise.mappings[:user].sign_out_via
end
test 'allows custom sign_out_via to be given' do
assert_equal :delete, Devise.mappings[:sign_out_via_delete].sign_out_via
assert_equal :post, Devise.mappings[:sign_out_via_post].sign_out_via
assert_equal [:delete, :post], Devise.mappings[:sign_out_via_delete_or_post].sign_out_via
end
test 'allows custom singular to be given' do
assert_equal "accounts", Devise.mappings[:manager].path
2009-10-12 07:49:28 -04:00
end
2009-10-12 08:56:12 -04:00
test 'has strategies depending on the model declaration' do
2013-09-02 18:15:47 -04:00
assert_equal [:rememberable, :database_authenticatable], Devise.mappings[:user].strategies
assert_equal [:database_authenticatable], Devise.mappings[:admin].strategies
end
test 'has no input strategies depending on the model declaration' do
2013-09-02 18:15:47 -04:00
assert_equal [:rememberable], Devise.mappings[:user].no_input_strategies
assert_equal [], Devise.mappings[:admin].no_input_strategies
end
test 'find scope for a given object' do
assert_equal :user, Devise::Mapping.find_scope!(User)
assert_equal :user, Devise::Mapping.find_scope!(:user)
assert_equal :user, Devise::Mapping.find_scope!("user")
assert_equal :user, Devise::Mapping.find_scope!(User.new)
end
test 'find scope works with single table inheritance' do
assert_equal :user, Devise::Mapping.find_scope!(Class.new(User))
assert_equal :user, Devise::Mapping.find_scope!(Class.new(User).new)
end
test 'find scope uses devise_scope' do
user = User.new
def user.devise_scope; :special_scope; end
assert_equal :special_scope, Devise::Mapping.find_scope!(user)
end
test 'find scope raises an error if cannot be found' do
2009-11-15 12:14:08 -05:00
assert_raise RuntimeError do
Devise::Mapping.find_scope!(String)
2009-11-15 12:14:08 -05:00
end
end
test 'return default path names' do
mapping = Devise.mappings[:user]
assert_equal 'sign_in', mapping.path_names[:sign_in]
assert_equal 'sign_out', mapping.path_names[:sign_out]
assert_equal 'password', mapping.path_names[:password]
assert_equal 'confirmation', mapping.path_names[:confirmation]
assert_equal 'sign_up', mapping.path_names[:sign_up]
assert_equal 'unlock', mapping.path_names[:unlock]
end
test 'allow custom path names to be given' do
2009-12-21 09:29:58 -05:00
mapping = Devise.mappings[:manager]
assert_equal 'login', mapping.path_names[:sign_in]
assert_equal 'logout', mapping.path_names[:sign_out]
assert_equal 'secret', mapping.path_names[:password]
assert_equal 'verification', mapping.path_names[:confirmation]
assert_equal 'register', mapping.path_names[:sign_up]
assert_equal 'unblock', mapping.path_names[:unlock]
end
2009-10-12 20:06:39 -04:00
test 'magic predicates' do
2009-10-12 20:49:51 -04:00
mapping = Devise.mappings[:user]
assert mapping.authenticatable?
2009-10-12 20:06:39 -04:00
assert mapping.confirmable?
2009-10-12 20:49:51 -04:00
assert mapping.recoverable?
2009-10-19 22:31:33 -04:00
assert mapping.rememberable?
assert mapping.registerable?
2009-10-12 20:49:51 -04:00
mapping = Devise.mappings[:admin]
assert mapping.authenticatable?
assert mapping.recoverable?
assert mapping.lockable?
refute mapping.omniauthable?
2009-10-12 20:06:39 -04:00
end
2013-12-05 03:03:32 -05:00
test 'find mapping by path' do
assert_raise RuntimeError do
Devise::Mapping.find_by_path!('/accounts/facebook/callback')
end
2013-12-05 03:03:32 -05:00
assert_nothing_raised do
Devise::Mapping.find_by_path!('/:locale/accounts/login')
end
assert_nothing_raised do
Devise::Mapping.find_by_path!('/accounts/facebook/callback', :path)
end
2013-12-05 03:03:32 -05:00
end
2009-10-12 07:37:42 -04:00
end