zdppy_amauth如何测试批量获取用户绑定的所有权限

简单的思路

1、添加用户
2、添加角色
3、绑定用户和角色的关系
4、添加3个权限
5、绑定角色和权限关系,给角色绑定2个权限
6、查询用户绑定的所有权限
7、删除用户
8、删除角色
9、删除权限
10、解绑用户的所有角色
11、解绑角色的所有权限

第一步:改造之前测试批量绑定角色的代码

之前的代码包含了如下步骤:
1、添加用户
2、添加角色
3、绑定用户和角色的关系
7、删除用户
8、删除角色
10、解绑用户的所有角色

还缺少如下步骤:
4、添加3个权限
5、绑定角色和权限关系,给角色绑定2个权限
6、查询用户绑定的所有权限
9、删除权限
11、解绑角色的所有权限

import unittest
import reqclass TestUserGetAuths(unittest.TestCase):def assertApiSuccess(self, resp):"""断言API接口的响应是成功的"""self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data["code"])self.assertEqual(True, data["status"])return data@classmethoddef setUpClass(cls):cls.base_url = "http://127.0.0.1:8888/auth"def test_user_get_auths(self):"""测试批量绑定角色"""# 添加用户target_url = f"{self.base_url}/user/register"username = "zhangdapeng1"data = {"username": username,"password": username,"re_password": username,}resp = req.post(target_url, json=data)self.assertApiSuccess(resp)# 添加角色target_url = f"{self.base_url}/role"rolename = "testrole"data = {"name": rolename,"nickname": rolename,}resp = req.post(target_url, json=data)self.assertApiSuccess(resp)# 获取用户idtarget_url = f"{self.base_url}/user"resp = req.get(target_url)data = self.assertApiSuccess(resp)users = data.get("data")self.assertTrue(isinstance(users, list))user_id = Nonefor user in users:if user.get("username") == username:user_id = user.get("id")breakself.assertIsNotNone(user_id)# 获取角色idtarget_url = f"{self.base_url}/role"resp = req.get(target_url)data = self.assertApiSuccess(resp)roles = data.get("data")self.assertTrue(isinstance(roles, list))roleid = Nonefor role in roles:if role.get("name") == rolename:roleid = role.get("id")breakself.assertIsNotNone(roleid)# 给用户绑定角色target_url = f"{self.base_url}/user/{user_id}/role"resp = req.post(target_url, json={"ids": [roleid]})self.assertApiSuccess(resp)# 删除用户target_url = f"{self.base_url}/user/{user_id}"resp = req.delete(target_url)self.assertApiSuccess(resp)# 删除角色target_url = f"{self.base_url}/role/{roleid}"resp = req.delete(target_url)self.assertApiSuccess(resp)# 批量解绑用户关联的所有角色target_url = f"{self.base_url}/user/{user_id}/role"resp = req.delete(target_url)self.assertApiSuccess(resp)

第二步:补充剩余的测试步骤

