4729698049
git-subtree-dir: paste-framework git-subtree-split: 34e8684c4bc3cebbe177509f42ab4ef5b5425a7a
113 lines
3.8 KiB
Python
113 lines
3.8 KiB
Python
"""
|
|
RBAC 模型集成测试。
|
|
需要真实数据库连接,默认被跳过。
|
|
运行方式:pytest tests/integration/ -v
|
|
"""
|
|
|
|
import pandas as pd
|
|
import pytest
|
|
|
|
from paste.rbac.rbac_user import RbacUser, RbacItem, RbacPermission, RbacAssignment
|
|
|
|
|
|
@pytest.mark.integration
|
|
class TestRbacUser:
|
|
"""RBAC 用户模型集成测试"""
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_user_query_generates_sql(self):
|
|
"""验证用户查询能生成 SQL"""
|
|
query = RbacUser().gen_query()
|
|
sql = RbacUser.raw_sql(query)
|
|
assert sql is not None
|
|
assert 'SELECT' in str(sql)
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_user_query_all(self):
|
|
"""测试查询所有用户"""
|
|
query = RbacUser().gen_query()
|
|
users = await RbacUser.query_all(query)
|
|
assert isinstance(users, list)
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_user_query_as_dataframe(self):
|
|
"""测试用户查询返回 DataFrame"""
|
|
query = RbacUser().gen_query()
|
|
df = await RbacUser.query_as_df(query)
|
|
assert isinstance(df, pd.DataFrame)
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_find_by_username(self):
|
|
"""测试根据用户名查询"""
|
|
user = await RbacUser.find_by_username('test')
|
|
# 如果用户不存在,返回 None
|
|
if user is not None:
|
|
assert isinstance(user, RbacUser)
|
|
assert user.username == 'test'
|
|
|
|
|
|
@pytest.mark.integration
|
|
class TestRbacItem:
|
|
"""RBAC 授权项模型集成测试"""
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_item_query_all(self):
|
|
"""测试查询所有授权项"""
|
|
query = RbacItem().gen_query()
|
|
items = await RbacItem.query_all(query)
|
|
assert isinstance(items, list)
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_item_query_as_dataframe(self):
|
|
"""测试授权项查询返回 DataFrame"""
|
|
query = RbacItem().gen_query()
|
|
df = await RbacItem.query_as_df(query)
|
|
assert isinstance(df, pd.DataFrame)
|
|
|
|
|
|
@pytest.mark.integration
|
|
class TestRbacPermission:
|
|
"""RBAC 权限模型集成测试"""
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_permission_query_all(self):
|
|
"""测试查询所有权限"""
|
|
query = RbacPermission().gen_query()
|
|
permissions = await RbacPermission.query_all(query)
|
|
assert isinstance(permissions, list)
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_permission_query_as_dataframe(self):
|
|
"""测试权限查询返回 DataFrame"""
|
|
query = RbacPermission().gen_query()
|
|
df = await RbacPermission.query_as_df(query)
|
|
assert isinstance(df, pd.DataFrame)
|
|
|
|
|
|
@pytest.mark.integration
|
|
class TestRbacAssignment:
|
|
"""RBAC 分配关系集成测试"""
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_assignment_query_all(self):
|
|
"""测试查询所有分配关系"""
|
|
query = RbacAssignment().gen_query()
|
|
assignments = await RbacAssignment.query_all(query)
|
|
assert isinstance(assignments, list)
|
|
|
|
@pytest.mark.skip(reason="需要真实数据库连接")
|
|
@pytest.mark.asyncio
|
|
async def test_assignment_query_as_dataframe(self):
|
|
"""测试分配关系查询返回 DataFrame"""
|
|
query = RbacAssignment().gen_query()
|
|
df = await RbacAssignment.query_as_df(query)
|
|
assert isinstance(df, pd.DataFrame) |