Files
devplacepy/tests/api/nodes/conftest.py
T

51 lines
1.5 KiB
Python
Raw Normal View History

# retoor <retoor@molodetz.nl>
import time
import pytest
from fastapi.testclient import TestClient
from devplacepy.database import get_setting, get_table, set_consent, set_setting
from devplacepy.database.nodes import save_node_settings
from devplacepy.main import app
from devplacepy.services.manager import service_manager
from devplacepy.utils import register_account
_counter = [0]
def unique(prefix: str) -> str:
_counter[0] += 1
return f"{prefix}{int(time.time() * 1000)}{_counter[0]}"
def make_member(*, consent=True, enabled=True, age_band="adult", role="Member") -> dict:
name = unique("nodemb")
uid, _, _ = register_account(
name, f"{name}@t.dev", "secret123", age_band=age_band, accepted_terms=True
)
if role != "Member":
get_table("users").update({"uid": uid, "role": role}, ["uid"])
if consent:
set_consent("user", uid, "bandwidth_sharing", True)
if enabled:
save_node_settings(uid, {"enabled": True})
row = get_table("users").find_one(uid=uid)
return {"uid": uid, "username": name, "headers": {"X-API-KEY": row["api_key"]}}
@pytest.fixture(scope="module")
def client():
previous = get_setting("nodes_enabled", "0")
set_setting("nodes_enabled", "1")
with TestClient(app) as test_client:
service_manager.set_lock_owner(True)
yield test_client
service_manager.set_lock_owner(False)
set_setting("nodes_enabled", previous)
@pytest.fixture
def member(client):
return make_member()