diff --git a/lib/passwordless/controller_helpers.rb b/lib/passwordless/controller_helpers.rb index a5fe7a6..6def425 100644 --- a/lib/passwordless/controller_helpers.rb +++ b/lib/passwordless/controller_helpers.rb @@ -72,11 +72,11 @@ def reset_passwordless_redirect_location!(authenticatable_class) private def session_key(authenticatable_class) - :"passwordless_prev_location--#{authenticatable_class}" + :"passwordless_prev_location--#{authenticatable_class.base_class}" end def cookie_name(authenticatable_class) - :"#{authenticatable_class.to_s.underscore}_id" + :"#{authenticatable_class.base_class.to_s.underscore}_id" end end end diff --git a/test/controllers/passwordless/sessions_controller_test.rb b/test/controllers/passwordless/sessions_controller_test.rb index 5cf4885..432ee88 100644 --- a/test/controllers/passwordless/sessions_controller_test.rb +++ b/test/controllers/passwordless/sessions_controller_test.rb @@ -13,7 +13,7 @@ def create_session_for(user) end test 'requesting a magic link as an existing user' do - user = User.create email: 'a@a' + User.create email: 'a@a' get '/users/sign_in' assert_equal 200, status @@ -47,7 +47,19 @@ def create_session_for(user) assert_equal 200, status assert_equal '/', path - refute_nil cookies[:user_id] + assert_not_nil cookies[:user_id] + end + + test 'signing in via a token as STI model' do + admin = Admin.create email: 'a@a' + session = create_session_for admin + + get "/users/sign_in/#{session.token}" + follow_redirect! + + assert_equal 200, status + assert_equal '/', path + assert_not_nil cookies[:user_id] end test 'signing in and redirecting back' do @@ -99,7 +111,7 @@ def create_session_for(user) session = create_session_for user get "/users/sign_in/#{session.token}" - refute_nil cookies[:user_id] + assert_not_nil cookies[:user_id] get '/users/sign_out' follow_redirect! diff --git a/test/dummy/app/models/admin.rb b/test/dummy/app/models/admin.rb new file mode 100644 index 0000000..6d19386 --- /dev/null +++ b/test/dummy/app/models/admin.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +class Admin < User +end diff --git a/test/dummy/app/views/users/index.html.erb b/test/dummy/app/views/users/index.html.erb index 917e449..26982f8 100644 --- a/test/dummy/app/views/users/index.html.erb +++ b/test/dummy/app/views/users/index.html.erb @@ -14,9 +14,9 @@ <% @users.each do |user| %>