2010-03-26 06:27:19 -04:00
|
|
|
require 'test_helper'
|
2009-10-12 07:37:42 -04:00
|
|
|
|
2013-05-03 21:56:46 -04:00
|
|
|
ExpectedRoutingError = Devise.rails4? ? MiniTest::Assertion : ActionController::RoutingError
|
|
|
|
|
2010-07-04 05:53:12 -04:00
|
|
|
class DefaultRoutingTest < ActionController::TestCase
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map new user session' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: 'users/sign_in', method: :get})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/sign_in", :new_user_session_path
|
2009-10-12 07:37:42 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map create user session' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'create'}, {path: 'users/sign_in', method: :post})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/sign_in", :user_session_path
|
2009-10-16 12:44:51 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map destroy user session' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: 'users/sign_out', method: :get})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/sign_out", :destroy_user_session_path
|
2009-10-16 12:44:51 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map new user confirmation' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/confirmations', action: 'new'}, 'users/confirmation/new')
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/confirmation/new", :new_user_confirmation_path
|
2009-10-12 07:37:42 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map create user confirmation' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/confirmations', action: 'create'}, {path: 'users/confirmation', method: :post})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/confirmation", :user_confirmation_path
|
2009-10-16 12:44:51 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map show user confirmation' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: 'users/confirmation', method: :get})
|
2009-10-16 12:44:51 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map new user password' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'users/password/new')
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/password/new", :new_user_password_path
|
2009-10-12 07:37:42 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map create user password' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: 'users/password', method: :post})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/password", :user_password_path
|
2009-10-16 12:44:51 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map edit user password' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'edit'}, 'users/password/edit')
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/password/edit", :edit_user_password_path
|
2009-10-16 12:44:51 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map update user password' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'update'}, {path: 'users/password', method: :put})
|
2009-10-16 12:44:51 -04:00
|
|
|
end
|
|
|
|
|
2010-01-23 19:26:06 -05:00
|
|
|
test 'map new user unlock' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/unlocks', action: 'new'}, 'users/unlock/new')
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/unlock/new", :new_user_unlock_path
|
2010-01-23 19:26:06 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map create user unlock' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/unlocks', action: 'create'}, {path: 'users/unlock', method: :post})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/unlock", :user_unlock_path
|
2010-01-23 19:26:06 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map show user unlock' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: 'users/unlock', method: :get})
|
2010-01-23 19:26:06 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map new user registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, 'users/sign_up')
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/sign_up", :new_user_registration_path
|
2010-01-23 19:26:06 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map create user registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'create'}, {path: 'users', method: :post})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users", :user_registration_path
|
2010-02-08 14:25:20 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map edit user registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'edit'}, {path: 'users/edit', method: :get})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_named_route "/users/edit", :edit_user_registration_path
|
2010-02-08 14:25:20 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map update user registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'update'}, {path: 'users', method: :put})
|
2010-02-08 14:25:20 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map destroy user registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'destroy'}, {path: 'users', method: :delete})
|
2010-01-23 19:26:06 -05:00
|
|
|
end
|
|
|
|
|
2010-07-15 15:58:35 -04:00
|
|
|
test 'map cancel user registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'cancel'}, {path: 'users/cancel', method: :get})
|
2010-07-15 15:58:35 -04:00
|
|
|
assert_named_route "/users/cancel", :cancel_user_registration_path
|
|
|
|
end
|
|
|
|
|
2010-10-14 18:44:21 -04:00
|
|
|
test 'map omniauth callbacks' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'users/omniauth_callbacks', action: 'facebook'}, {path: 'users/auth/facebook/callback', method: :get})
|
|
|
|
assert_recognizes({controller: 'users/omniauth_callbacks', action: 'facebook'}, {path: 'users/auth/facebook/callback', method: :post})
|
2010-10-14 18:44:21 -04:00
|
|
|
assert_named_route "/users/auth/facebook/callback", :user_omniauth_callback_path, :facebook
|
2010-07-12 12:56:27 -04:00
|
|
|
|
2011-05-24 15:59:36 -04:00
|
|
|
# named open_id
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'users/omniauth_callbacks', action: 'google'}, {path: 'users/auth/google/callback', method: :get})
|
|
|
|
assert_recognizes({controller: 'users/omniauth_callbacks', action: 'google'}, {path: 'users/auth/google/callback', method: :post})
|
2011-05-24 15:59:36 -04:00
|
|
|
assert_named_route "/users/auth/google/callback", :user_omniauth_callback_path, :google
|
|
|
|
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'ysers/omniauth_callbacks', action: 'twitter'}, {path: 'users/auth/twitter/callback', method: :get})
|
2010-07-12 12:56:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2010-07-04 05:53:12 -04:00
|
|
|
protected
|
|
|
|
|
2010-07-16 07:42:13 -04:00
|
|
|
def assert_named_route(result, *args)
|
|
|
|
assert_equal result, @routes.url_helpers.send(*args)
|
2010-07-04 05:53:12 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class CustomizedRoutingTest < ActionController::TestCase
|
2010-05-19 02:43:10 -04:00
|
|
|
test 'map admin with :path option' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'admin_area/sign_up', method: :get})
|
2010-02-17 07:15:19 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map admin with :controllers option' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'admins/sessions', action: 'new'}, {path: 'admin_area/sign_in', method: :get})
|
2009-10-12 07:37:42 -04:00
|
|
|
end
|
|
|
|
|
2010-03-29 10:13:19 -04:00
|
|
|
test 'does not map admin password' do
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'admin_area/password/new')
|
2009-10-12 08:56:12 -04:00
|
|
|
end
|
2009-10-12 07:37:42 -04:00
|
|
|
end
|
2009-10-12 09:18:14 -04:00
|
|
|
|
2012-02-17 05:14:42 -05:00
|
|
|
test 'subdomain admin' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({"host"=>"sub.example.com", controller: 'devise/sessions', action: 'new'}, {host: "sub.example.com", path: '/sub_admin/sign_in', method: :get})
|
2012-02-17 05:14:42 -05:00
|
|
|
end
|
|
|
|
|
2011-04-15 04:12:44 -04:00
|
|
|
test 'does only map reader password' do
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'new'}, 'reader/sessions/new')
|
2011-04-15 04:12:44 -04:00
|
|
|
end
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'reader/password/new')
|
2011-04-15 04:12:44 -04:00
|
|
|
end
|
|
|
|
|
2009-10-16 19:46:06 -04:00
|
|
|
test 'map account with custom path name for session sign in' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'new', locale: 'en'}, '/en/accounts/login')
|
2009-10-16 19:46:06 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map account with custom path name for session sign out' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy', locale: 'en'}, '/en/accounts/logout')
|
2009-10-16 19:46:06 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'map account with custom path name for password' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'new', locale: 'en'}, '/en/accounts/secret/new')
|
2009-10-16 19:46:06 -04:00
|
|
|
end
|
|
|
|
|
2010-01-23 19:26:06 -05:00
|
|
|
test 'map account with custom path name for registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new', locale: 'en'}, '/en/accounts/management/register')
|
2010-01-23 19:26:06 -05:00
|
|
|
end
|
2010-07-15 15:58:35 -04:00
|
|
|
|
2014-01-02 20:49:37 -05:00
|
|
|
test 'map account with custom path name for edit registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'edit', locale: 'en'}, '/en/accounts/management/edit/profile')
|
2014-01-02 20:49:37 -05:00
|
|
|
end
|
|
|
|
|
2010-07-15 15:58:35 -04:00
|
|
|
test 'map account with custom path name for cancel registration' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'cancel', locale: 'en'}, '/en/accounts/management/giveup')
|
2010-07-15 15:58:35 -04:00
|
|
|
end
|
|
|
|
|
2010-08-13 05:40:06 -04:00
|
|
|
test 'map deletes with :sign_out_via option' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/deletes/sign_out', method: :delete})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/deletes/sign_out', method: :get})
|
2010-08-13 05:40:06 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
test 'map posts with :sign_out_via option' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/posts/sign_out', method: :post})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/posts/sign_out', method: :get})
|
2010-08-13 05:40:06 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
test 'map delete_or_posts with :sign_out_via option' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :post})
|
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :delete})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :get})
|
2010-08-13 05:40:06 -04:00
|
|
|
end
|
|
|
|
end
|
2013-01-27 16:48:41 -05:00
|
|
|
|
2011-06-17 00:24:20 -04:00
|
|
|
test 'map with constraints defined in hash' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://192.168.1.100/headquarters/sign_up', method: :get})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://10.0.0.100/headquarters/sign_up', method: :get})
|
2011-06-17 00:24:20 -04:00
|
|
|
end
|
|
|
|
end
|
2013-01-27 16:48:41 -05:00
|
|
|
|
2011-06-17 00:24:20 -04:00
|
|
|
test 'map with constraints defined in block' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://192.168.1.100/homebase/sign_up', method: :get})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://10.0.0.100//homebase/sign_up', method: :get})
|
2011-06-17 00:24:20 -04:00
|
|
|
end
|
|
|
|
end
|
2013-01-27 16:48:41 -05:00
|
|
|
|
2011-06-27 07:51:04 -04:00
|
|
|
test 'map with format false for sessions' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: '/htmlonly_admin/sign_in', method: :get})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: '/htmlonly_admin/sign_in.xml', method: :get})
|
2011-06-27 07:51:04 -04:00
|
|
|
end
|
|
|
|
end
|
2013-01-27 16:48:41 -05:00
|
|
|
|
2011-06-27 07:51:04 -04:00
|
|
|
test 'map with format false for passwords' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: '/htmlonly_admin/password', method: :post})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: '/htmlonly_admin/password.xml', method: :post})
|
2011-06-27 07:51:04 -04:00
|
|
|
end
|
|
|
|
end
|
2013-01-27 16:48:41 -05:00
|
|
|
|
2011-06-27 07:51:04 -04:00
|
|
|
test 'map with format false for registrations' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: '/htmlonly_admin/sign_up', method: :get})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: '/htmlonly_admin/sign_up.xml', method: :get})
|
2011-06-27 07:51:04 -04:00
|
|
|
end
|
|
|
|
end
|
2013-01-27 16:48:41 -05:00
|
|
|
|
2011-06-27 07:51:04 -04:00
|
|
|
test 'map with format false for confirmations' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: '/htmlonly_users/confirmation', method: :get})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: '/htmlonly_users/confirmation.xml', method: :get})
|
2011-06-27 07:51:04 -04:00
|
|
|
end
|
|
|
|
end
|
2013-01-27 16:48:41 -05:00
|
|
|
|
2011-06-27 07:51:04 -04:00
|
|
|
test 'map with format false for unlocks' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: '/htmlonly_users/unlock', method: :get})
|
2013-05-03 21:56:46 -04:00
|
|
|
assert_raise ExpectedRoutingError do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: '/htmlonly_users/unlock.xml', method: :get})
|
2011-06-27 07:51:04 -04:00
|
|
|
end
|
|
|
|
end
|
2011-12-12 03:25:19 -05:00
|
|
|
|
|
|
|
test 'map with format false is not permanent' do
|
|
|
|
assert_equal "/set.xml", @routes.url_helpers.set_path(:xml)
|
|
|
|
end
|
2013-12-18 20:19:25 -05:00
|
|
|
|
|
|
|
test 'checks if mapping has proper configuration for omniauth callback' do
|
2014-07-10 07:26:40 -04:00
|
|
|
e = assert_raise ArgumentError do
|
2014-07-29 17:22:42 -04:00
|
|
|
routes = ActionDispatch::Routing::RouteSet.new
|
|
|
|
routes.draw do
|
2014-07-10 07:58:21 -04:00
|
|
|
devise_for :not_omniauthable, class_name: 'Admin', controllers: {omniauth_callbacks: "users/omniauth_callbacks"}
|
2014-07-29 17:22:42 -04:00
|
|
|
end
|
2013-12-18 20:19:25 -05:00
|
|
|
end
|
2014-07-10 07:26:40 -04:00
|
|
|
assert_match "Mapping omniauth_callbacks on a resource that is not omniauthable", e.message
|
2013-12-18 20:19:25 -05:00
|
|
|
end
|
2009-10-12 07:37:42 -04:00
|
|
|
end
|
2010-07-04 05:53:12 -04:00
|
|
|
|
|
|
|
class ScopedRoutingTest < ActionController::TestCase
|
|
|
|
test 'map publisher account' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'publisher/registrations', action: 'new'}, {path: '/publisher/accounts/sign_up', method: :get})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_equal '/publisher/accounts/sign_up', @routes.url_helpers.new_publisher_account_registration_path
|
|
|
|
end
|
|
|
|
|
|
|
|
test 'map publisher account merges path names' do
|
2014-02-25 11:42:55 -05:00
|
|
|
assert_recognizes({controller: 'publisher/sessions', action: 'new'}, {path: '/publisher/accounts/get_in', method: :get})
|
2010-07-04 05:53:12 -04:00
|
|
|
assert_equal '/publisher/accounts/get_in', @routes.url_helpers.new_publisher_account_session_path
|
|
|
|
end
|
|
|
|
end
|