feat: compress shusub2 polling

This commit is contained in:
2026-07-27 21:39:04 +08:00
parent 4d8d117fb1
commit 162ce03c4e
5 changed files with 81 additions and 31 deletions
+45
View File
@@ -105,6 +105,51 @@ class Sub2APIQuotaTUITests(unittest.TestCase):
self.assertEqual(mod.version_update_message("0.1.7", "0.1.7"), "")
self.assertEqual(mod.version_update_message("0.1.6", "0.1.7"), "")
def test_gzip_json_requests_decode_responses_and_request_compression(self) -> None:
mod = load_module()
payload = {"ok": True}
compressed = mod.gzip.compress(mod.json.dumps(payload).encode("utf-8"))
requests = []
class FakeResponse:
headers = {"Content-Encoding": "gzip"}
def __enter__(self):
return self
def __exit__(self, exc_type, exc, traceback):
return False
def read(self):
return compressed
old_urlopen = mod.urllib.request.urlopen
mod.urllib.request.urlopen = lambda request, timeout: (requests.append(request) or FakeResponse())
try:
self.assertEqual(mod.fetch_payload("https://example.test/accounts", 1), payload)
self.assertEqual(mod.fetch_logs_payload("https://example.test/usage", "test-token", 1), payload)
self.assertEqual(mod.fetch_admin_json("https://example.test/admin", "test-token", 1, body={"ids": [1]}), payload)
self.assertEqual(mod.fetch_errors_payload("https://example.test/errors", "test-token", 1), payload)
finally:
mod.urllib.request.urlopen = old_urlopen
class PlainResponse:
headers = {}
def read(self):
return mod.json.dumps(payload).encode("utf-8")
self.assertEqual(mod.decode_json_response(PlainResponse(), "plain JSON failed"), payload)
self.assertEqual(len(requests), 4)
self.assertTrue(all(request.get_header("Accept-encoding") == "gzip" for request in requests))
def test_default_refresh_intervals_are_five_minutes(self) -> None:
mod = load_module()
self.assertEqual(mod.DEFAULT_REFRESH_SECONDS, 300)
self.assertEqual(mod.DEFAULT_LOGS_REFRESH_SECONDS, 300)
self.assertEqual(mod.DEFAULT_ERRORS_REFRESH_SECONDS, 300)
def test_write_api_url_config_uses_config_file_env(self) -> None:
mod = load_module()