mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-23 05:54:19 +02:00
Remove open-ended and server-specific settings
This commit is contained in:
parent
94a931f2f3
commit
aaa09ca7a3
16 changed files with 507 additions and 119 deletions
|
|
@ -4,6 +4,8 @@ from pydantic import AnyHttpUrl, ValidationError
|
|||
from fastmcp import FastMCP
|
||||
from fastmcp.server.auth.providers.bearer import BearerAuthProvider
|
||||
from fastmcp.server.auth.providers.bearer_env import EnvBearerAuthProvider
|
||||
from fastmcp.settings import Settings
|
||||
from fastmcp.utilities.tests import temporary_settings
|
||||
|
||||
|
||||
def test_load_bearer_env_from_env_var(monkeypatch):
|
||||
|
|
@ -13,7 +15,8 @@ def test_load_bearer_env_from_env_var(monkeypatch):
|
|||
monkeypatch.setenv("FASTMCP_SERVER_DEFAULT_AUTH_PROVIDER", "bearer_env")
|
||||
monkeypatch.setenv("FASTMCP_AUTH_BEARER_PUBLIC_KEY", "test-public-key")
|
||||
|
||||
mcp_with_auth = FastMCP()
|
||||
with temporary_settings(**Settings().model_dump()):
|
||||
mcp_with_auth = FastMCP()
|
||||
assert isinstance(mcp_with_auth.auth, EnvBearerAuthProvider)
|
||||
|
||||
|
||||
|
|
@ -23,10 +26,11 @@ def test_load_bearer_env_from_env_var_requires_public_key_or_jwks_uri(monkeypatc
|
|||
|
||||
monkeypatch.setenv("FASTMCP_SERVER_DEFAULT_AUTH_PROVIDER", "bearer_env")
|
||||
|
||||
with pytest.raises(
|
||||
ValueError, match="Either public_key or jwks_uri must be provided"
|
||||
):
|
||||
FastMCP()
|
||||
with temporary_settings(**Settings().model_dump()):
|
||||
with pytest.raises(
|
||||
ValueError, match="Either public_key or jwks_uri must be provided"
|
||||
):
|
||||
FastMCP()
|
||||
|
||||
|
||||
def test_configure_bearer_env_from_env_var(monkeypatch):
|
||||
|
|
@ -38,7 +42,8 @@ def test_configure_bearer_env_from_env_var(monkeypatch):
|
|||
"FASTMCP_AUTH_BEARER_REQUIRED_SCOPES", '["test-scope1", "test-scope2"]'
|
||||
)
|
||||
|
||||
mcp = FastMCP()
|
||||
with temporary_settings(**Settings().model_dump()):
|
||||
mcp = FastMCP()
|
||||
assert isinstance(mcp.auth, EnvBearerAuthProvider)
|
||||
assert mcp.auth.public_key == "test-public-key"
|
||||
assert mcp.auth.issuer_url == AnyHttpUrl("http://test-issuer")
|
||||
|
|
@ -50,17 +55,19 @@ def test_list_of_scopes_must_be_a_list(monkeypatch):
|
|||
monkeypatch.setenv("FASTMCP_SERVER_DEFAULT_AUTH_PROVIDER", "bearer_env")
|
||||
monkeypatch.setenv("FASTMCP_AUTH_BEARER_REQUIRED_SCOPES", "test-scope1")
|
||||
|
||||
with pytest.raises(ValidationError, match="Input should be a valid list"):
|
||||
FastMCP()
|
||||
with temporary_settings(**Settings().model_dump()):
|
||||
with pytest.raises(ValidationError, match="Input should be a valid list"):
|
||||
FastMCP()
|
||||
|
||||
|
||||
def test_configure_bearer_env_jwks_uri_from_env_var(monkeypatch):
|
||||
monkeypatch.setenv("FASTMCP_SERVER_DEFAULT_AUTH_PROVIDER", "bearer_env")
|
||||
monkeypatch.setenv("FASTMCP_AUTH_BEARER_JWKS_URI", "test-jwks-uri")
|
||||
|
||||
mcp = FastMCP()
|
||||
assert isinstance(mcp.auth, EnvBearerAuthProvider)
|
||||
assert mcp.auth.jwks_uri == "test-jwks-uri"
|
||||
with temporary_settings(**Settings().model_dump()):
|
||||
mcp = FastMCP()
|
||||
assert isinstance(mcp.auth, EnvBearerAuthProvider)
|
||||
assert mcp.auth.jwks_uri == "test-jwks-uri"
|
||||
|
||||
|
||||
def test_configure_bearer_env_public_key_and_jwks_uri_error(monkeypatch):
|
||||
|
|
@ -68,15 +75,17 @@ def test_configure_bearer_env_public_key_and_jwks_uri_error(monkeypatch):
|
|||
monkeypatch.setenv("FASTMCP_AUTH_BEARER_PUBLIC_KEY", "test-public-key")
|
||||
monkeypatch.setenv("FASTMCP_AUTH_BEARER_JWKS_URI", "test-jwks-uri")
|
||||
|
||||
with pytest.raises(ValueError, match="Provide either public_key or jwks_uri"):
|
||||
FastMCP()
|
||||
with temporary_settings(**Settings().model_dump()):
|
||||
with pytest.raises(ValueError, match="Provide either public_key or jwks_uri"):
|
||||
FastMCP()
|
||||
|
||||
|
||||
def test_provided_auth_takes_precedence_over_env_vars(monkeypatch):
|
||||
monkeypatch.setenv("FASTMCP_SERVER_DEFAULT_AUTH_PROVIDER", "bearer_env")
|
||||
monkeypatch.setenv("FASTMCP_AUTH_BEARER_PUBLIC_KEY", "test-public-key")
|
||||
|
||||
mcp = FastMCP(auth=BearerAuthProvider(public_key="test-public-key-2"))
|
||||
assert isinstance(mcp.auth, BearerAuthProvider)
|
||||
assert not isinstance(mcp.auth, EnvBearerAuthProvider)
|
||||
assert mcp.auth.public_key == "test-public-key-2"
|
||||
with temporary_settings(**Settings().model_dump()):
|
||||
mcp = FastMCP(auth=BearerAuthProvider(public_key="test-public-key-2"))
|
||||
assert isinstance(mcp.auth, BearerAuthProvider)
|
||||
assert not isinstance(mcp.auth, EnvBearerAuthProvider)
|
||||
assert mcp.auth.public_key == "test-public-key-2"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue