diff --git a/chatmaild/src/chatmaild/lastlogin.py b/chatmaild/src/chatmaild/lastlogin.py index fe1a2fa6..9adadef7 100644 --- a/chatmaild/src/chatmaild/lastlogin.py +++ b/chatmaild/src/chatmaild/lastlogin.py @@ -29,6 +29,8 @@ def write_last_login_to_userdir(userdir, timestamp): def get_last_login_from_userdir(userdir) -> int: + if "@" not in userdir.name: + return get_daytimestamp(time.time()) target = userdir.joinpath(LAST_LOGIN) try: return int(target.stat().st_mtime) diff --git a/chatmaild/src/chatmaild/tests/test_delete_inactive_users.py b/chatmaild/src/chatmaild/tests/test_delete_inactive_users.py index 33e2b69c..cd95d179 100644 --- a/chatmaild/src/chatmaild/tests/test_delete_inactive_users.py +++ b/chatmaild/src/chatmaild/tests/test_delete_inactive_users.py @@ -6,7 +6,7 @@ from chatmaild.lastlogin import get_last_login_from_userdir, write_last_login_to def test_login_timestamps(tmp_path): - userdir = tmp_path.joinpath("someuser") + userdir = tmp_path.joinpath("someuser@chat.example.org") userdir.mkdir() write_last_login_to_userdir(userdir, timestamp=100000) assert get_last_login_from_userdir(userdir) == 86400 @@ -18,6 +18,13 @@ def test_login_timestamps(tmp_path): assert get_last_login_from_userdir(userdir) == 86400 * 2 +def test_delete_skips_non_email_dir(db, example_config): + userdir = example_config.get_user_maildir("something") + userdir.mkdir() + get_last_login_from_userdir(userdir) + assert not list(userdir.iterdir()) + + def test_delete_inactive_users(db, example_config): new = time.time() old = new - (example_config.delete_inactive_users_after * 86400) - 1