reflex/tests/test_telemetry.py

54 lines
1.8 KiB
Python

import httpx
import pytest
from packaging.version import parse as parse_python_version
from reflex.utils import telemetry
def test_telemetry():
"""Test that telemetry is sent correctly."""
# Check that the user OS is one of the supported operating systems.
user_os = telemetry.get_os()
assert user_os is not None
assert user_os in ["Linux", "Darwin", "Java", "Windows"]
# Check that the CPU count and memory are greater than 0.
assert telemetry.get_cpu_count() > 0
# Check that the available memory is greater than 0
assert telemetry.get_memory() > 0
# Check that the Reflex version is not None.
assert telemetry.get_reflex_version() is not None
# Check that the Python version is greater than 3.7.
python_version = telemetry.get_python_version()
assert python_version is not None
assert parse_python_version(python_version) >= parse_python_version("3.7")
def test_disable():
"""Test that disabling telemetry works."""
assert not telemetry.send("test", telemetry_enabled=False)
@pytest.mark.parametrize("event", ["init", "reinit", "run-dev", "run-prod", "export"])
def test_send(mocker, event):
mocker.patch("httpx.post")
mocker.patch(
"builtins.open",
mocker.mock_open(
read_data='{"project_hash": "78285505863498957834586115958872998605"}'
),
)
mocker.patch("platform.platform", return_value="Mocked Platform")
telemetry.send(event, telemetry_enabled=True)
httpx.post.assert_called_once()
if telemetry.get_os() == "Windows":
open.assert_called_with(".web\\reflex.json", "r")
elif telemetry.get_os() == "Linux":
open.assert_called_with("/proc/meminfo", "rb", buffering=32768)
else:
open.assert_called_with(".web/reflex.json", "r")