Files
RuoYi-Vue3-FastAPI/ruoyi-fastapi-backend/tests/cli/root/test_guards.py
T
insistence 4bd83bc7cd feat: 支持 v2 插件、独立前端和签名制品发布 (#130)
* feat: 支持 v2 插件、原生扩展与签名发布

* fix: 修复测试

* feat: 增强宿主 SDK、运行观测与制品维护能力

* feat: 增强文件传输、配置观测与本地开发能力

* feat: 支持 SSE 实时事件流并完善开发脚手架

* feat: 完善长连接鉴权复核与关闭回收

* feat: 增强生命周期与任务关闭可靠性

* feat: 收紧健康检查契约并补齐前端与真实网络验收

* feat: 增加SDK溯源与离线更新工具并验证跨版本兼容

* feat: 增加持久化业务示例与受控 Python 交付

* feat: 增加统一运行诊断与多worker状态观测

* feat: 增加固定目标发布等待与自动验收

* fix: 修复多环境插件部署前缀与代理配置不一致

* fix: 修复测试
2026-10-09 23:49:45 +08:00

93 lines
2.7 KiB
Python

import importlib
import sys
from pathlib import Path
import pytest
BACKEND_DIR = Path(__file__).resolve().parents[3]
sys.path.insert(0, str(BACKEND_DIR))
cli_guards = importlib.import_module('cli.guards')
cli_guards = importlib.reload(cli_guards)
DEFAULT_DANGEROUS_COMMAND_RULES = cli_guards.DEFAULT_DANGEROUS_COMMAND_RULES
DEFAULT_DANGEROUS_COMMAND_RULE_REGISTRY = cli_guards.DEFAULT_DANGEROUS_COMMAND_RULE_REGISTRY
def test_dangerous_command_rules_cover_expected_commands() -> None:
"""
校验危险命令规则表已覆盖当前设计文档中约定的命令范围。
:return: None
"""
assert set(DEFAULT_DANGEROUS_COMMAND_RULES) == {
'cache clear',
'cache warmup',
'db upgrade',
'db init',
'db downgrade',
'db revision',
'config set',
'config sync-cache',
'crypto rotate',
'oidc key bootstrap',
'job run-once',
'job pause',
'job resume',
'job sync',
'gen import-table',
'gen create-table',
'gen export',
'gen sync-db',
'plugin install',
'plugin artifact import',
'plugin artifact prune',
'plugin artifact rotate-signature',
'plugin artifact reconcile',
'plugin release prepare',
'plugin release select',
'plugin release rollback',
'plugin release enable',
'plugin release disable',
'plugin install-deps',
'plugin upgrade',
'plugin batch',
'plugin enable',
'plugin disable',
'plugin config set',
'plugin config import',
'plugin config export',
'plugin uninstall',
'plugin purge',
'plugin mark-success',
'plugin mark-failed',
}
def test_dangerous_command_rules_expose_risk_level_and_dry_run_metadata() -> None:
"""
校验危险命令规则能够提供风险级别和 dry-run 能力元数据。
:return: None
"""
db_upgrade_rule = DEFAULT_DANGEROUS_COMMAND_RULE_REGISTRY.get_rule('db upgrade')
cache_warmup_rule = DEFAULT_DANGEROUS_COMMAND_RULE_REGISTRY.get_rule('cache warmup')
assert db_upgrade_rule is not None
assert db_upgrade_rule.risk_level == 'high'
assert db_upgrade_rule.supports_dry_run is True
assert cache_warmup_rule is not None
assert cache_warmup_rule.risk_level == 'normal'
assert cache_warmup_rule.supports_dry_run is False
def test_require_dangerous_command_rule_rejects_unknown_command() -> None:
"""
校验未注册的危险命令名称会被显式拒绝。
:return: None
"""
with pytest.raises(ValueError, match='危险命令未注册保护规则'):
DEFAULT_DANGEROUS_COMMAND_RULE_REGISTRY.require_rule('unknown dangerous command')