mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-06-23 16:29:25 +08:00
fix: the application's api endpoints accept requests... in internal_r...
The application's API endpoints accept requests without any authentication or authorization verification
This commit is contained in:
parent
06eb3253eb
commit
32b9275039
68
tests/test_invariant_internal_routes.py
Normal file
68
tests/test_invariant_internal_routes.py
Normal file
@ -0,0 +1,68 @@
|
||||
import pytest
|
||||
from aiohttp import web
|
||||
from aiohttp.test_utils import AioHTTPTestCase, unittest_run_loop
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))))
|
||||
|
||||
from api_server.routes.internal.internal_routes import InternalRoutes
|
||||
|
||||
|
||||
class TestInternalRoutesAuthRequired(AioHTTPTestCase):
|
||||
"""Invariant: Protected internal endpoints must reject unauthenticated requests"""
|
||||
|
||||
async def get_application(self):
|
||||
app = web.Application()
|
||||
internal_routes = InternalRoutes()
|
||||
internal_routes.setup_routes(app)
|
||||
return app
|
||||
|
||||
@unittest_run_loop
|
||||
async def test_unauthenticated_requests_rejected(self):
|
||||
"""Internal endpoints should reject requests without valid authentication"""
|
||||
test_cases = [
|
||||
# No auth header at all
|
||||
{"headers": {}, "desc": "missing_auth"},
|
||||
# Malformed token
|
||||
{"headers": {"Authorization": "Bearer invalid.malformed.token"}, "desc": "malformed_token"},
|
||||
# Empty bearer token
|
||||
{"headers": {"Authorization": "Bearer "}, "desc": "empty_token"},
|
||||
]
|
||||
|
||||
endpoints = [
|
||||
("/internal/status", "GET"),
|
||||
("/internal/config", "POST"),
|
||||
]
|
||||
|
||||
for endpoint, method in endpoints:
|
||||
for case in test_cases:
|
||||
if method == "GET":
|
||||
resp = await self.client.get(endpoint, headers=case["headers"])
|
||||
else:
|
||||
resp = await self.client.post(
|
||||
endpoint,
|
||||
headers=case["headers"],
|
||||
json={"test": "data"}
|
||||
)
|
||||
|
||||
assert resp.status in (401, 403), (
|
||||
f"Endpoint {endpoint} accepted unauthenticated request "
|
||||
f"({case['desc']}): got {resp.status}, expected 401/403"
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_internal_routes_require_auth():
|
||||
"""Standalone test: internal routes must require authentication"""
|
||||
from aiohttp.test_utils import TestClient, TestServer
|
||||
|
||||
app = web.Application()
|
||||
internal_routes = InternalRoutes()
|
||||
internal_routes.setup_routes(app)
|
||||
|
||||
async with TestClient(TestServer(app)) as client:
|
||||
# Test without any authentication
|
||||
resp = await client.post("/internal/config", json={"action": "get_config"})
|
||||
assert resp.status in (401, 403), f"Expected 401/403, got {resp.status}"
|
||||
Loading…
Reference in New Issue
Block a user