import unittest from lib.exchange.api_credentials_lib import ( credentials_configured, is_exchange_auth_error, normalize_api_credential, ) class TestNormalizeApiCredential(unittest.TestCase): def test_empty_and_placeholder(self): self.assertEqual(normalize_api_credential(""), "") self.assertEqual(normalize_api_credential(None), "") self.assertEqual(normalize_api_credential(" "), "") self.assertEqual(normalize_api_credential("REPLACE_WITH_GATE_API_KEY"), "") self.assertEqual(normalize_api_credential("CHANGE_TO_LONG_RANDOM_SECRET"), "") self.assertEqual(normalize_api_credential("你的密钥"), "") def test_real_key_kept(self): self.assertEqual(normalize_api_credential(" real-key-value "), "real-key-value") self.assertTrue(credentials_configured("abc", "def")) self.assertFalse(credentials_configured("REPLACE_WITH_X", "secret")) class TestAuthErrorDetect(unittest.TestCase): def test_binance_invalid_key(self): class AuthenticationError(Exception): pass self.assertTrue(is_exchange_auth_error(AuthenticationError('binance {"code":-2008,"msg":"Invalid Api-Key ID."}'))) self.assertTrue(is_exchange_auth_error(Exception("gate INVALID_KEY"))) self.assertFalse(is_exchange_auth_error(Exception("rate limit exceeded"))) if __name__ == "__main__": unittest.main()