import unittest
import reqclass TestUserGetAuths(unittest.TestCase):def assertApiSuccess(self, resp):"""断言API接口的响应是成功的"""self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data["code"])self.assertEqual(True, data["status"])return data@classmethoddef setUpClass(cls):cls.base_url = "http://127.0.0.1:8888/auth"def test_user_get_auths(self):"""测试批量绑定角色"""# 添加用户target_url = f"{self.base_url}/user/register"username = "zhangdapeng1"data = {"username": username,"password": username,"re_password": username,}resp = req.post(target_url, json=data)self.assertApiSuccess(resp)# 添加角色target_url = f"{self.base_url}/role"rolename = "testrole"data = {"name": rolename,"nickname": rolename,}resp = req.post(target_url, json=data)self.assertApiSuccess(resp)# 获取用户idtarget_url = f"{self.base_url}/user"resp = req.get(target_url)data = self.assertApiSuccess(resp)users = data.get("data")self.assertTrue(isinstance(users, list))user_id = Nonefor user in users:if user.get("username") == username:user_id = user.get("id")breakself.assertIsNotNone(user_id)# 获取角色idtarget_url = f"{self.base_url}/role"resp = req.get(target_url)data = self.assertApiSuccess(resp)roles = data.get("data")self.assertTrue(isinstance(roles, list))roleid = Nonefor role in roles:if role.get("name") == rolename:roleid = role.get("id")breakself.assertIsNotNone(roleid)# 给用户绑定角色target_url = f"{self.base_url}/user/{user_id}/role"resp = req.post(target_url, json={"ids": [roleid]})self.assertApiSuccess(resp)# 添加3个权限target_url = f"{self.base_url}/auth"authname1, authname2, authname3 = "testauth1", "testauth2", "testauth3"authnames = [authname1, authname2, authname3]for authname in authnames:data = {"name": authname,"nickname": authname,}resp = req.post(target_url, json=data)self.assertApiSuccess(resp)# 查询权限IDtarget_url = f"{self.base_url}/auth"resp = req.get(target_url)data = self.assertApiSuccess(resp)auths = data.get("data")self.assertTrue(isinstance(auths, list))authid1, authid2, authid3 = None, None, Nonefor auth in auths:if auth.get("name") == authname1:authid1 = auth.get("id")elif auth.get("name") == authname2:authid2 = auth.get("id")elif auth.get("name") == authname3:authid3 = auth.get("id")self.assertIsNotNone(authid1)self.assertIsNotNone(authid2)self.assertIsNotNone(authid3)# 绑定角色和权限关系,给角色绑定2个权限target_url = f"{self.base_url}/role/{roleid}/auth"resp = req.post(target_url, json={"ids": [authid1, authid2]})self.assertApiSuccess(resp)# 询用户绑定的所有权限target_url = f"{self.base_url}/user/{user_id}/auth"resp = req.get(target_url)data = self.assertApiSuccess(resp)auths = data.get("data")self.assertTrue(isinstance(auths, list))self.assertTrue(len(auths) == 2)# 删除用户target_url = f"{self.base_url}/user/{user_id}"resp = req.delete(target_url)self.assertApiSuccess(resp)# 删除角色target_url = f"{self.base_url}/role/{roleid}"resp = req.delete(target_url)self.assertApiSuccess(resp)# 删除权限for authid in [authid1, authid2, authid3]:target_url = f"{self.base_url}/auth/{authid}"resp = req.delete(target_url)self.assertApiSuccess(resp)# 批量解绑用户关联的所有角色target_url = f"{self.base_url}/user/{user_id}/role"resp = req.delete(target_url)self.assertApiSuccess(resp)# 解绑角色的所有权限target_url = f"{self.base_url}/role/{roleid}/auth"resp = req.delete(target_url)self.assertApiSuccess(resp)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源【汇总】

开源【汇总】 前言版权推荐开源【汇总】最后 前言 先占个位 2024-6-21 21:29:33 以下内容源自《【创作模板】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://jsss-1.blog.csdn.net 禁止其他平台发…

华为海思CPU解读

安全可靠CPU测评结果(华为海思篇) 中国信息安全测评中心于2024年5月20日发布安全可靠测评结果公告(2024年第1号),公布依据《安全可靠测评工作指南(试行)》的测评结果,自发布起有效期…

可视化数据科学平台在信贷领域应用系列七:自动机器学习(下篇)

在当今金融科技迅速发展的时代,自动机器学习(AutoML)逐步成为了信贷风控领域的重要工具。随着大数据和人工智能技术的进步以及信贷风险环境的快速变化,传统人工建模模式的时效性已经难以应对复杂多变的挑战。自动机器学习框架将数…

海外版coze前端代码助手

定位 解决前端同事的开发问题 参数配置 测试 支持 最屌的大模型及语音播报。 体验地址 海外版前端代码助手 需要魔法才能体验油

【快乐星球game】

编写游戏程序代码是一个复杂的过程,涉及到游戏设计、编程、图形设计、音效制作等多个方面。以下是一个非常简化的示例,用于展示如何开始编写一个基本的游戏程序。我们将使用Python语言和一个名为Pygame的库来创建一个简单的游戏。 首先,确保你…

2024.6最最新版MySQL数据库安装(保姆级教程,不懂你捶我)

1.MySQL数据库下载 1.打开MySQL官网 如下页面 2.下翻网页到最底部,找到Download,点击第一个MySQL Community Server 3.选择自己需要的版本以及系统的MySQL: 4.跳转页面会有一个登录/注册页面,这里我们不鸟他,直接开始下载 2.MySQL数据库安装 1.双击我们刚刚下载的安装包 2.勾…

编码RNA Terc-53和透明质酸受体Hmmr可调节小鼠的衰老

近期,厦门大学王耿教授团队在Protein & Cell(IF21.1)上发表题为“Noncoding RNA Terc-53 and hyaluronan receptor Hmmr regulate ageing in mice.”的研究。研究团队构建了一系列Terc-53小鼠模型,发现Terc-53小鼠表现出与年龄…

艾尔登法环攻略教程 教你怎么达成怎么进入DLC的前置条件

