Initial commit: MCP Hub Community Edition v3.0.0
Community edition generated from private repo via sync pipeline. Includes 9 plugins (WordPress, WooCommerce, WP Advanced, Gitea, n8n, Supabase, OpenPanel, Appwrite, Directus) with ~587 tools. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
74
tests/test_oauth_client_registry.py
Normal file
74
tests/test_oauth_client_registry.py
Normal file
@@ -0,0 +1,74 @@
|
||||
import tempfile
|
||||
|
||||
import pytest
|
||||
|
||||
from core.oauth.client_registry import ClientRegistry
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def registry():
|
||||
"""Create temporary client registry for tests"""
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
yield ClientRegistry(tmpdir)
|
||||
|
||||
|
||||
def test_create_client(registry):
|
||||
"""Test client creation"""
|
||||
client_id, client_secret = registry.create_client(
|
||||
client_name="Test App", redirect_uris=["http://localhost:3000/callback"]
|
||||
)
|
||||
|
||||
# Check client_id format
|
||||
assert client_id.startswith("cmp_client_")
|
||||
|
||||
# Check secret is generated
|
||||
assert len(client_secret) > 20
|
||||
|
||||
# Retrieve client
|
||||
client = registry.get_client(client_id)
|
||||
assert client is not None
|
||||
assert client.client_name == "Test App"
|
||||
assert "authorization_code" in client.grant_types
|
||||
|
||||
|
||||
def test_validate_client_secret(registry):
|
||||
"""Test client secret validation"""
|
||||
client_id, client_secret = registry.create_client(
|
||||
client_name="Test App", redirect_uris=["http://localhost:3000/callback"]
|
||||
)
|
||||
|
||||
# Valid secret
|
||||
assert registry.validate_client_secret(client_id, client_secret)
|
||||
|
||||
# Invalid secret
|
||||
assert not registry.validate_client_secret(client_id, "wrong_secret")
|
||||
|
||||
# Non-existent client
|
||||
assert not registry.validate_client_secret("fake_id", client_secret)
|
||||
|
||||
|
||||
def test_list_clients(registry):
|
||||
"""Test listing clients"""
|
||||
# Create multiple clients
|
||||
registry.create_client("App 1", ["http://localhost:3001/callback"])
|
||||
registry.create_client("App 2", ["http://localhost:3002/callback"])
|
||||
|
||||
clients = registry.list_clients()
|
||||
assert len(clients) == 2
|
||||
assert clients[0].client_name in ["App 1", "App 2"]
|
||||
|
||||
|
||||
def test_delete_client(registry):
|
||||
"""Test client deletion"""
|
||||
client_id, _ = registry.create_client(
|
||||
client_name="Test App", redirect_uris=["http://localhost:3000/callback"]
|
||||
)
|
||||
|
||||
# Delete
|
||||
assert registry.delete_client(client_id)
|
||||
|
||||
# Should not exist
|
||||
assert registry.get_client(client_id) is None
|
||||
|
||||
# Delete non-existent
|
||||
assert not registry.delete_client("fake_id")
|
||||
Reference in New Issue
Block a user