"""Tests for update-token storage (file fallback + env override), keyring mocked out.""" import os import tempfile import unittest from pathlib import Path from unittest import mock from rigdoctor import config class TokenStorageTests(unittest.TestCase): def test_file_fallback_roundtrip(self): with tempfile.TemporaryDirectory() as d: token_file = Path(d) / "token" with mock.patch.object(config, "_secret_tool", return_value=None), \ mock.patch.object(config, "TOKEN_FILE", token_file), \ mock.patch.dict(os.environ, {}, clear=True): self.assertIsNone(config.load_token()) config.save_token("abc123") self.assertEqual(config.load_token(), "abc123") self.assertEqual(config.token_backend(), "file") self.assertEqual(token_file.stat().st_mode & 0o777, 0o600) config.clear_token() self.assertIsNone(config.load_token()) self.assertEqual(config.token_backend(), "none") def test_env_override_wins(self): with mock.patch.object(config, "_secret_tool", return_value=None), \ mock.patch.dict(os.environ, {"RIGDOCTOR_TOKEN": "envtok"}, clear=True): self.assertEqual(config.load_token(), "envtok") self.assertEqual(config.token_backend(), "env") if __name__ == "__main__": unittest.main()