权限检查方法单元测试示例 - 使用 H2 数据库模拟数据
"@Override\npublic Boolean permissionCheck(String url) {\n\n\t\tif (!checkEnable){\n\t\t\treturn true;\n\t\t}\n\n\t\tString userId = Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication())\n\t\t\t\t.map(Authentication::getName).orElse(null);\n\t\t/\n\t\t * 默认与web权限保持一致, 若有其他配置 则拥有额外的API权限\n\t\t */\n\n\t\t//获取页面web权限\n\t\tList@RunWith(SpringRunner.class)和@SpringBootTest注解,以启用Spring Boot上下文和依赖注入。\n\n\t然后,可以使用@Autowired注解注入permissionMapper和permissionService,并使用@MockBean注解模拟SecurityContextHolder和Authentication对象。\n\n\t接下来,可以编写测试方法来测试permissionCheck方法。在测试方法中,可以使用Mockito.when方法模拟权限相关的方法调用,并返回需要的结果。然后,调用permissionCheck方法并断言返回的结果是否与预期相符。\n\n\t以下是一个可能的测试示例:\n\n\tjava\n\t@RunWith(SpringRunner.class)\n\t@SpringBootTest\n\tpublic class PermissionServiceTest {\n\n\t\t@Autowired\n\t\tprivate PermissionMapper permissionMapper;\n\n\t\t@Autowired\n\t\tprivate PermissionService permissionService;\n\n\t\t@MockBean\n\t\tprivate SecurityContextHolder securityContextHolder;\n\n\t\t@MockBean\n\t\tprivate Authentication authentication;\n\n\t\t@Test\n\t\tpublic void testPermissionCheck() {\n\t\t\t// 模拟权限相关的方法调用并返回需要的结果\n\t\t\tMockito.when(permissionMapper.getPermissionOfUserByType(Mockito.anyString(), Mockito.eq(PermissionType.WEB_FUNC.getValue())))\n\t\t\t\t\t.thenReturn(Arrays.asList(new Permission("permission1"), new Permission("permission2")));\n\n\t\t\tMockito.when(permissionMapper.selectList(Mockito.any(QueryWrapper.class)))\n\t\t\t\t\t.thenReturn(Arrays.asList(new Permission("permission3"), new Permission("permission4")));\n\n\t\t\tMockito.when(permissionMapper.getPermissionOfUserByType(Mockito.anyString(), Mockito.eq(PermissionType.API.getValue())))\n\t\t\t\t\t.thenReturn(Arrays.asList(new Permission("permission5"), new Permission("permission6")));\n\n\t\t\t// 模拟请求地址\n\t\t\tString url = "/glaucus/device_alarm/current/v2/list";\n\n\t\t\t// 调用方法并断言返回的结果\n\t\t\tboolean result = permissionService.permissionCheck(url);\n\t\t\tassertTrue(result);\n\t\t}\n\t}\n\t\n\n\t在这个示例中,我们使用Mockito.when方法模拟了permissionMapper的方法调用,并返回了一些权限对象。然后,我们调用permissionCheck方法并断言返回的结果为true。请根据实际情况调整模拟的方法调用和断言的条件。
原文地址: https://www.cveoy.top/t/topic/pCQf 著作权归作者所有。请勿转载和采集!