Use monkeypatch for tests that use ARCADE_WORKER_SECRET (#694)

Reverts the updates to unit tests in
https://github.com/ArcadeAI/arcade-mcp/pull/691 and replaces with
monkeypatch. They inadvertently changed global process state during the
test run causing failure of post-merge and failure of PyPI publish. See
https://github.com/ArcadeAI/arcade-mcp/actions/runs/19651637906/job/56283833231
to see what failed
This commit is contained in:
Eric Gustin 2025-11-24 17:22:17 -08:00 committed by GitHub
parent 44660d18ce
commit 7fb097f20f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 12 additions and 33 deletions

View file

@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "arcade-mcp-server"
version = "1.9.0"
version = "1.9.1"
description = "Model Context Protocol (MCP) server framework for Arcade.dev"
readme = "README.md"
authors = [{ name = "Arcade.dev" }]

View file

@ -43,18 +43,11 @@ def mock_router():
@pytest.fixture
def base_worker(mock_router):
# Save original value
original_secret = os.environ.get("ARCADE_WORKER_SECRET")
def base_worker(mock_router, monkeypatch):
# Set env var temporarily for testing secret loading
os.environ["ARCADE_WORKER_SECRET"] = "test_secret_env" # noqa: S105
monkeypatch.setenv("ARCADE_WORKER_SECRET", "test_secret_env")
worker = BaseWorker()
worker.register_routes(mock_router) # Register routes using the mock router
# Restore original value
if original_secret is not None:
os.environ["ARCADE_WORKER_SECRET"] = original_secret
else:
del os.environ["ARCADE_WORKER_SECRET"]
return worker
@ -72,33 +65,19 @@ def test_base_worker_init_with_secret():
assert not worker.disable_auth
def test_base_worker_init_with_env_secret():
original_secret = os.environ.get("ARCADE_WORKER_SECRET")
os.environ["ARCADE_WORKER_SECRET"] = "env_secret_value" # noqa: S105
def test_base_worker_init_with_env_secret(monkeypatch):
monkeypatch.setenv("ARCADE_WORKER_SECRET", "env_secret_value")
worker = BaseWorker()
assert worker.secret == "env_secret_value" # noqa: S105
assert not worker.disable_auth
# Restore secret to original if it was set
if original_secret is not None:
os.environ["ARCADE_WORKER_SECRET"] = original_secret
else:
del os.environ["ARCADE_WORKER_SECRET"]
def test_base_worker_init_no_secret_raises_error():
# Ensure secret is not set
original_secret = os.environ.get("ARCADE_WORKER_SECRET")
if "ARCADE_WORKER_SECRET" in os.environ:
del os.environ["ARCADE_WORKER_SECRET"]
def test_base_worker_init_no_secret_raises_error(monkeypatch):
# Ensure env var is not set
monkeypatch.delenv("ARCADE_WORKER_SECRET", raising=False)
with pytest.raises(ValueError, match="No secret provided for worker"):
BaseWorker()
# Restore secret if it was set
if original_secret is not None:
os.environ["ARCADE_WORKER_SECRET"] = original_secret
def test_base_worker_init_disable_auth():
worker = BaseWorker(disable_auth=True)

View file

@ -100,8 +100,8 @@ def test_health_check_route_no_auth(client_no_auth):
# Catalog
def test_get_catalog_route_no_auth_header(client):
response = client.get("/worker/tools")
assert response.status_code == 403
assert "Not authenticated" in response.text
assert response.status_code in [403, 401]
assert "Not authenticated" in response.text or "Unauthorized" in response.text
def test_get_catalog_route_invalid_auth_header(client, worker_secret):
@ -131,7 +131,7 @@ def call_tool_payload():
def test_call_tool_route_no_auth_header(client, call_tool_payload):
response = client.post("/worker/tools/invoke", json=call_tool_payload)
assert response.status_code == 403
assert response.status_code in [403, 401]
def test_call_tool_route_invalid_auth_header(client, worker_secret, call_tool_payload):

View file

@ -1,6 +1,6 @@
[project]
name = "arcade-mcp"
version = "1.5.4"
version = "1.5.6"
description = "Arcade.dev - Tool Calling platform for Agents"
readme = "README.md"
license = {file = "LICENSE"}