This commit is contained in:
@@ -120,6 +120,70 @@ class UpdateCheckTests(unittest.TestCase):
|
||||
self.assertEqual("", result.package_format)
|
||||
self.assertEqual(0, result.updater_protocol)
|
||||
|
||||
def test_check_for_update_parses_client_policy_without_affecting_release(self):
|
||||
result = update_check.check_for_update(
|
||||
current_version="0.1.5",
|
||||
url="https://cm.example.test/api/v1/client/releases/latest?platform=windows",
|
||||
fetcher=lambda _url, _timeout: {
|
||||
"platform": "windows",
|
||||
"release": {
|
||||
"version": "0.1.6",
|
||||
"force_update": False,
|
||||
},
|
||||
"client_policy": {
|
||||
"policy_version": 1,
|
||||
"subscription_check_enabled": True,
|
||||
"subscription_enforcement_enabled": True,
|
||||
"updated_at": "2026-07-28T15:19:19+08:00",
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual("0.1.6", result.latest_version)
|
||||
self.assertEqual("enforce", result.client_policy.mode)
|
||||
self.assertEqual("", result.client_policy_error)
|
||||
|
||||
def test_invalid_client_policy_does_not_break_update_detection(self):
|
||||
result = update_check.check_for_update(
|
||||
current_version="0.1.5",
|
||||
url="https://cm.example.test/version.json",
|
||||
fetcher=lambda _url, _timeout: {
|
||||
"release": {"version": "0.1.6"},
|
||||
"client_policy": {
|
||||
"policy_version": 1,
|
||||
"subscription_check_enabled": "false",
|
||||
"subscription_enforcement_enabled": True,
|
||||
"updated_at": "2026-07-28T15:19:19+08:00",
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual("0.1.6", result.latest_version)
|
||||
self.assertIsNone(result.client_policy)
|
||||
self.assertIn("布尔值", result.client_policy_error)
|
||||
self.assertEqual("", result.error)
|
||||
|
||||
def test_release_can_be_null_when_policy_is_available(self):
|
||||
result = update_check.check_for_update(
|
||||
current_version="0.1.5",
|
||||
url="https://cm.example.test/version.json",
|
||||
fetcher=lambda _url, _timeout: {
|
||||
"platform": "windows",
|
||||
"release": None,
|
||||
"client_policy": {
|
||||
"policy_version": 1,
|
||||
"subscription_check_enabled": False,
|
||||
"subscription_enforcement_enabled": False,
|
||||
"updated_at": "2026-07-28T15:19:19+08:00",
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
self.assertTrue(result.checked)
|
||||
self.assertFalse(result.forced)
|
||||
self.assertEqual("", result.error)
|
||||
self.assertEqual("off", result.client_policy.mode)
|
||||
|
||||
def test_network_failure_allows_entry(self):
|
||||
def fetcher(_url, _timeout):
|
||||
raise socket.timeout("timeout")
|
||||
|
||||
Reference in New Issue
Block a user