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>
75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
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")
|