Skip to content

Commit ef75ea8

Browse files
Add test coverage.
1 parent ac604f9 commit ef75ea8

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

app/controllers/active_sessions_controller.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ class ActiveSessionsController < ApplicationController
22
before_action :authenticate_user!
33

44
def destroy
5+
user = current_user
56
@active_session = current_user.active_sessions.find(params[:id])
67

78
@active_session.destroy
89

910
if current_user
1011
redirect_to account_path, notice: "Session deleted."
1112
else
13+
forget(user)
1214
reset_session
1315
redirect_to root_path, notice: "Signed out."
1416
end
@@ -17,6 +19,7 @@ def destroy
1719
def destroy_all
1820
current_user
1921

22+
forget(current_user)
2023
current_user.active_sessions.destroy_all
2124
reset_session
2225

test/controllers/active_sessions_controller_test.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@ class ActiveSessionsControllerTest < ActionDispatch::IntegrationTest
1818
assert_not_nil flash[:notice]
1919
end
2020

21+
test "should destroy all active sessions and forget active sessions" do
22+
login @confirmed_user, remember_user: true
23+
@confirmed_user.active_sessions.create!
24+
25+
assert_difference("ActiveSession.count", -2) do
26+
delete destroy_all_active_sessions_path
27+
end
28+
29+
assert_nil current_user
30+
assert cookies[:remember_token].blank?
31+
end
32+
2133
test "should destroy another session" do
2234
login @confirmed_user
2335
@confirmed_user.active_sessions.create!
@@ -42,4 +54,15 @@ class ActiveSessionsControllerTest < ActionDispatch::IntegrationTest
4254
assert_nil current_user
4355
assert_not_nil flash[:notice]
4456
end
57+
58+
test "should destroy current session and forget current active session" do
59+
login @confirmed_user, remember_user: true
60+
61+
assert_difference("ActiveSession.count", -1) do
62+
delete active_session_path(@confirmed_user.active_sessions.last)
63+
end
64+
65+
assert_nil current_user
66+
assert cookies[:remember_token].blank?
67+
end
4568
end

test/test_helper.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ class ActiveSupport::TestCase
1111

1212
# Add more helper methods to be used by all tests here...
1313
def current_user
14-
session[:current_active_session_id] && ActiveSession.find_by(id: session[:current_active_session_id])&.user
14+
if session[:current_active_session_id].present?
15+
ActiveSession.find_by(id: session[:current_active_session_id])&.user
16+
else cookies[:remember_token].present?
17+
User.find_by(remember_token: cookies[:remember_token])
18+
end
1519
end
1620

1721
def login(user, remember_user: nil)

0 commit comments

Comments
 (0)