mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
refactor: 收口订阅与插件应用边界
This commit is contained in:
@@ -688,7 +688,7 @@ def test_openapi_success_models_have_no_implicit_empty_nested_schemas():
|
||||
|
||||
def test_plugin_routes_only_register_v1(monkeypatch):
|
||||
"""插件动态路由只注册 v1 地址,并显式绕过主程序响应路由。"""
|
||||
from app.application import plugins
|
||||
from app.application.plugin import routes as plugin_routes
|
||||
|
||||
class FakeApp:
|
||||
"""记录动态注册路径的应用桩。"""
|
||||
@@ -723,7 +723,7 @@ def test_plugin_routes_only_register_v1(monkeypatch):
|
||||
|
||||
fake_app = FakeApp()
|
||||
plugin_manager = FakePluginManager()
|
||||
plugins.configure_plugin_routes(FastAPIDynamicRouteRegistry(
|
||||
plugin_routes.configure_plugin_routes(FastAPIDynamicRouteRegistry(
|
||||
app=fake_app,
|
||||
plugin_ids=lambda: ["DemoPlugin"],
|
||||
plugin_apis=plugin_manager.get_plugin_apis,
|
||||
@@ -734,13 +734,13 @@ def test_plugin_routes_only_register_v1(monkeypatch):
|
||||
log=SimpleNamespace(debug=lambda *_args: None, error=lambda *_args: None),
|
||||
))
|
||||
|
||||
plugins._update_plugin_api_routes("DemoPlugin", action="add")
|
||||
plugin_routes.register_plugin_api("DemoPlugin")
|
||||
assert [route.path for route in fake_app.routes] == [
|
||||
"/api/v1/plugin/DemoPlugin/health"
|
||||
]
|
||||
assert fake_app.route_options[0]["route_class_override"] is APIRoute
|
||||
|
||||
plugins._update_plugin_api_routes("DemoPlugin", action="remove")
|
||||
plugin_routes.remove_plugin_api("DemoPlugin")
|
||||
assert fake_app.routes == []
|
||||
|
||||
|
||||
@@ -774,7 +774,7 @@ def test_dynamic_host_route_without_annotation_uses_recursive_json_model():
|
||||
|
||||
def build_plugin_api_app(monkeypatch) -> FastAPI:
|
||||
"""构造覆盖插件自由返回类型的动态路由测试应用。"""
|
||||
from app.application import plugins
|
||||
from app.application.plugin import routes as plugin_routes
|
||||
|
||||
class PluginPayload(BaseModel):
|
||||
"""插件自行声明的响应模型。"""
|
||||
@@ -851,7 +851,7 @@ def build_plugin_api_app(monkeypatch) -> FastAPI:
|
||||
app = FastAPI()
|
||||
app.router.route_class = ResponseAPIRoute
|
||||
plugin_manager = FakePluginManager()
|
||||
plugins.configure_plugin_routes(FastAPIDynamicRouteRegistry(
|
||||
plugin_routes.configure_plugin_routes(FastAPIDynamicRouteRegistry(
|
||||
app=app,
|
||||
plugin_ids=lambda: ["DemoPlugin"],
|
||||
plugin_apis=plugin_manager.get_plugin_apis,
|
||||
@@ -861,7 +861,7 @@ def build_plugin_api_app(monkeypatch) -> FastAPI:
|
||||
protected_routes=set(),
|
||||
log=SimpleNamespace(debug=lambda *_args: None, error=lambda *_args: None),
|
||||
))
|
||||
plugins._update_plugin_api_routes("DemoPlugin", action="add")
|
||||
plugin_routes.register_plugin_api("DemoPlugin")
|
||||
return app
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user