fix license check
This commit is contained in:
@@ -7,6 +7,7 @@ import os
|
||||
from pathlib import Path
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
import types
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
@@ -107,6 +108,44 @@ class LicenseProtocolTests(unittest.TestCase):
|
||||
side_effect=LICENSE.requests.ConnectionError("offline")):
|
||||
LICENSE.validate_license_online(NEW_LICENSE)
|
||||
|
||||
def test_verify_license_uses_default_glob_pattern_when_path_missing(self):
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
payload_b64 = base64.b64encode(json.dumps(NEW_LICENSE).encode()).decode()
|
||||
license_path = Path(tmp_dir) / "customer-license.lic"
|
||||
license_path.write_text(
|
||||
f"{payload_b64}|{base64.b64encode(b'signature').decode()}",
|
||||
encoding="utf-8",
|
||||
)
|
||||
with patch.object(LICENSE, "_load_public_key", return_value=FakePublicKey()), \
|
||||
patch.object(LICENSE, "_default_license_dir", return_value=Path(tmp_dir)):
|
||||
payload = LICENSE.verify_license()
|
||||
|
||||
self.assertEqual(payload["license_id"], NEW_LICENSE["license_id"])
|
||||
|
||||
def test_verify_license_prefers_latest_matching_file(self):
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
old_payload = dict(NEW_LICENSE, license_id="old-license")
|
||||
new_payload = dict(NEW_LICENSE, license_id="new-license")
|
||||
|
||||
def write_license(path, payload):
|
||||
payload_b64 = base64.b64encode(json.dumps(payload).encode()).decode()
|
||||
path.write_text(
|
||||
f"{payload_b64}|{base64.b64encode(b'signature').decode()}",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
old_path = Path(tmp_dir) / "a-license.lic"
|
||||
new_path = Path(tmp_dir) / "z-license.lic"
|
||||
write_license(old_path, old_payload)
|
||||
time.sleep(0.01)
|
||||
write_license(new_path, new_payload)
|
||||
|
||||
with patch.object(LICENSE, "_load_public_key", return_value=FakePublicKey()), \
|
||||
patch.object(LICENSE, "_default_license_dir", return_value=Path(tmp_dir)):
|
||||
payload = LICENSE.verify_license()
|
||||
|
||||
self.assertEqual(payload["license_id"], "new-license")
|
||||
|
||||
def test_api_rejects_environment_device_id_mismatch(self):
|
||||
fake_license_utils = types.ModuleType("license_utils")
|
||||
fake_license_utils.get_verified_license = lambda: dict(NEW_LICENSE)
|
||||
|
||||
Reference in New Issue
Block a user