PermissionService.java (编号:20110621A1130)

本文介绍了一个权限服务接口的设计,包括获取权限、分页显示权限信息、权限管理及有效性检查等功能。该接口采用Java实现,并利用PermissionBean对象进行参数传递。

 

package com.feast.blog.cms.controller; import com.feast.blog.cms.domain.CmsMessage; import com.feast.blog.cms.domain.CmsMessageLike; import com.feast.blog.cms.service.ICmsMessageService; import com.feast.blog.common.core.controller.BaseController; import com.feast.blog.common.core.domain.AjaxResult; import com.feast.blog.common.core.page.TableDataInfo; import com.feast.blog.common.utils.SecurityUtils; import com.feast.blog.framework.web.service.SysPermissionService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.test.context.support.WithMockUser; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.*; class CmsMessageControllerTest { @Mock private ICmsMessageService cmsMessageService; @Mock private SysPermissionService permissionService; @Mock private HttpServletResponse response; @InjectMocks private CmsMessageController cmsMessageController; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); // 模拟SecurityContext Authentication authentication = mock(Authentication.class); SecurityContext securityContext = mock(SecurityContext.class); when(securityContext.getAuthentication()).thenReturn(authentication); SecurityContextHolder.setContext(securityContext); } @Test void addMessage_WithParentIdNull_ShouldSuccess() { // 准备数据 CmsMessage message = new CmsMessage(); message.setParentId(null); when(cmsMessageService.insertCmsMessage(any())).thenReturn(1); // 执行测试 AjaxResult result = cmsMessageController.addMessage(message); // 验证结果 assertEquals(AjaxResult.success(), result); assertNull(message.getMainId()); verify(cmsMessageService).insertCmsMessage(message); } @Test void addMessage_WithParentHasMainId_ShouldSetCorrectMainId() { // 准备数据 CmsMessage parentMessage = new CmsMessage(); parentMessage.setId(1L); parentMessage.setMainId(100L); CmsMessage newMessage = new CmsMessage(); newMessage.setParentId(1L); when(cmsMessageService.selectCmsMessageById(1L)).thenReturn(parentMessage); when(cmsMessageService.insertCmsMessage(any())).thenReturn(1); // 执行测试 AjaxResult result = cmsMessageController.addMessage(newMessage); // 验证结果 assertEquals(AjaxResult.success(), result); assertEquals(100L, newMessage.getMainId()); verify(cmsMessageService).insertCmsMessage(newMessage); } @Test void addMessage_WithParentNoMainId_ShouldSetParentIdAsMainId() { // 准备数据 CmsMessage parentMessage = new CmsMessage(); parentMessage.setId(1L); parentMessage.setMainId(null); CmsMessage newMessage = new CmsMessage(); newMessage.setParentId(1L); when(cmsMessageService.selectCmsMessageById(1L)).thenReturn(parentMessage); when(cmsMessageService.insertCmsMessage(any())).thenReturn(1); // 执行测试 AjaxResult result = cmsMessageController.addMessage(newMessage); // 验证结果 assertEquals(AjaxResult.success(), result); assertEquals(1L, newMessage.getMainId()); verify(cmsMessageService).insertCmsMessage(newMessage); } @Test void addCmsMessageLike_ShouldSuccess() { // 准备数据 CmsMessageLike like = new CmsMessageLike(); when(cmsMessageService.addCmsMessageLike(any())).thenReturn(1); // 执行测试 AjaxResult result = cmsMessageController.addCmsMessageLike(like); // 验证结果 assertEquals(AjaxResult.success(), result); verify(cmsMessageService).addCmsMessageLike(like); } @Test void delCmsMessageLike_ShouldSuccess() { // 准备数据 CmsMessageLike like = new CmsMessageLike(); when(cmsMessageService.delCmsMessageLike(any())).thenReturn(1); // 执行测试 AjaxResult result = cmsMessageController.delCmsMessageLike(like); // 验证结果 assertEquals(AjaxResult.success(), result); verify(cmsMessageService).delCmsMessageLike(like); } @Test @WithMockUser(username = "admin", authorities = {"cms:message:export"}) void export_ShouldExportExcel() throws Exception { // 准备数据 CmsMessage message = new CmsMessage(); List<CmsMessage> list = Collections.singletonList(message); when(cmsMessageService.selectCmsMessageList(any())).thenReturn(list); // 执行测试 cmsMessageController.export(response, new CmsMessage()); // 验证结果 - 主要验证没有异常抛出 verify(cmsMessageService).selectCmsMessageList(any()); } @Test @WithMockUser(username = "admin", authorities = {"cms:message:query"}) void getInfo_ShouldReturnMessage() { // 准备数据 CmsMessage expectedMessage = new CmsMessage(); expectedMessage.setId(1L); when(cmsMessageService.selectCmsMessageById(1L)).thenReturn(expectedMessage); // 执行测试 AjaxResult result = cmsMessageController.getInfo(1L); // 验证结果 assertEquals(AjaxResult.success(expectedMessage), result); verify(cmsMessageService).selectCmsMessageById(1L); } @Test @WithMockUser(username = "admin", authorities = {"cms:message:add"}) void add_ShouldInsertMessage() { // 准备数据 CmsMessage message = new CmsMessage(); when(cmsMessageService.insertCmsMessage(any())).thenReturn(1); // 执行测试 AjaxResult result = cmsMessageController.add(message); // 验证结果 assertEquals(AjaxResult.success(), result); verify(cmsMessageService).insertCmsMessage(message); } @Test @WithMockUser(username = "admin", authorities = {"cms:message:edit"}) void edit_ShouldUpdateMessage() { // 准备数据 CmsMessage message = new CmsMessage(); message.setId(1L); when(cmsMessageService.updateCmsMessage(any())).thenReturn(1); // 执行测试 AjaxResult result = cmsMessageController.edit(message); // 验证结果 assertEquals(AjaxResult.success(), result); verify(cmsMessageService).updateCmsMessage(message); } @Test @WithMockUser(username = "admin", authorities = {"cms:message:remove"}) void remove_ShouldDeleteMessages() { // 准备数据 Long[] ids = {1L, 2L}; when(cmsMessageService.deleteCmsMessageByIds(ids)).thenReturn(ids.length); // 执行测试 AjaxResult result = cmsMessageController.remove(ids); // 验证结果 assertEquals(AjaxResult.success(), result); verify(cmsMessageService).deleteCmsMessageByIds(ids); } }根据我给的代码
06-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值