mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
f2683291e4
Signed-off-by: phernandez <paul@basicmachines.co>
78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
"""Tests for workspace CLI commands."""
|
|
|
|
import pytest
|
|
from typer.testing import CliRunner
|
|
|
|
from basic_memory.cli.app import app
|
|
from basic_memory.schemas.cloud import WorkspaceInfo
|
|
|
|
# Importing registers workspace commands on the shared app instance.
|
|
import basic_memory.cli.commands.workspace as workspace_cmd # noqa: F401
|
|
|
|
|
|
@pytest.fixture
|
|
def runner():
|
|
return CliRunner()
|
|
|
|
|
|
def test_workspace_list_prints_available_workspaces(runner, monkeypatch):
|
|
async def fake_get_available_workspaces(context=None):
|
|
return [
|
|
WorkspaceInfo(
|
|
tenant_id="11111111-1111-1111-1111-111111111111",
|
|
workspace_type="personal",
|
|
name="Personal",
|
|
role="owner",
|
|
),
|
|
WorkspaceInfo(
|
|
tenant_id="22222222-2222-2222-2222-222222222222",
|
|
workspace_type="organization",
|
|
name="Team",
|
|
role="editor",
|
|
),
|
|
]
|
|
|
|
monkeypatch.setattr(workspace_cmd, "get_available_workspaces", fake_get_available_workspaces)
|
|
|
|
result = runner.invoke(app, ["workspace", "list"])
|
|
|
|
assert result.exit_code == 0
|
|
assert "Available Workspaces" in result.stdout
|
|
assert "Personal" in result.stdout
|
|
assert "Team" in result.stdout
|
|
assert "11111111-1111-1111-1111-111111111111" in result.stdout
|
|
|
|
|
|
def test_workspaces_alias_matches_workspace_list_output(runner, monkeypatch):
|
|
async def fake_get_available_workspaces(context=None):
|
|
return [
|
|
WorkspaceInfo(
|
|
tenant_id="11111111-1111-1111-1111-111111111111",
|
|
workspace_type="personal",
|
|
name="Personal",
|
|
role="owner",
|
|
)
|
|
]
|
|
|
|
monkeypatch.setattr(workspace_cmd, "get_available_workspaces", fake_get_available_workspaces)
|
|
|
|
list_result = runner.invoke(app, ["workspace", "list"])
|
|
alias_result = runner.invoke(app, ["workspaces"])
|
|
|
|
assert list_result.exit_code == 0
|
|
assert alias_result.exit_code == 0
|
|
assert list_result.stdout == alias_result.stdout
|
|
|
|
|
|
def test_workspace_list_requires_oauth_login_message(runner, monkeypatch):
|
|
async def fail_get_available_workspaces(context=None): # pragma: no cover
|
|
raise RuntimeError("Workspace discovery requires OAuth login. Run 'bm cloud login' first.")
|
|
|
|
monkeypatch.setattr(workspace_cmd, "get_available_workspaces", fail_get_available_workspaces)
|
|
|
|
result = runner.invoke(app, ["workspace", "list"])
|
|
|
|
assert result.exit_code == 1
|
|
assert "Workspace discovery requires OAuth login" in result.stdout
|
|
assert "bm cloud login" in result.stdout
|