《艾尔登法环》是一款黑暗幻想风开放世界角色扮演动作游戏,该游戏让玩家走进辽阔的场景与地下迷宫探索未知,挑战困难重重的险境,同时体验登场角色之间的利害关系谱成的群像剧。其广阔的开放世界、深邃的剧情探索、极具挑战性的战斗系统&#…

stable diffusion 模型融合

【抛砖引玉】GhostMixV2.0的制作过程及关于Checkpoint模型融合的一点经验 - 知乎大家好,我是Ghost_Shell,也是GhostMix的作者。本来想写一篇文章整体介绍一下模型,一些你们可能没察觉到,但我非常固执的理念,也算是模型的特性。结果发现写太长了,就分开两部分,第一部分是…

关于Notebook环境的安装记录

这是Windows下的,由于自己用的miniconda,所以很多都是自己手动搞的。 1. 首先执行conda install jupyter notebook,它能创建一个jupyter notebook的快捷方式(当然你也可以自己创建这个快捷方式)。 2. 但是不习惯no…

JExcel API使用笔记

JExcel API使用笔记 JExcel是一个开源的支持excel的java类库,广泛利用其api来生成excel报表 API基本使用 1.创建excel文件 workbook Workbook.createWorkbook(file);//传入file文件2.创建sheet页 WritableSheet sheet workbook.createSheet("记录表&quo…

【C++ | 重载运算符】一文弄懂C++运算符重载,怎样声明、定义运算符,重载为友元函数

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-21 2…

银河麒麟V10安装docker和docker-compose

1. 说明 系统镜像使用的是Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso如果是在VMware中安装这个系统,需选择Ubuntu,如果选Centos会有问题。 尝试使用在线方式安装docker,报了很多错误,比较麻烦,建议使用离…

slam移动机器人预测n秒后的里程数据

slam移动机器人预测n秒后的里程数据 为了实现这个功能,需要完成以下几个步骤: 订阅/odom话题并获取当前和上一时刻的里程计数据。计算两次里程计数据之间的位置和角度的偏移量。计算时间间隔dt。使用运动模型计算当前的速度vx, vy, vth。预测3秒后的位置和角度。将预测的位置…

C/C++ 简单的输入输出测试用例

在实际开发中经常会遇到简单调试接口的场景,需要从键盘输入一个字符,响应相应操作,整体逻辑就是 1.获取键盘输入 2.执行操作 3.再次等待获取键盘输入 虽然上述步骤极其容易但是总归是需要时间去拉一个demo,下面给出demo 用例,便于大家修改测试 #include <iostream>…

Flask中获取HTTPS请求的代理IP的原始IP地址

在Flask中获取HTTPS请求的代理IP的原始IP地址&#xff0c;你可以使用X-Forwarded-For HTTP头。这个头可能包含多个IP地址&#xff0c;其中第一个通常是原始的客户端IP。 以下是一个Flask示例代码&#xff0c;展示了如何获取原始的客户端IP地址&#xff1a; from flask import…

生成式AI和LLM如何应用

承认自己是普通人&#xff0c;我们只要会用就行了。 没有Machine Learning&#xff0c;也没有Deep Learning&#xff0c;让95%的普通码农都会用大模型&#xff0c;至于底层原理&#xff0c;就让那5%的精英去学吧。 这是“Generative AI with Large Language Models”课程的学…

xss初识(xss-lab)

XSS跨站脚本 XSS漏洞概述 XSS被称为跨站脚本攻击&#xff08;Cross-site scripting&#xff09;&#xff0c;由于和CSS&#xff08;Cascading Style Sheets&#xff09; 重名&#xff0c;所以改为XSS。 XSS主要基于javascript语言完成恶意的攻击行为&#xff0c;因为javascri…

前端代码打包教程

一、 首先解压并进入源码包中&#xff0c;源码文件是下载的完整版安装包的 view/ 目录下,平台后台是 admin.zip ,商户后台是 mer.zip , H5/公众号/小程序是 uniapp.zip ,2.0级以上版本还有客服的源码包&#xff1b; 二、 打包&#xff0c;移动端和后台的打包方式不同 平台后台…

PyTorch(一)模型训练过程

PyTorch&#xff08;一&#xff09;模型训练过程 #c 总结 实践总结 该实践从「数据处理」开始到最后利用训练好的「模型」预测&#xff0c;感受到了整个模型的训练过程。其中也有部分知识点&#xff0c;例如定义神经网络&#xff0c;只是初步的模仿&#xff0c;有一个比较浅的…