51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
# 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()
|