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:
50
tests/test_oauth_pkce.py
Normal file
50
tests/test_oauth_pkce.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import pytest
|
||||
|
||||
from core.oauth.pkce import generate_code_challenge, generate_code_verifier, validate_code_challenge
|
||||
|
||||
|
||||
def test_code_verifier_generation():
|
||||
"""Test code verifier generation"""
|
||||
verifier = generate_code_verifier()
|
||||
|
||||
# Length check
|
||||
assert 43 <= len(verifier) <= 128
|
||||
|
||||
# Character set check
|
||||
import re
|
||||
|
||||
assert re.match(r"^[A-Za-z0-9_-]+$", verifier)
|
||||
|
||||
# Uniqueness
|
||||
assert verifier != generate_code_verifier()
|
||||
|
||||
|
||||
def test_code_challenge_s256():
|
||||
"""Test S256 code challenge generation"""
|
||||
# RFC 7636 Appendix B example
|
||||
verifier = "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
|
||||
expected = "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"
|
||||
|
||||
challenge = generate_code_challenge(verifier, "S256")
|
||||
assert challenge == expected
|
||||
|
||||
|
||||
def test_code_challenge_validation():
|
||||
"""Test PKCE validation"""
|
||||
verifier = generate_code_verifier()
|
||||
challenge = generate_code_challenge(verifier)
|
||||
|
||||
# Valid
|
||||
assert validate_code_challenge(verifier, challenge, "S256")
|
||||
|
||||
# Invalid verifier
|
||||
assert not validate_code_challenge("wrong", challenge, "S256")
|
||||
|
||||
# Invalid challenge
|
||||
assert not validate_code_challenge(verifier, "wrong", "S256")
|
||||
|
||||
|
||||
def test_plain_method_not_allowed():
|
||||
"""Test that plain method is not allowed (OAuth 2.1)"""
|
||||
with pytest.raises(ValueError, match="S256"):
|
||||
generate_code_challenge("verifier", "plain")
|
||||
Reference in New Issue
Block a user