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:
parent
44660d18ce
commit
7fb097f20f
4 changed files with 12 additions and 33 deletions
|
|
@ -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" }]
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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"}
|
||||
|
|
|
|||
Loading…
Reference in a new issue