package com.jinhe.tss.um.module; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import com.jinhe.tss.component.support.test.TestUtil; import com.jinhe.tss.core.Config; import com.jinhe.tss.core.cachepool.proxy.profier.CGLIBProfiler; import com.jinhe.tss.um.TxSupportTest4UM; import com.jinhe.tss.um.UMConstants; import com.jinhe.tss.um.action.RoleAction; import com.jinhe.tss.um.action.StrategyAction; import com.jinhe.tss.um.entity.Group; import com.jinhe.tss.um.entity.User; import com.jinhe.tss.um.service.IRoleService; import com.jinhe.tss.um.service.IStrategyService; import com.jinhe.tss.um.service.IUserService; /** * 角色转授策略相关模块的单元测试 */ public class StrategyModuleTest extends TxSupportTest4UM { StrategyAction action; @Autowired IStrategyService service; @Autowired IRoleService roleService; @Autowired IUserService userService; public void setUp() throws Exception { super.setUp(); action = (StrategyAction) new CGLIBProfiler().getProxy(StrategyAction.class); action.setService(service); } public void testCRUD() { // 新建一个用户组 Group mainGroup = new Group(); mainGroup.setParentId(UMConstants.MAIN_GROUP_ID); mainGroup.setName("R_财务部"); mainGroup.setGroupType( Group.MAIN_GROUP_TYPE ); mainGroup.setApplicationId(Config.getAttribute(Config.APPLICATION_CODE)); groupService.createNewGroup(mainGroup , "", ""); log.debug(mainGroup); // 新建一个用户组子组 Group childGroup = new Group(); childGroup.setParentId(mainGroup.getId()); childGroup.setName("R_财务一部"); childGroup.setGroupType( mainGroup.getGroupType() ); childGroup.setApplicationId(mainGroup.getApplicationId()); groupService.createNewGroup(childGroup , "", ""); log.debug(childGroup); // 管理员直接在主组下新增用户 User mainUser = new User(); mainUser.setApplicationId(mainGroup.getApplicationId()); mainUser.setLoginName("R_JonKing"); mainUser.setUserName("R_JK"); mainUser.setPassword("123456"); mainUser.setGroupId(mainGroup.getId()); userService.createOrUpdateUserInfo(mainGroup.getId(), mainUser , "" + mainGroup.getId(), ""); log.debug(mainUser); // 新建角色 RoleAction roleAction = new RoleAction(); roleAction.setRoleService(roleService); roleAction.getRole().setIsGroup(0); roleAction.getRole().setName("R_办公室助理"); roleAction.getRole().setParentId(UMConstants.ROLE_ROOT_ID); roleAction.getRole().setStartDate(new Date()); Calendar calendar = new GregorianCalendar(); calendar.add(UMConstants.ROLE_LIFE_TYPE, UMConstants.ROLE_LIFE_TIME); roleAction.getRole().setEndDate(calendar.getTime()); roleAction.setRole2UserIds(""); roleAction.setRole2GroupIds(""); roleAction.saveRole(); Long roleId = roleAction.getRole().getId(); login(mainUser.getId(), mainUser.getLoginName()); // 更好登录用户,看其权限 printUserRoleMapping(mainUser.getId(), 1); // 默认只有一个匿名角色 // 开始测试转授策略模块的功能 action.setIsNew(1); action.getSubAuthorizeStrategyInfo(); action.getStrategy().setStartDate(new Date()); calendar = new GregorianCalendar(); calendar.add(UMConstants.STRATEGY_LIFE_TYPE, UMConstants.STRATEGY_LIFE_TIME); action.getStrategy().setEndDate(calendar.getTime()); action.getStrategy().setName("转授策略一"); action.setRule2GroupIds(mainGroup.getId() + "," + childGroup.getId()); action.setRule2RoleIds(roleId + ""); action.setRule2UserIds(mainUser.getId() + ""); action.saveSubAuthorizeStrategy(); Long strategyId = action.getStrategy().getId(); action.setIsNew(null); action.setStrategyId(strategyId); action.getSubAuthorizeStrategyInfo(); login(mainUser.getId(), mainUser.getLoginName()); // 更好登录用户,看其权限 printUserRoleMapping(mainUser.getId(), 2); // 匿名角色 + 转授所得角色 action.setDisabled(1); action.disable(); login(mainUser.getId(), mainUser.getLoginName()); // 更好登录用户,看其权限 printUserRoleMapping(mainUser.getId(), 1); // 匿名角色 (转授策略停用了) action.setDisabled(0); action.disable(); login(mainUser.getId(), mainUser.getLoginName()); // 更好登录用户,看其权限 printUserRoleMapping(mainUser.getId(), 2); // 匿名角色 + 转授所得角色(转授策略重新启用) action.getSubAuthorizeStrategys2Tree(); action.delete(); TestUtil.printEntity(super.permissionHelper, "RoleGroup"); TestUtil.printEntity(super.permissionHelper, "RoleUser"); login(mainUser.getId(), mainUser.getLoginName()); // 更好登录用户,看其权限 printUserRoleMapping(mainUser.getId(), 1); // 匿名角色 (转授策略删除了) action.getSubAuthorizeStrategys2Tree(); action.setGroupId(mainGroup.getId()); action.getUsersByGroupId(); } protected void printUserRoleMapping(Long userId, int count) { List<?> list = permissionHelper.getEntities("from RoleUserMapping where userId=?", userId); assertEquals(count, list.size()); log.debug("表【RoleUserMapping】的所有记录:"); for(Object temp : list) { log.debug(temp); } log.debug("\n"); } }