""" 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)