This commit is contained in:
Moritz Graf 2026-01-01 23:40:19 +01:00
parent d369ac4232
commit a2c86dfea7
1 changed files with 21 additions and 7 deletions

View File

@ -93,15 +93,16 @@ def test_login_resume_fail_falls_back(mock_garmin, mock_sso):
mock_login.return_value = (MagicMock(), MagicMock()) mock_login.return_value = (MagicMock(), MagicMock())
inst = mock_garmin.return_value inst = mock_garmin.return_value
inst.login.side_effect = Exception("Resume fail") inst.login.side_effect = [Exception("Resume fail"), None]
client = GarminClient(email="test", password="test") client = GarminClient(email="test", password="test")
# Step 3 will check if creds exist. If they do, it goes to login. # Step 3 will check if creds exist. If they do, it goes to login.
# But resume_fail_falls_back test expects FAILURE if not force_login. # We expect SUCCESS because it should fall back to a fresh login
with patch("os.path.exists", return_value=True), \ with patch("os.path.exists", return_value=True), \
patch("os.path.getsize", return_value=100), \ patch("os.path.getsize", return_value=100), \
patch("os.remove"): patch("os.remove"):
assert client.login() == "FAILURE" assert client.login() == "SUCCESS"
mock_login.assert_called_once()
def test_login_resume_fail_force_retries(mock_garmin, mock_sso): def test_login_resume_fail_force_retries(mock_garmin, mock_sso):
mock_login, _ = mock_sso mock_login, _ = mock_sso
@ -118,16 +119,20 @@ def test_login_resume_fail_force_retries(mock_garmin, mock_sso):
assert client.login(force_login=True) == "SUCCESS" assert client.login(force_login=True) == "SUCCESS"
assert mock_login.called assert mock_login.called
def test_login_empty_token_cleanup(mock_garmin): def test_login_empty_token_cleanup(mock_garmin, monkeypatch):
client = GarminClient() monkeypatch.setenv("GARMIN_EMAIL", "")
monkeypatch.setenv("GARMIN_PASSWORD", "")
client = GarminClient(email="", password="")
with patch("os.path.exists", return_value=True), \ with patch("os.path.exists", return_value=True), \
patch("os.path.getsize", return_value=0), \ patch("os.path.getsize", return_value=0), \
patch("os.remove") as mock_remove: patch("os.remove") as mock_remove:
assert client.login() == "FAILURE" assert client.login() == "FAILURE"
assert mock_remove.called assert mock_remove.called
def test_login_json_error_cleanup(mock_garmin): def test_login_json_error_cleanup(mock_garmin, monkeypatch):
client = GarminClient() monkeypatch.setenv("GARMIN_EMAIL", "")
monkeypatch.setenv("GARMIN_PASSWORD", "")
client = GarminClient(email="", password="")
inst = mock_garmin.return_value inst = mock_garmin.return_value
inst.login.side_effect = Exception("Expecting value: line 1 column 1") inst.login.side_effect = Exception("Expecting value: line 1 column 1")
@ -137,6 +142,15 @@ def test_login_json_error_cleanup(mock_garmin):
assert client.login() == "FAILURE" assert client.login() == "FAILURE"
assert mock_remove.called assert mock_remove.called
def test_login_general_error(mock_garmin, mock_sso):
mock_login, _ = mock_sso
mock_login.side_effect = Exception("General failure")
client = GarminClient(email="test", password="test")
# Resume fails, then new login fails
with patch("os.path.exists", return_value=False):
assert client.login(force_login=True) == "FAILURE"
def test_login_missing_creds(mock_garmin, monkeypatch): def test_login_missing_creds(mock_garmin, monkeypatch):
monkeypatch.setenv("GARMIN_EMAIL", "") monkeypatch.setenv("GARMIN_EMAIL", "")
monkeypatch.setenv("GARMIN_PASSWORD", "") monkeypatch.setenv("GARMIN_PASSWORD", "")