test: Disable interactive tests for ci
This commit is contained in:
@@ -56,4 +56,4 @@ jobs:
|
|||||||
NEXTCLOUD_USERNAME: "admin"
|
NEXTCLOUD_USERNAME: "admin"
|
||||||
NEXTCLOUD_PASSWORD: "admin"
|
NEXTCLOUD_PASSWORD: "admin"
|
||||||
run: |
|
run: |
|
||||||
uv run --frozen python -m pytest
|
uv run --frozen python -m pytest -m 'not interactive'
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""Test script to verify OAuth MCP tools work correctly.
|
|
||||||
|
|
||||||
This script connects to the OAuth MCP server and tests tool execution.
|
|
||||||
Note: This currently requires a valid OAuth token, which must be obtained
|
|
||||||
through the browser-based OAuth flow.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from mcp import ClientSession
|
|
||||||
from mcp.client.streamable_http import streamablehttp_client
|
|
||||||
|
|
||||||
|
|
||||||
async def test_oauth_mcp_tools():
|
|
||||||
"""Test OAuth MCP server tools."""
|
|
||||||
print("Connecting to OAuth MCP server on port 8001...")
|
|
||||||
|
|
||||||
streamable_context = streamablehttp_client("http://127.0.0.1:8001/mcp")
|
|
||||||
session_context = None
|
|
||||||
|
|
||||||
try:
|
|
||||||
read_stream, write_stream, _ = await streamable_context.__aenter__()
|
|
||||||
session_context = ClientSession(read_stream, write_stream)
|
|
||||||
session = await session_context.__aenter__()
|
|
||||||
|
|
||||||
print("Initializing session...")
|
|
||||||
await session.initialize()
|
|
||||||
print("✓ Session initialized successfully")
|
|
||||||
|
|
||||||
# List available tools
|
|
||||||
print("\nListing available tools...")
|
|
||||||
result = await session.list_tools()
|
|
||||||
print(f"✓ Found {len(result.tools)} tools")
|
|
||||||
|
|
||||||
for tool in result.tools[:5]: # Show first 5
|
|
||||||
print(f" - {tool.name}: {tool.description}")
|
|
||||||
|
|
||||||
if len(result.tools) > 5:
|
|
||||||
print(f" ... and {len(result.tools) - 5} more")
|
|
||||||
|
|
||||||
# Try to call a simple tool
|
|
||||||
print("\nTesting tool execution...")
|
|
||||||
print("Note: Tool execution will fail without a valid OAuth token")
|
|
||||||
print(" (OAuth token must be obtained through browser flow)")
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Try to list tables (this will fail without OAuth token)
|
|
||||||
response = await session.call_tool("nc_tables_list_tables", {})
|
|
||||||
print(f"✓ Tool executed successfully: {response}")
|
|
||||||
except Exception as e:
|
|
||||||
print(f"✗ Tool execution failed (expected without OAuth token): {e}")
|
|
||||||
print("\nTo use OAuth tools, you need to:")
|
|
||||||
print(" 1. Implement the browser-based OAuth authorization flow")
|
|
||||||
print(" 2. Obtain an access token from Nextcloud OIDC")
|
|
||||||
print(" 3. Include the token in the Authorization header")
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print(f"✗ Error: {e}")
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
traceback.print_exc()
|
|
||||||
return False
|
|
||||||
|
|
||||||
finally:
|
|
||||||
# Clean up
|
|
||||||
if session_context is not None:
|
|
||||||
try:
|
|
||||||
await session_context.__aexit__(None, None, None)
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
try:
|
|
||||||
await streamable_context.__aexit__(None, None, None)
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
print("OAuth MCP Server Tool Test")
|
|
||||||
print("=" * 50)
|
|
||||||
|
|
||||||
success = asyncio.run(test_oauth_mcp_tools())
|
|
||||||
|
|
||||||
print("\n" + "=" * 50)
|
|
||||||
if success:
|
|
||||||
print("✓ Test completed (tools accessible)")
|
|
||||||
sys.exit(0)
|
|
||||||
else:
|
|
||||||
print("✗ Test failed")
|
|
||||||
sys.exit(1)
|
|
||||||
Reference in New Issue
Block a user