mirror of
https://github.com/rommapp/romm.git
synced 2026-06-28 06:46:00 +00:00
- test_sync_sessions_handler: increment_operations_completed (atomic counter, no-op on missing), NoResultFound on update/complete/fail with nonexistent session - test_sync_watcher: _extract_device_and_platform path parsing (valid, non-incoming, too few parts, nested, outside base), _ensure_conflicts_dir creation and idempotency, process_sync_changes empty/disabled - test_sync (endpoints): negotiate with untracked saves (no_op), server saves not mentioned by client (download), deleted-by-client detection (skip), complete on FAILED/CANCELLED session (400), trigger_push_pull passes session_id in enqueue kwargs - test_device (endpoints): sync_config SSH credential masking (ssh_password/ssh_key_path -> "********"), null config passthrough, config without sensitive fields - test_utils_auth: _get_device_name UA parsing (browser+OS, browser only, OS only, neither), create_or_find_web_device (creates new, returns existing on fingerprint match, updates last_seen)
74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
from dataclasses import replace
|
|
from unittest.mock import MagicMock
|
|
|
|
from ua_parser import parse as parse_ua
|
|
|
|
from handler.database import db_device_handler
|
|
from models.user import User
|
|
from utils.auth import _get_device_name, create_or_find_web_device
|
|
|
|
CHROME_MAC_UA = (
|
|
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
|
|
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
|
|
)
|
|
|
|
|
|
def _make_request(user_agent: str = CHROME_MAC_UA, forwarded_for: str = "1.2.3.4"):
|
|
request = MagicMock()
|
|
request.headers = {"user-agent": user_agent, "x-forwarded-for": forwarded_for}
|
|
request.client.host = "127.0.0.1"
|
|
return request
|
|
|
|
|
|
class TestGetDeviceName:
|
|
def test_browser_and_os(self):
|
|
result = parse_ua(CHROME_MAC_UA)
|
|
assert _get_device_name(result) == "Chrome on Mac OS X"
|
|
|
|
def test_browser_only(self):
|
|
result = replace(parse_ua(CHROME_MAC_UA), os=None)
|
|
assert _get_device_name(result) == "Chrome"
|
|
|
|
def test_os_only(self):
|
|
result = replace(parse_ua(CHROME_MAC_UA), user_agent=None)
|
|
assert _get_device_name(result) == "Mac OS X"
|
|
|
|
def test_neither(self):
|
|
result = replace(parse_ua(CHROME_MAC_UA), user_agent=None, os=None)
|
|
assert _get_device_name(result) == "Web Browser"
|
|
|
|
|
|
class TestCreateOrFindWebDevice:
|
|
def test_creates_new_device(self, admin_user: User):
|
|
request = _make_request()
|
|
device = create_or_find_web_device(request, admin_user)
|
|
|
|
assert device.id is not None
|
|
assert len(device.id) == 36
|
|
assert device.user_id == admin_user.id
|
|
assert device.name == "Chrome on Mac OS X"
|
|
assert device.platform == "Web"
|
|
assert device.client == "web"
|
|
assert device.ip_address == "1.2.3.4"
|
|
assert device.hostname == "127.0.0.1"
|
|
assert device.last_seen is not None
|
|
|
|
def test_returns_existing_device_on_matching_fingerprint(self, admin_user: User):
|
|
request = _make_request()
|
|
first = create_or_find_web_device(request, admin_user)
|
|
second = create_or_find_web_device(request, admin_user)
|
|
|
|
assert second.id == first.id
|
|
|
|
def test_updates_last_seen_on_existing_device(self, admin_user: User):
|
|
request = _make_request()
|
|
first = create_or_find_web_device(request, admin_user)
|
|
|
|
second = create_or_find_web_device(request, admin_user)
|
|
refreshed = db_device_handler.get_device(
|
|
device_id=second.id, user_id=admin_user.id
|
|
)
|
|
|
|
assert refreshed.last_seen is not None
|
|
assert first.id == refreshed.id
|