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| %> <%= user.email %> - <%= link_to 'Show', user %> + <%= link_to 'Show', user_path(user) %> <%= link_to 'Edit', edit_user_path(user) %> - <%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %> + <%= link_to 'Destroy', user_path(user), method: :delete, data: { confirm: 'Are you sure?' } %> <% end %> diff --git a/test/dummy/db/migrate/20171104225303_create_users.rb b/test/dummy/db/migrate/20171104225303_create_users.rb index 08d86d8..ca7720a 100644 --- a/test/dummy/db/migrate/20171104225303_create_users.rb +++ b/test/dummy/db/migrate/20171104225303_create_users.rb @@ -2,6 +2,7 @@ class CreateUsers < ActiveRecord::Migration[5.1] def change create_table :users do |t| t.string :email + t.string :type t.timestamps end diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb index fa9ce3e..5dcd63f 100644 --- a/test/dummy/db/schema.rb +++ b/test/dummy/db/schema.rb @@ -27,6 +27,7 @@ create_table "users", force: :cascade do |t| t.string "email" + t.string "type" t.datetime "created_at", null: false t.datetime "updated_at", null: false end