2022-09-12 15:22:18 +00:00
|
|
|
import pytest
|
2022-09-12 07:11:12 +00:00
|
|
|
import requests as client
|
|
|
|
|
2022-09-12 15:22:18 +00:00
|
|
|
from core.log import logger
|
2022-09-12 07:11:12 +00:00
|
|
|
from schemas.menu import MenuIn
|
2022-09-16 09:37:24 +00:00
|
|
|
from schemas.role import RoleIn
|
2022-09-12 15:22:18 +00:00
|
|
|
from schemas.user import RoleActive, UserAdd
|
2022-09-12 07:11:12 +00:00
|
|
|
|
|
|
|
base = "http://localhost:8000"
|
|
|
|
|
2022-09-18 07:01:20 +00:00
|
|
|
|
|
|
|
dirs = [
|
2022-09-12 15:22:18 +00:00
|
|
|
(
|
|
|
|
"/menu",
|
|
|
|
MenuIn( # id 1
|
2022-09-12 07:11:12 +00:00
|
|
|
name="系统管理",
|
2022-09-13 08:53:31 +00:00
|
|
|
meta={"icon": "AppstoreOutlined"},
|
2022-09-12 07:11:12 +00:00
|
|
|
path="/system",
|
|
|
|
type=0,
|
|
|
|
component=None,
|
|
|
|
pid=0,
|
|
|
|
identifier=None,
|
|
|
|
api=None,
|
|
|
|
method=None,
|
|
|
|
).dict(),
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
|
|
|
(
|
|
|
|
"/menu",
|
|
|
|
MenuIn( # id 2
|
|
|
|
name="系统设置",
|
2022-09-13 08:53:31 +00:00
|
|
|
meta={"icon": "SettingOutlined"},
|
2022-09-12 15:22:18 +00:00
|
|
|
path="/system",
|
|
|
|
type=0,
|
|
|
|
component=None,
|
|
|
|
pid=0,
|
|
|
|
identifier=None,
|
|
|
|
api=None,
|
|
|
|
method=None,
|
|
|
|
).dict(),
|
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("path, data", dirs)
|
|
|
|
def test_add_dir(path, data):
|
|
|
|
"""添加一级目录"""
|
|
|
|
res = client.post(url=base + path, json=data)
|
|
|
|
logger.info(res.json())
|
|
|
|
assert res.status_code == 200
|
|
|
|
|
|
|
|
|
|
|
|
menus = [
|
2022-09-12 15:22:18 +00:00
|
|
|
(
|
|
|
|
"/menu",
|
|
|
|
MenuIn( # id 3
|
2022-09-12 07:11:12 +00:00
|
|
|
name="用户管理",
|
2022-09-18 07:01:20 +00:00
|
|
|
meta={"icon": "TeamOutlined", "title": "用户管理"},
|
2022-09-12 07:11:12 +00:00
|
|
|
path="/system/user",
|
|
|
|
type=1,
|
2022-09-13 13:59:01 +00:00
|
|
|
component="/system/user/user.vue",
|
2022-09-12 07:11:12 +00:00
|
|
|
pid=1,
|
|
|
|
).dict(),
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
|
|
|
(
|
|
|
|
"/menu",
|
|
|
|
MenuIn( # id 4
|
2022-09-12 07:11:12 +00:00
|
|
|
name="角色管理",
|
2022-09-18 07:01:20 +00:00
|
|
|
meta={"icon": "UserOutlined", "title": "角色管理"},
|
2022-09-12 07:11:12 +00:00
|
|
|
path="/system/role",
|
|
|
|
type=1,
|
2022-09-13 13:59:01 +00:00
|
|
|
component="/system/role/role.vue",
|
2022-09-12 07:11:12 +00:00
|
|
|
pid=1,
|
|
|
|
).dict(),
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
|
|
|
(
|
|
|
|
"/menu",
|
|
|
|
MenuIn( # id 5
|
2022-09-12 07:11:12 +00:00
|
|
|
name="菜单管理",
|
2022-09-18 07:01:20 +00:00
|
|
|
meta={"icon": "MenuOutlined", "title": "菜单管理"},
|
2022-09-12 07:11:12 +00:00
|
|
|
path="/system/menu",
|
|
|
|
type=1,
|
2022-09-13 13:59:01 +00:00
|
|
|
component="/system/menu/menu.vue",
|
2022-09-12 07:11:12 +00:00
|
|
|
pid=1,
|
|
|
|
).dict(),
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
|
|
|
(
|
|
|
|
"/menu",
|
|
|
|
MenuIn( # id 6
|
|
|
|
name="关于",
|
2022-09-18 07:01:20 +00:00
|
|
|
meta={"icon": "DashboardOutlined", "title": "关于"},
|
2022-09-12 15:22:18 +00:00
|
|
|
path="/setting/about",
|
|
|
|
type=1,
|
2022-09-13 13:59:01 +00:00
|
|
|
component="/setting/about/about.vue",
|
2022-09-12 15:22:18 +00:00
|
|
|
pid=2,
|
2022-09-12 07:11:12 +00:00
|
|
|
).dict(),
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("path,data", menus)
|
|
|
|
def test_add_menu(path, data):
|
|
|
|
"""添加二级菜单"""
|
|
|
|
res = client.post(url=base + path, json=data)
|
|
|
|
logger.info(res.json())
|
|
|
|
assert res.status_code == 200
|
|
|
|
|
|
|
|
|
|
|
|
user_manager_pre = [
|
|
|
|
MenuIn(
|
|
|
|
name="用户详情",
|
|
|
|
type=3,
|
|
|
|
identifier="user:get",
|
|
|
|
api="/user/{pk}",
|
|
|
|
method="GET",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="用户列表",
|
|
|
|
type=3, # 数据类
|
|
|
|
api="/user",
|
|
|
|
method="GET",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="用户查询",
|
|
|
|
type=2,
|
|
|
|
identifier="user:query",
|
|
|
|
api="/user/query",
|
|
|
|
method="POST",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="用户新增",
|
|
|
|
type=2,
|
|
|
|
identifier="user:create",
|
|
|
|
api="/user",
|
|
|
|
method="POST",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="用户删除",
|
|
|
|
type=2,
|
|
|
|
identifier="user:delete",
|
|
|
|
api="/user/{pk}",
|
|
|
|
method="DELETE",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="用户更新",
|
|
|
|
type=2,
|
|
|
|
identifier="user:update",
|
|
|
|
api="/user/{pk}",
|
|
|
|
method="PUT",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("data", user_manager_pre)
|
|
|
|
def test_add_user_pre(data):
|
|
|
|
"""用户管理相关权限"""
|
|
|
|
data.pid = 3
|
|
|
|
res = client.post(url=base + "/menu", json=data.dict())
|
|
|
|
logger.info(res.json())
|
|
|
|
assert res.status_code == 200
|
|
|
|
|
|
|
|
|
|
|
|
role_manager_pre = [
|
|
|
|
MenuIn(
|
|
|
|
name="查询角色拥有权限",
|
|
|
|
type=3,
|
|
|
|
api="/role/{rid}/menu",
|
|
|
|
method="GET",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="角色列表",
|
|
|
|
type=3,
|
|
|
|
api="/role",
|
|
|
|
method="GET",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="角色查询",
|
|
|
|
meta={"icon": "Search"},
|
|
|
|
type=2,
|
|
|
|
identifier="role:query",
|
|
|
|
api="/role/query",
|
|
|
|
method="POST",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="角色新增",
|
|
|
|
type=2,
|
|
|
|
identifier="role:create",
|
|
|
|
api="/role",
|
|
|
|
method="POST",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="角色删除",
|
|
|
|
type=2,
|
|
|
|
identifier="role:delete",
|
|
|
|
api="/role/{pk}",
|
|
|
|
method="DELETE",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-18 07:01:20 +00:00
|
|
|
MenuIn(
|
|
|
|
name="角色更新",
|
|
|
|
type=2,
|
|
|
|
identifier="role:update",
|
|
|
|
api="/role/{pk}",
|
|
|
|
method="PUT",
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
2022-09-16 09:37:24 +00:00
|
|
|
]
|
|
|
|
|
2022-09-18 07:01:20 +00:00
|
|
|
|
|
|
|
@pytest.mark.parametrize("data", role_manager_pre)
|
|
|
|
def test_add_role_pre(data):
|
|
|
|
"""角色管理相关权限"""
|
|
|
|
logger.debug(data.dict())
|
|
|
|
data.pid = 4
|
|
|
|
res = client.post(url=base + "/menu", json=data.dict())
|
|
|
|
logger.info(res.json())
|
|
|
|
assert res.status_code == 200
|
|
|
|
|
|
|
|
|
|
|
|
menu_manager_pre = [
|
|
|
|
MenuIn(
|
|
|
|
name="菜单列表",
|
|
|
|
type=3,
|
|
|
|
api="/menu",
|
|
|
|
method="GET",
|
|
|
|
),
|
|
|
|
MenuIn(
|
|
|
|
name="菜单新增",
|
|
|
|
type=2,
|
|
|
|
identifier="menu:create",
|
|
|
|
api="/menu",
|
|
|
|
method="POST",
|
|
|
|
),
|
|
|
|
MenuIn(
|
|
|
|
name="菜单更新",
|
|
|
|
type=2,
|
|
|
|
identifier="menu:update",
|
|
|
|
api="/menu/{pk}",
|
|
|
|
method="PUT",
|
|
|
|
),
|
|
|
|
MenuIn(
|
|
|
|
name="菜单删除",
|
|
|
|
type=2,
|
|
|
|
identifier="menu:delete",
|
|
|
|
api="/menu/{pk}",
|
|
|
|
method="DELETE",
|
|
|
|
),
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("data", menu_manager_pre)
|
|
|
|
def test_add_menu_pre(data):
|
|
|
|
"""菜单管理相关权限"""
|
|
|
|
data.pid = 5
|
|
|
|
res = client.post(url=base + "/menu", json=data.dict())
|
|
|
|
logger.info(res.json())
|
|
|
|
assert res.status_code == 200
|
|
|
|
|
|
|
|
|
|
|
|
menus_len = (
|
|
|
|
len(user_manager_pre)
|
|
|
|
+ len(menus)
|
|
|
|
+ len(dirs)
|
|
|
|
+ len(role_manager_pre)
|
|
|
|
+ len(menu_manager_pre)
|
|
|
|
)
|
|
|
|
|
2022-09-16 09:37:24 +00:00
|
|
|
datas = [
|
|
|
|
(
|
|
|
|
"/role",
|
|
|
|
RoleIn(
|
2022-09-18 07:01:20 +00:00
|
|
|
name="superStar",
|
2022-09-16 09:37:24 +00:00
|
|
|
remark="全部权限",
|
2022-09-18 07:01:20 +00:00
|
|
|
menus=[num for num in range(1, menus_len)],
|
|
|
|
),
|
2022-09-16 09:37:24 +00:00
|
|
|
),
|
|
|
|
# 创建用户
|
2022-09-12 15:22:18 +00:00
|
|
|
(
|
2022-09-16 09:37:24 +00:00
|
|
|
"/user",
|
|
|
|
UserAdd(
|
|
|
|
username="admin",
|
2022-09-18 07:01:20 +00:00
|
|
|
nickname="666管理员",
|
2022-09-16 09:37:24 +00:00
|
|
|
password="123456",
|
|
|
|
roles=[RoleActive(rid=1, status=5)],
|
2022-09-18 07:01:20 +00:00
|
|
|
),
|
2022-09-12 15:22:18 +00:00
|
|
|
),
|
|
|
|
]
|
|
|
|
|
|
|
|
|
2022-09-16 09:37:24 +00:00
|
|
|
@pytest.mark.parametrize("path, data", datas)
|
|
|
|
def test_add_user(path, data):
|
|
|
|
"""添加账号"""
|
2022-09-18 07:01:20 +00:00
|
|
|
res = client.post(url=base + path, json=data.dict())
|
2022-09-12 15:22:18 +00:00
|
|
|
logger.info(res.json())
|
2022-09-18 07:01:20 +00:00
|
|
|
logger.info(menus_len)
|
2022-09-12 07:11:12 +00:00
|
|
|
assert res.status_code == 200
|