From 672798ece69c178de01fc3b887ca4da7cd77fb1e Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Mon, 4 May 2020 04:06:29 -0400 Subject: [PATCH] Add a test for clear_all_user_sessions --- tests/cache/test_cache.py | 43 ++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/tests/cache/test_cache.py b/tests/cache/test_cache.py index 16baea7..7b8ce42 100644 --- a/tests/cache/test_cache.py +++ b/tests/cache/test_cache.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +from CTFd.cache import clear_user_session, clear_all_user_sessions from CTFd.models import Users from CTFd.utils.user import is_admin, get_current_user from CTFd.utils.security.auth import login_user @@ -21,17 +22,45 @@ def test_clear_user_session(): assert user.type == "user" assert is_admin() is False - # Set the user's updated type - user = Users.query.filter_by(id=2).first() - user.type = "admin" - app.db.session.commit() + # Set the user's updated type + user = Users.query.filter_by(id=2).first() + user.type = "admin" + app.db.session.commit() - # The user's type should now be admin + # Should still return False because this is still cached + assert is_admin() is False + + clear_user_session(user_id=2) + + # Should now return True after clearing cache + assert is_admin() is True + destroy_ctfd(app) + + +def test_clear_all_user_sessions(): + app = create_ctfd() + with app.app_context(): + register_user(app) + + # Users by default should have a non-admin type user = Users.query.filter_by(id=2).first() with app.test_request_context("/"): login_user(user) user = get_current_user() assert user.id == 2 - assert user.type == "admin" + assert user.type == "user" + assert is_admin() is False + + # Set the user's updated type + user = Users.query.filter_by(id=2).first() + user.type = "admin" + app.db.session.commit() + + # Should still return False because this is still cached + assert is_admin() is False + + clear_all_user_sessions() + + # Should now return True after clearing cache assert is_admin() is True - destroy_ctfd(app) + destroy_ctfd(app) \ No newline at end of file