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:
71
tests/test_oauth_storage.py
Normal file
71
tests/test_oauth_storage.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import tempfile
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
from core.oauth.schemas import AuthorizationCode, RefreshToken
|
||||
from core.oauth.storage import JSONStorage
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def storage():
|
||||
"""Create temporary storage for tests"""
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
yield JSONStorage(tmpdir)
|
||||
|
||||
|
||||
def test_save_and_get_authorization_code(storage):
|
||||
"""Test authorization code storage"""
|
||||
code = AuthorizationCode(
|
||||
code="test_code_123",
|
||||
client_id="client_1",
|
||||
redirect_uri="http://localhost:3000/callback",
|
||||
scope="read write",
|
||||
code_challenge="challenge_123",
|
||||
expires_at=datetime.now(UTC) + timedelta(minutes=5),
|
||||
)
|
||||
|
||||
# Save
|
||||
assert storage.save_authorization_code(code)
|
||||
|
||||
# Get
|
||||
retrieved = storage.get_authorization_code("test_code_123")
|
||||
assert retrieved is not None
|
||||
assert retrieved.code == "test_code_123"
|
||||
assert retrieved.client_id == "client_1"
|
||||
|
||||
|
||||
def test_expired_code_auto_cleanup(storage):
|
||||
"""Test expired code auto-cleanup"""
|
||||
code = AuthorizationCode(
|
||||
code="expired_code",
|
||||
client_id="client_1",
|
||||
redirect_uri="http://localhost:3000/callback",
|
||||
scope="read",
|
||||
code_challenge="challenge",
|
||||
expires_at=datetime.now(UTC) - timedelta(seconds=1), # Expired
|
||||
)
|
||||
|
||||
storage.save_authorization_code(code)
|
||||
|
||||
# Should return None and cleanup
|
||||
retrieved = storage.get_authorization_code("expired_code")
|
||||
assert retrieved is None
|
||||
|
||||
|
||||
def test_refresh_token_revocation(storage):
|
||||
"""Test refresh token revocation"""
|
||||
token = RefreshToken(
|
||||
token="refresh_token_123",
|
||||
client_id="client_1",
|
||||
expires_at=datetime.now(UTC) + timedelta(days=7),
|
||||
)
|
||||
|
||||
storage.save_refresh_token(token)
|
||||
|
||||
# Revoke
|
||||
assert storage.revoke_refresh_token("refresh_token_123")
|
||||
|
||||
# Should return None
|
||||
retrieved = storage.get_refresh_token("refresh_token_123")
|
||||
assert retrieved is None
|
||||
Reference in New Issue
Block a user