def UserSessionContext(user_id: UserId) -> Iterator[None]: """Managing context of authenticated user session with cleanup before logout.""" with config.UserContext(user_id): try: yield finally: html.transaction_manager.store_new() userdb.on_end_of_request(user_id)
def test_get_last_activity(with_user, session_valid): user_id = with_user[0] user = _load_users_uncached(lock=False)[user_id] assert userdb.get_last_activity(user) == time.time() - 5 userdb.on_access(user_id, session_valid) userdb.on_end_of_request(user_id) user = _load_users_uncached(lock=False)[user_id] assert "session_info" in user assert userdb.get_last_activity(user) == time.time()
def UserContext(user_id: UserId) -> Iterator[None]: """Managing authenticated user context After the user has been authenticated, initialize the global user object. Also cleanup when leaving""" try: config.set_user_by_id(user_id) yield finally: html.transaction_manager.store_new() userdb.on_end_of_request(user_id) config.clear_user_login()
def test_get_last_activity(with_user: tuple[UserId, str]) -> None: now = datetime.now() user_id = with_user[0] session_valid = make_valid_session(user_id, now) user = _load_users_uncached(lock=False)[user_id] assert userdb.get_last_activity(user) == int(now.timestamp()) - 5 userdb.on_access(user_id, session_valid, now) userdb.on_end_of_request(user_id, now) user = _load_users_uncached(lock=False)[user_id] assert "session_info" in user assert userdb.get_last_activity(user) == int(now.timestamp())
def test_on_access_update_idle_session(user_id, session_timed_out): old_session_infos = userdb._load_session_infos(user_id) old_session = old_session_infos[session_timed_out] userdb.on_access(user_id, session_timed_out) userdb.on_end_of_request(user_id) new_session_infos = userdb._load_session_infos(user_id) new_session = new_session_infos[session_timed_out] assert new_session.session_id == old_session.session_id assert new_session.started_at == old_session.started_at assert new_session.last_activity == time.time() assert new_session.last_activity > old_session.last_activity
def test_refresh_session_success(user_id: UserId, session_valid: str) -> None: session_infos = userdb._load_session_infos(user_id) assert session_infos old_session = userdb.SessionInfo(**asdict(session_infos[session_valid])) with on_time("2019-09-05 00:00:30", "UTC"): userdb._set_session(user_id, session_infos[session_valid]) userdb._refresh_session(user_id, session_infos[session_valid]) userdb.on_end_of_request(user_id) new_session_infos = userdb._load_session_infos(user_id) new_session = new_session_infos[session_valid] assert old_session.session_id == new_session.session_id assert new_session.last_activity > old_session.last_activity
def test_on_access_update_valid_session(user_id: UserId, session_valid: str) -> None: old_session_infos = userdb._load_session_infos(user_id) old_session = old_session_infos[session_valid] userdb.on_access(user_id, session_valid) userdb.on_end_of_request(user_id) new_session_infos = userdb._load_session_infos(user_id) new_session = new_session_infos[session_valid] assert new_session.session_id == old_session.session_id assert new_session.started_at == old_session.started_at assert new_session.last_activity == time.time() assert new_session.last_activity > old_session.last_activity
def test_on_access_update_idle_session(user_id: UserId) -> None: now = datetime.now() session_timed_out = make_timed_out_session(user_id, now) old_session_infos = userdb._load_session_infos(user_id) old_session = old_session_infos[session_timed_out] userdb.on_access(user_id, session_timed_out, now) userdb.on_end_of_request(user_id, now) new_session_infos = userdb._load_session_infos(user_id) new_session = new_session_infos[session_timed_out] assert new_session.session_id == old_session.session_id assert new_session.started_at == old_session.started_at assert new_session.last_activity == int(now.timestamp()) assert new_session.last_activity > old_session.last_activity
def test_refresh_session_success(user_id: UserId) -> None: now = datetime.now() session_valid = make_valid_session(user_id, now) session_infos = userdb._load_session_infos(user_id) assert session_infos old_session = userdb.SessionInfo(**asdict(session_infos[session_valid])) now += timedelta(minutes=30) userdb._set_session(user_id, session_infos[session_valid]) userdb._refresh_session(session_infos[session_valid], now) userdb.on_end_of_request(user_id, now) new_session_infos = userdb._load_session_infos(user_id) new_session = new_session_infos[session_valid] assert old_session.session_id == new_session.session_id assert new_session.last_activity > old_session.last_activity