feat(onboarding): add first-run membership activation
This commit is contained in:
@@ -64,6 +64,35 @@ class SubscriptionTests(TempDirMixin, unittest.TestCase):
|
||||
)
|
||||
self.assertEqual("GET", calls[0][0][0])
|
||||
self.assertNotIn("test-key", repr(result))
|
||||
self.assertTrue(result.credentials_accepted)
|
||||
|
||||
def test_in_memory_key_override_is_used_without_persisting_it(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
config = self._config(temp_dir)
|
||||
appconfig.save_cmhub_config({"api_key": ""}, path=config["cmhub_config_path"])
|
||||
calls = []
|
||||
|
||||
def request_json(*args, **kwargs):
|
||||
calls.append((args, kwargs))
|
||||
return {
|
||||
"product_code": "cmshopee",
|
||||
"account": {"display_name": "新账号"},
|
||||
"plan": {"display_name": "测试套餐"},
|
||||
"status": "active",
|
||||
"expires_at": "2026-08-20T23:59:59+08:00",
|
||||
}
|
||||
|
||||
result = subscription.check_status(
|
||||
config,
|
||||
base_url="https://activation.example.com/api/v1",
|
||||
api_key="temporary-test-key",
|
||||
request_json=request_json,
|
||||
)
|
||||
|
||||
self.assertEqual(subscription.STATUS_ACTIVE, result.state)
|
||||
self.assertEqual("https://activation.example.com", calls[0][0][1])
|
||||
self.assertEqual("temporary-test-key", calls[0][0][3])
|
||||
self.assertEqual("", appconfig.get_cmhub_api_key(config["cmhub_config_path"]))
|
||||
|
||||
def test_grace_and_expired_states_are_distinct(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
@@ -125,6 +154,7 @@ class SubscriptionTests(TempDirMixin, unittest.TestCase):
|
||||
result = subscription.check_status(config, request_json=invalid_key)
|
||||
self.assertEqual(subscription.STATUS_KEY_INVALID, result.state)
|
||||
self.assertNotIn("不应展示", result.user_message)
|
||||
self.assertFalse(result.credentials_accepted)
|
||||
|
||||
def network_failure(*args, **kwargs):
|
||||
raise ai.CMHubError("network_error", "不应展示")
|
||||
@@ -132,6 +162,7 @@ class SubscriptionTests(TempDirMixin, unittest.TestCase):
|
||||
result = subscription.check_status(config, request_json=network_failure)
|
||||
self.assertEqual(subscription.STATUS_UNAVAILABLE, result.state)
|
||||
self.assertNotIn("不应展示", result.user_message)
|
||||
self.assertFalse(result.credentials_accepted)
|
||||
|
||||
def test_invalid_product_or_external_manage_url_is_not_trusted(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
|
||||
Reference in New Issue
Block a user