From 74cbf68ffc3b86701c0c713d5f177ed049da6732 Mon Sep 17 00:00:00 2001 From: arc53-machine <232052973+arc53-machine@users.noreply.github.com> Date: Tue, 29 Sep 2026 10:21:57 +0100 Subject: [PATCH] Show GitHub's optional GitHub App settings in Admin > Connectors The admin connectors API lists the settings that add Sign in with GitHub and whether they are complete, next to the required settings (none for GitHub, which works with tokens alone). --- docsgpt/api/admin/connectors.py | 7 ++++++ .../test_policies_and_attribution.py | 24 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/docsgpt/api/admin/connectors.py b/docsgpt/api/admin/connectors.py index 5b17da40..814a89b0 100644 --- a/docsgpt/api/admin/connectors.py +++ b/docsgpt/api/admin/connectors.py @@ -78,6 +78,13 @@ class AdminConnectorsResource(Resource): {"name": name, "set": bool(getattr(settings, name, None))} for name in definition.required_settings ], + # Optional: they add a second sign-in (GitHub's App) to a + # connector that already works without them. + "oauth_settings": [ + {"name": name, "set": bool(getattr(settings, name, None))} + for name in definition.oauth_settings + ], + "oauth_configured": definition.oauth_configured, "connection_count": counts.get(definition.key, 0), "docs_url": definition.docs_url, "mcp_url": definition.mcp_url, diff --git a/tests/connectors/test_policies_and_attribution.py b/tests/connectors/test_policies_and_attribution.py index 8f8692a2..73e3dbdc 100644 --- a/tests/connectors/test_policies_and_attribution.py +++ b/tests/connectors/test_policies_and_attribution.py @@ -113,6 +113,30 @@ class TestAdminPolicies: assert "secret-client-id" not in json.dumps(payload) assert payload["allow_custom_mcp"] is True + def test_github_is_ready_and_lists_its_optional_app_settings(self, app, pg_conn, monkeypatch): + """Tokens need no setup; the GitHub App settings only add Sign in with GitHub.""" + from docsgpt.api.admin.connectors import AdminConnectorsResource + from docsgpt.core.settings import settings + + monkeypatch.setattr(settings, "GITHUB_CLIENT_ID", "Iv1.secret-client") + monkeypatch.setattr(settings, "GITHUB_CLIENT_SECRET", None) + monkeypatch.setattr(settings, "GITHUB_APP_SLUG", None) + with _db(pg_conn): + resp = _call(app, AdminConnectorsResource, "get", "/api/admin/connectors", roles=["admin"]) + payload = resp.get_json() + github = next(c for c in payload["connectors"] if c["key"] == "github") + assert github["configured"] is True and github["enabled"] is True + assert github["required_settings"] == [] + assert github["oauth_settings"] == [ + {"name": "GITHUB_CLIENT_ID", "set": True}, + {"name": "GITHUB_CLIENT_SECRET", "set": False}, + {"name": "GITHUB_APP_SLUG", "set": False}, + ] + assert github["oauth_configured"] is False + assert "Iv1.secret-client" not in json.dumps(payload) + drive = next(c for c in payload["connectors"] if c["key"] == "google_drive") + assert drive["oauth_settings"] == [] and drive["oauth_configured"] is False + def test_disable_connector_and_custom_mcp(self, app, pg_conn): from docsgpt.api.admin.connectors import AdminConnectorsResource