def test_on_succeeded_login(user_id: UserId, zero_uuid: None) -> None: now = datetime.now() assert active_config.single_user_session is None # Never logged in before assert not userdb._load_session_infos(user_id) assert userdb._load_failed_logins(user_id) == 0 session_id = userdb.on_succeeded_login(user_id, now) assert session_id != "" # Verify the session was initialized session_infos = userdb._load_session_infos(user_id) assert session_infos == { session_id: userdb.SessionInfo( session_id=session_id, started_at=int(now.timestamp()), last_activity=int(now.timestamp()), flashes=[], csrf_token="00000000-0000-0000-0000-000000000000", ) } # Ensure the failed login count is 0 assert userdb._load_failed_logins(user_id) == 0
def test_on_failed_login_count_reset_on_succeeded_login(user_id): assert config.lock_on_logon_failures is False assert userdb._load_failed_logins(user_id) == 0 assert userdb._user_locked(user_id) is False userdb.on_failed_login(user_id) assert userdb._load_failed_logins(user_id) == 1 assert userdb._user_locked(user_id) is False userdb.on_succeeded_login(user_id) assert userdb._load_failed_logins(user_id) == 0 assert userdb._user_locked(user_id) is False
def test_on_failed_login_count_reset_on_succeeded_login( user_id: UserId) -> None: now = datetime.now() assert active_config.lock_on_logon_failures is None assert userdb._load_failed_logins(user_id) == 0 assert not userdb.user_locked(user_id) userdb.on_failed_login(user_id, now) assert userdb._load_failed_logins(user_id) == 1 assert not userdb.user_locked(user_id) userdb.on_succeeded_login(user_id, now) assert userdb._load_failed_logins(user_id) == 0 assert not userdb.user_locked(user_id)
def test_on_failed_login_with_locking(user_id: UserId) -> None: assert config.lock_on_logon_failures == 3 assert userdb._load_failed_logins(user_id) == 0 assert userdb.user_locked(user_id) is False userdb.on_failed_login(user_id) assert userdb._load_failed_logins(user_id) == 1 assert userdb.user_locked(user_id) is False userdb.on_failed_login(user_id) assert userdb._load_failed_logins(user_id) == 2 assert userdb.user_locked(user_id) is False userdb.on_failed_login(user_id) assert userdb._load_failed_logins(user_id) == 3 assert userdb.user_locked(user_id) is True
def test_on_failed_login_no_locking(user_id): assert config.lock_on_logon_failures is False assert userdb._load_failed_logins(user_id) == 0 assert userdb._user_locked(user_id) is False userdb.on_failed_login(user_id) assert userdb._load_failed_logins(user_id) == 1 assert userdb._user_locked(user_id) is False userdb.on_failed_login(user_id) assert userdb._load_failed_logins(user_id) == 2 assert userdb._user_locked(user_id) is False userdb.on_failed_login(user_id) assert userdb._load_failed_logins(user_id) == 3 assert userdb._user_locked(user_id) is False
def test_on_failed_login_with_locking(monkeypatch: MonkeyPatch, user_id: UserId) -> None: now = datetime.now() monkeypatch.setattr(active_config, "lock_on_logon_failures", 3) assert active_config.lock_on_logon_failures == 3 assert userdb._load_failed_logins(user_id) == 0 assert not userdb.user_locked(user_id) userdb.on_failed_login(user_id, now) assert userdb._load_failed_logins(user_id) == 1 assert not userdb.user_locked(user_id) userdb.on_failed_login(user_id, now) assert userdb._load_failed_logins(user_id) == 2 assert not userdb.user_locked(user_id) userdb.on_failed_login(user_id, now) assert userdb._load_failed_logins(user_id) == 3 assert userdb.user_locked(user_id)
def test_on_succeeded_login(user_id): assert config.single_user_session is None # Never logged in before assert not userdb._load_session_infos(user_id) assert userdb._load_failed_logins(user_id) == 0 session_id = userdb.on_succeeded_login(user_id) assert session_id != "" # Verify the session was initialized session_infos = userdb._load_session_infos(user_id) assert session_infos == { session_id: userdb.SessionInfo( session_id=session_id, started_at=int(time.time()), last_activity=int(time.time()), ) } # Ensure the failed login count is 0 assert userdb._load_failed_logins(user_id) == 0