User edition: prune docs, license gate, obfuscate core lib.
Keep deploy/basic docs only; integrate sq.bz121.com license client; encrypt strategy/trade/key_monitor/options/hedge_plan for release. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
"""许可客户端基础测试(不依赖真实激活码)。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest import mock
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
if str(ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
from lib.license import license_lib as lic
|
||||
|
||||
|
||||
class LicenseLibTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self._td = tempfile.TemporaryDirectory()
|
||||
self.state = Path(self._td.name) / "license_state.json"
|
||||
self.env = {
|
||||
"LICENSE_API_URL": "https://sq.bz121.com",
|
||||
"LICENSE_CLIENT_KEY": "test-key",
|
||||
"LICENSE_STATE_PATH": str(self.state),
|
||||
"LICENSE_OFFLINE_GRACE_HOURS": "72",
|
||||
}
|
||||
self._patcher = mock.patch.dict(os.environ, self.env, clear=False)
|
||||
self._patcher.start()
|
||||
lic._env_loaded = True
|
||||
lic._cached_device_id = None
|
||||
|
||||
def tearDown(self):
|
||||
self._patcher.stop()
|
||||
self._td.cleanup()
|
||||
|
||||
def test_device_id_length(self):
|
||||
did = lic.get_device_id()
|
||||
self.assertGreaterEqual(len(did), 16)
|
||||
self.assertLessEqual(len(did), 64)
|
||||
self.assertEqual(did, lic.get_device_id())
|
||||
|
||||
def test_not_activated(self):
|
||||
st = lic.get_license_status()
|
||||
self.assertFalse(st["valid"])
|
||||
self.assertEqual(st["reason"], "not_activated")
|
||||
|
||||
def test_local_valid_within_grace(self):
|
||||
now = lic._now_ts()
|
||||
self.state.write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"subscription_id": "sub_test",
|
||||
"expires_at": "2099-01-01T00:00:00+08:00",
|
||||
"plan": "monthly",
|
||||
"last_ok_at": now,
|
||||
"last_validate_at": now,
|
||||
}
|
||||
),
|
||||
encoding="utf-8",
|
||||
)
|
||||
st = lic.get_license_status(skip_remote=True)
|
||||
self.assertTrue(st["valid"])
|
||||
|
||||
def test_redeem_posts_api(self):
|
||||
def fake_http(method, path, body):
|
||||
self.assertEqual(path, "/v1/redeem")
|
||||
self.assertIn("device_id", body)
|
||||
self.assertEqual(body["code"], "ABCD1234EFGH")
|
||||
return {
|
||||
"ok": True,
|
||||
"subscription_id": "sub1",
|
||||
"plan": "monthly",
|
||||
"expires_at": "2099-06-01T00:00:00+08:00",
|
||||
"message": "激活成功",
|
||||
}
|
||||
|
||||
with mock.patch.object(lic, "_http_json", side_effect=fake_http):
|
||||
r = lic.redeem_code("abcd1234efgh")
|
||||
self.assertTrue(r["ok"])
|
||||
data = json.loads(self.state.read_text(encoding="utf-8"))
|
||||
self.assertEqual(data["subscription_id"], "sub1")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user