import tempfile import unittest import importlib.util from pathlib import Path from unittest.mock import patch _SPEC = importlib.util.spec_from_file_location( "token_store", Path("services/token_store.py"), ) _MODULE = importlib.util.module_from_spec(_SPEC) _SPEC.loader.exec_module(_MODULE) load_token = _MODULE.load_token save_token = _MODULE.save_token class TokenStoreTests(unittest.TestCase): def test_save_and_load_non_expiring_token(self): with tempfile.TemporaryDirectory() as td: token_file = Path(td) / "token.json" with patch.object(_MODULE.os, "name", "posix"): expiration = save_token( token="abc123", token_file=str(token_file), app_data_dir=td, expires_in=0, ) token, loaded_expiration = load_token(str(token_file)) self.assertEqual(expiration, 0) self.assertEqual(token, "abc123") self.assertEqual(loaded_expiration, 0) def test_expired_token_is_removed(self): with tempfile.TemporaryDirectory() as td: token_file = Path(td) / "token.json" with patch.object(_MODULE.os, "name", "posix"): with patch.object(_MODULE.time, "time", return_value=1000): save_token( token="abc123", token_file=str(token_file), app_data_dir=td, expires_in=1, ) with patch.object(_MODULE.time, "time", return_value=2000): token, expiration = load_token(str(token_file)) self.assertIsNone(token) self.assertIsNone(expiration) if __name__ == "__main__": unittest.main()