test_roles.py 1.74 KB
import random
import string
from typing import Dict

from client import ApiClient


def _rand_suffix(n: int = 5) -> str:
	import random as _r, string as _s
	return ''.join(_r.choice(_s.ascii_lowercase + _s.digits) for _ in range(n))


def run_role_tests(base_url: str = 'http://localhost:8083') -> None:
	client = ApiClient(base_url)

	# 1) 角色列表
	resp = client.get('/api/system/role/list', params={'pageNum': 1, 'pageSize': 5})
	print('角色列表 status=', resp.status_code)
	print(resp.text)

	# 2) 新增角色
	new_role: Dict = {
		'roleCode': f'test_{_rand_suffix()}',
		'roleName': '接口测试角色',
		'status': 1,
		'menuIds': []  # 如有菜单ID可填充
	}
	resp = client.post('/api/system/role/add', new_role)
	print('新增角色 status=', resp.status_code)
	print(resp.text)

	role_id = None
	try:
		lst = client.get('/api/system/role/list', params={'roleCode': new_role['roleCode'], 'pageNum': 1, 'pageSize': 1}).json()
		records = ((lst.get('data') or {}).get('records') or [])
		if records:
			role_id = records[0].get('roleId')
	except Exception:
		pass

	# 3) 编辑角色
	if role_id:
		edit_body = {
			'roleId': role_id,
			'roleCode': new_role['roleCode'],
			'roleName': '接口测试角色-已修改',
			'status': 1,
			'menuIds': []
		}
		resp = client.post('/api/system/role/edit', edit_body)
		print('编辑角色 status=', resp.status_code)
		print(resp.text)

		# 4) 停用角色
		resp = client.post('/api/system/role/changeStatus', {'roleId': role_id, 'status': 0})
		print('修改角色状态 status=', resp.status_code)
		print(resp.text)

		# 5) 删除角色
		resp = client.delete(f'/api/system/role/{role_id}')
		print('删除角色 status=', resp.status_code)
		print(resp.text)


if __name__ == '__main__':
	run_role_tests()