Initial reyna-cli implementation
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
import json
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from typer.testing import CliRunner
|
||||
from reyna_cli.cli import app
|
||||
from reyna_cli.immich import ImmichClient
|
||||
from reyna_cli.mongo_direct import MongoDirectClient
|
||||
from reyna_cli.zoom_direct import ZoomClient
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
@patch("reyna_cli.immich.httpx.Client")
|
||||
def test_immich_client_stats(mock_client_class):
|
||||
mock_client = mock_client_class.return_value
|
||||
mock_client.request.return_value.json.return_value = {"total": 100}
|
||||
mock_client.request.return_value.raise_for_status = MagicMock()
|
||||
mock_client.request.return_value.content = b'{"total": 100}'
|
||||
|
||||
with patch.dict("os.environ", {"IMMICH_URL": "http://localhost:2283", "IMMICH_API_KEY": "test"}):
|
||||
client = ImmichClient()
|
||||
stats = client.statistics()
|
||||
assert stats == {"total": 100}
|
||||
|
||||
@patch("pymongo.MongoClient")
|
||||
def test_mongo_client_list_dbs(mock_mongo_class):
|
||||
mock_client = mock_mongo_class.return_value
|
||||
mock_client.list_database_names.return_value = ["db1", "db2"]
|
||||
|
||||
client = MongoDirectClient(uri="mongodb://localhost:27017")
|
||||
dbs = client.databases()
|
||||
assert dbs == ["db1", "db2"]
|
||||
|
||||
@patch("reyna_cli.zoom_direct.httpx.Client")
|
||||
def test_zoom_client_token_and_user(mock_client_class):
|
||||
mock_client = mock_client_class.return_value
|
||||
|
||||
# Mock token response
|
||||
mock_token_resp = MagicMock()
|
||||
mock_token_resp.json.return_value = {"access_token": "fake_token", "expires_in": 3600}
|
||||
mock_token_resp.raise_for_status = MagicMock()
|
||||
|
||||
# Mock users response
|
||||
mock_users_resp = MagicMock()
|
||||
mock_users_resp.json.return_value = {"users": []}
|
||||
mock_users_resp.raise_for_status = MagicMock()
|
||||
mock_users_resp.content = b'{"users": []}'
|
||||
|
||||
mock_client.post.return_value = mock_token_resp
|
||||
mock_client.request.return_value = mock_users_resp
|
||||
|
||||
with patch.dict("os.environ", {"ZOOM_ACCOUNT_ID": "acc", "ZOOM_CLIENT_ID": "cid", "ZOOM_CLIENT_SECRET": "csec"}):
|
||||
client = ZoomClient()
|
||||
users = client.users()
|
||||
|
||||
assert users == {"users": []}
|
||||
assert client._token == "fake_token"
|
||||
|
||||
def test_cli_doctor_ram_plan():
|
||||
result = runner.invoke(app, ["doctor", "--ram-plan", "--json"])
|
||||
assert result.exit_code == 0
|
||||
payload = json.loads(result.stdout)
|
||||
assert "ram_diagnostics" in payload
|
||||
|
||||
@patch("reyna_cli.cli.ImmichClient")
|
||||
def test_cli_immich_stats(mock_immich_class):
|
||||
mock_instance = mock_immich_class.return_value
|
||||
mock_instance.statistics.return_value = {"count": 42}
|
||||
|
||||
result = runner.invoke(app, ["immich", "stats", "--json"])
|
||||
assert result.exit_code == 0
|
||||
payload = json.loads(result.stdout)
|
||||
assert payload["result"] == {"count": 42}
|
||||
|
||||
@patch("reyna_cli.cli.MongoClient")
|
||||
def test_cli_mongo_dbs(mock_mongo_class):
|
||||
mock_instance = mock_mongo_class.return_value
|
||||
mock_instance.databases.return_value = ["test_db"]
|
||||
|
||||
result = runner.invoke(app, ["mongo", "dbs", "--json"])
|
||||
assert result.exit_code == 0
|
||||
payload = json.loads(result.stdout)
|
||||
assert payload["result"] == ["test_db"]
|
||||
|
||||
@patch("reyna_cli.cli.ZoomClient")
|
||||
def test_cli_zoom_user(mock_zoom_class):
|
||||
mock_instance = mock_zoom_class.return_value
|
||||
mock_instance.users.return_value = {"users": []}
|
||||
|
||||
result = runner.invoke(app, ["zoom", "user", "--json"])
|
||||
assert result.exit_code == 0
|
||||
payload = json.loads(result.stdout)
|
||||
assert payload["result"] == {"users": []}
|
||||
Reference in New Issue
Block a user