Files
openworker/tests/test_connectors_allowlist.py
T
Rohit C PrasadandDevika 2b45018ffa OpenWorker: initial import
Imported from andrewyng/aisuite@1b4bbf303e
(contents of its platform/ directory, hoisted to the repo root).
Development history prior to this commit lives in that repository.

Co-authored-by: Devika <devikaverma11@gmail.com>
2026-07-21 11:09:41 -07:00

104 lines
3.3 KiB
Python

"""Allow-list surfacing on the Connectors tab: GET /v1/connectors carries the allow-list as a list
plus the gateway's recently-seen senders (each flagged authorized), and allow/disallow mutate it.
"""
from fastapi.testclient import TestClient
from coworker.providers import ModelCapabilities, ProviderClient
from coworker.server import create_app
from coworker.server.manager import SessionManager
class ScriptedProvider(ProviderClient):
def complete(self, *, model, messages, tools=None, **settings):
raise AssertionError("no turns expected")
def capabilities(self, model):
return ModelCapabilities()
class _Gateway:
"""Minimal gateway stub exposing the recent-senders surface the manager enriches with."""
def __init__(self, recent):
self._recent = recent
self.settings = {}
def recent_senders(self, name):
return [dict(r) for r in self._recent] if name == "slack" else []
def _connected_slack(mgr, allowed=()):
mgr.secrets.put(
"slack:default",
{
"type": "token",
"bot_token": "xoxb-1",
"app_token": "xapp-1",
"allowed_users": list(allowed),
},
)
def _slack(connectors):
return next(c for c in connectors if c["name"] == "slack")
def test_connectors_carry_allowlist_and_recent(tmp_path):
mgr = SessionManager(workspace=tmp_path, provider=ScriptedProvider())
_connected_slack(mgr, allowed=["U_OK"])
mgr.gateway = _Gateway(
recent=[
{
"user_id": "U_OK",
"user_name": "Ann",
"chat_id": "D1",
"chat_type": "dm",
"target": "slack:D1",
},
{
"user_id": "U_NEW",
"user_name": "Bob",
"chat_id": "D2",
"chat_type": "dm",
"target": "slack:D2",
},
]
)
client = TestClient(create_app(mgr))
slack = _slack(client.get("/v1/connectors").json()["connectors"])
assert slack["connected"] is True
assert slack["allowed_users"] == ["U_OK"] # a list, not a count
by_id = {r["user_id"]: r for r in slack["recent"]}
assert by_id["U_OK"]["authorized"] is True
assert by_id["U_NEW"]["authorized"] is False
def test_allow_then_disallow_mutates_list(tmp_path):
mgr = SessionManager(workspace=tmp_path, provider=ScriptedProvider())
_connected_slack(mgr)
mgr.gateway = _Gateway(recent=[])
client = TestClient(create_app(mgr))
client.post("/v1/connectors/slack/allow", json={"user_id": "U_NEW"})
assert _slack(client.get("/v1/connectors").json()["connectors"])[
"allowed_users"
] == ["U_NEW"]
client.post("/v1/connectors/slack/disallow", json={"user_id": "U_NEW"})
assert (
_slack(client.get("/v1/connectors").json()["connectors"])["allowed_users"] == []
)
def test_recent_absent_when_no_gateway(tmp_path):
# No gateway running (server started without messaging) → no recent senders, still no crash.
mgr = SessionManager(workspace=tmp_path, provider=ScriptedProvider())
_connected_slack(mgr)
mgr.gateway = None
client = TestClient(create_app(mgr))
slack = _slack(client.get("/v1/connectors").json()["connectors"])
assert slack["recent"] == []