UPIF-Demo / dev_tools /verify_licensing.py
yashsecdev's picture
Initial commit: UPIF v0.1.4 and Marketing Demo
5e56bcf
import time
from upif.core.licensing import LicenseManager
from mock_gumroad import run_mock_server
# 1. Start Mock Server
print("Starting Mock Gumroad Server...")
server = run_mock_server(port=8000)
time.sleep(1)
# 2. Patch URL to point to localhost
LicenseManager.PRODUCT_PERMALINK = "test-product"
original_url = "https://api.gumroad.com/v2/licenses/verify"
# We must mock the request call inside LicenseManager instance or just valid URL
# Since we can't easily patch the class method URL variable locally without modifying code,
# we will rely on requests mocking or just override the instance method if possible.
# Actually, the implementation uses a hardcoded URL. Let's make it configurable for testing or patch 'requests.post'.
import requests
original_post = requests.post
def mock_post(url, data, timeout):
if "api.gumroad.com" in url:
# Redirect to our mock
return original_post("http://localhost:8000/verify", data=data, timeout=timeout)
return original_post(url, data, timeout)
requests.post = mock_post
# 3. Test Activation
lm = LicenseManager()
print("\n--- Test 1: Invalid Key ---")
success = lm.activate("INVALID-KEY")
print(f"Activation Result (Expected False): {success}")
assert not success
assert lm.get_tier() == "BASELINE"
print("\n--- Test 2: Valid Key ---")
success = lm.activate("TEST-PRO-KEY")
print(f"Activation Result (Expected True): {success}")
assert success
assert lm.get_tier() == "PRO"
# 4. Test Offline Persistence
print("\n--- Test 3: Offline Persistence ---")
lm2 = LicenseManager() # New instance
is_valid = lm2.validate_offline()
print(f"Offline Validation (Expected True): {is_valid}")
assert is_valid
assert lm2.get_tier() == "PRO"
print("\n--- SUCCESS: Licensing System Verified! ---")