mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-09-30 16:13:15 +00:00
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from agent.dashboard.admin import is_admin, is_observability_authorized
|
||
|
|
|
||
|
|
|
||
|
|
def test_is_admin_accepts_email_or_github_login(monkeypatch: pytest.MonkeyPatch) -> None:
|
||
|
|
monkeypatch.setenv("CONFIGURED_ADMINS", "Alice, bob@langchain.dev")
|
||
|
|
|
||
|
|
assert is_admin("bob@langchain.dev", login="not-bob") is True
|
||
|
|
assert is_admin("other@langchain.dev", login="alice") is True
|
||
|
|
assert is_admin("other@langchain.dev", login="ALICE") is True
|
||
|
|
assert is_admin("other@langchain.dev", login="mallory") is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_is_admin_rejects_blank_identities(monkeypatch: pytest.MonkeyPatch) -> None:
|
||
|
|
monkeypatch.setenv("CONFIGURED_ADMINS", "alice")
|
||
|
|
|
||
|
|
assert is_admin(None, login=None) is False
|
||
|
|
assert is_admin("", login=" ") is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_observability_authorized_treats_admin_login_as_admin(
|
||
|
|
monkeypatch: pytest.MonkeyPatch,
|
||
|
|
) -> None:
|
||
|
|
monkeypatch.setenv("CONFIGURED_ADMINS", "alice")
|
||
|
|
monkeypatch.delenv("OBSERVABILITY_AUTHORIZED_EMAILS", raising=False)
|
||
|
|
|
||
|
|
assert is_observability_authorized(None, login="alice") is True
|
||
|
|
assert is_observability_authorized("other@langchain.dev", login="mallory") is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_observability_allowlist_still_uses_email(monkeypatch: pytest.MonkeyPatch) -> None:
|
||
|
|
monkeypatch.setenv("CONFIGURED_ADMINS", "")
|
||
|
|
monkeypatch.setenv("OBSERVABILITY_AUTHORIZED_EMAILS", "trusted@langchain.dev")
|
||
|
|
|
||
|
|
assert is_observability_authorized("trusted@langchain.dev", login="mallory") is True
|
||
|
|
assert is_observability_authorized("other@langchain.dev", login="trusted") is False
|