From 22c028c7df413bf86967e3a844706f0d7121a36d Mon Sep 17 00:00:00 2001 From: lidongy <1879087903@qq.com> Date: Mon, 29 Jun 2020 16:53:46 +0800 Subject: [PATCH] =?UTF-8?q?KERNEL-4414=20finekit=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fanruan/api/decision/AuthorityKit.java | 92 +++++++++++++++++++ .../fanruan/api/decision/user/UserKit.java | 12 ++- .../java/com/fanruan/api/util/DateKit.java | 13 ++- .../api/decision/AuthorityKitTest.java | 79 ++++++++++++++++ .../api/decision/user/UserKitTest.java | 39 ++++++++ .../com/fanruan/api/util/DateKitTest.java | 9 +- 6 files changed, 241 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/fanruan/api/decision/AuthorityKitTest.java create mode 100644 src/test/java/com/fanruan/api/decision/user/UserKitTest.java diff --git a/src/main/java/com/fanruan/api/decision/AuthorityKit.java b/src/main/java/com/fanruan/api/decision/AuthorityKit.java index 54ba641..38a6e64 100644 --- a/src/main/java/com/fanruan/api/decision/AuthorityKit.java +++ b/src/main/java/com/fanruan/api/decision/AuthorityKit.java @@ -1,5 +1,13 @@ package com.fanruan.api.decision; +import com.fr.decision.authority.AuthorityContext; +import com.fr.decision.authority.controller.CustomRoleController; +import com.fr.decision.authority.controller.DefaultAuthorityController; +import com.fr.decision.authority.controller.DepartmentController; +import com.fr.decision.authority.controller.PostController; +import com.fr.decision.authority.controller.UserController; +import com.fr.decision.config.FSConfig; + /** * @author richie * @version 10.0 @@ -8,4 +16,88 @@ package com.fanruan.api.decision; */ public class AuthorityKit { + /** + * 是否开启了分级权限 + * + * @return 开启返回true,关闭返回false + */ + public static boolean isGradeAuthority() { + return FSConfig.getInstance().getAuthorizeAttr().isGradeAuthority(); + } + + /** + * 是否开启了数据连接权限控制 + * + * @return 开启返回true,关闭返回false + */ + public static boolean isDataConnectionAuthority() { + return FSConfig.getInstance().getAuthorizeAttr().isDataConnectionAuthority(); + } + + /** + * 是否开启了目录编辑权限 + * + * @return 开启返回true,关闭返回false + */ + public static boolean isEditReportAuthority() { + return FSConfig.getInstance().getAuthorizeAttr().isEditReportAuthority(); + } + + /** + * 获取默认权限实体控制器 + * + * @return 权限实体控制器 + */ + public static DefaultAuthorityController getAuthorityController() { + return AuthorityContext.getInstance().getAuthorityController(); + } + + /** + * 获取扩展权限实体控制器 + * + * @param controllerInterface 权限数据记录的类对象 + * @return 权限实体控制器 + * @throws Exception 根据权限数据记录的类对象找不到对应的权限实体控制器则抛出此异常 + */ + public static T getAuthorityController(Class controllerInterface) throws Exception { + return AuthorityContext.getInstance().getAuthorityController(controllerInterface); + } + + /** + * 获取部门控制器 + * + * @return 部门控制器 + */ + public static DepartmentController getDepartmentController() { + return AuthorityContext.getInstance().getDepartmentController(); + } + + /** + * 获取职务控制器 + * + * @return 职务控制器 + */ + public static PostController getPostController() { + return AuthorityContext.getInstance().getPostController(); + } + + /** + * 获取自定义角色控制器 + * + * @return 自定义角色控制器 + */ + public static CustomRoleController getCustomRoleController() { + return AuthorityContext.getInstance().getCustomRoleController(); + } + + /** + * 获取用户控制器 + * + * @return 用户控制器 + */ + public static UserController getUserController() { + return AuthorityContext.getInstance().getUserController(); + } + + } diff --git a/src/main/java/com/fanruan/api/decision/user/UserKit.java b/src/main/java/com/fanruan/api/decision/user/UserKit.java index 6375a0e..67b50dd 100644 --- a/src/main/java/com/fanruan/api/decision/user/UserKit.java +++ b/src/main/java/com/fanruan/api/decision/user/UserKit.java @@ -72,7 +72,17 @@ public class UserKit { * @return 用户名数组 * @throws Exception 如果邮箱不存在则抛出此异常 */ - public static List getUserNamesFromEmail(String email) throws Exception { + public static List getUserNamesFromEmail(String email) throws Exception { return UserService.getInstance().getUserNamesFromEmail(email); } + + /** + * 获取超级管理角色下的用户ID列表 + * + * @return 用户ID列表 + * @throws Exception 异常 + */ + public static List getAdminUserIdList() throws Exception { + return UserService.getInstance().getAdminUserIdList(); + } } diff --git a/src/main/java/com/fanruan/api/util/DateKit.java b/src/main/java/com/fanruan/api/util/DateKit.java index 072e6e0..dc35714 100644 --- a/src/main/java/com/fanruan/api/util/DateKit.java +++ b/src/main/java/com/fanruan/api/util/DateKit.java @@ -8,11 +8,22 @@ public class DateKit { /** * 将字符串转化为日期 * - * @param str 字符串 + * @param str 字符串 * @param returnNull 转化失败的时候是否返回null * @return 将字符串转化为相应的日期值 */ public static Date string2Date(String str, boolean returnNull) { return DateUtils.string2Date(str, returnNull); } + + /** + * 取得某日期时间的特定表示格式的字符串 + * + * @param format 时间格式 + * @param date 某日期(Date) + * @return 某日期的字符串 + */ + public static String getDate2Str(String format, Date date) { + return DateUtils.getDate2Str(format, date); + } } diff --git a/src/test/java/com/fanruan/api/decision/AuthorityKitTest.java b/src/test/java/com/fanruan/api/decision/AuthorityKitTest.java new file mode 100644 index 0000000..2656fbf --- /dev/null +++ b/src/test/java/com/fanruan/api/decision/AuthorityKitTest.java @@ -0,0 +1,79 @@ +package com.fanruan.api.decision; + +import com.fr.decision.authority.AuthorityContext; +import com.fr.decision.authority.controller.ConnectionAuthorityController; +import com.fr.decision.authority.controller.CustomRoleController; +import com.fr.decision.authority.controller.DefaultAuthorityController; +import com.fr.decision.authority.controller.DepartmentController; +import com.fr.decision.authority.controller.PostController; +import com.fr.decision.authority.controller.UserController; +import com.fr.decision.authorize.AuthorizeAttr; +import com.fr.decision.config.FSConfig; +import org.easymock.EasyMock; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.easymock.PowerMock; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +/** + * @author lidongy + * @version 10.0 + * Created by lidongy on 2020/6/29 + */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({FSConfig.class, AuthorityContext.class}) +public class AuthorityKitTest { + + @Test + public void testIsAuthorizeAttrOpen() { + AuthorizeAttr authorizeAttr = EasyMock.createMock(AuthorizeAttr.class); + EasyMock.expect(authorizeAttr.isGradeAuthority()).andReturn(true).anyTimes(); + EasyMock.expect(authorizeAttr.isDataConnectionAuthority()).andReturn(true).anyTimes(); + EasyMock.expect(authorizeAttr.isEditReportAuthority()).andReturn(true).anyTimes(); + EasyMock.replay(authorizeAttr); + + FSConfig fsConfig = EasyMock.createMock(FSConfig.class); + EasyMock.expect(fsConfig.getAuthorizeAttr()).andReturn(authorizeAttr).anyTimes(); + EasyMock.replay(fsConfig); + + PowerMock.mockStatic(FSConfig.class); + EasyMock.expect(FSConfig.getInstance()).andReturn(fsConfig).anyTimes(); + PowerMock.replay(FSConfig.class); + + Assert.assertEquals(AuthorityKit.isGradeAuthority(), FSConfig.getInstance().getAuthorizeAttr().isGradeAuthority()); + Assert.assertEquals(AuthorityKit.isDataConnectionAuthority(), FSConfig.getInstance().getAuthorizeAttr().isDataConnectionAuthority()); + Assert.assertEquals(AuthorityKit.isEditReportAuthority(), FSConfig.getInstance().getAuthorizeAttr().isEditReportAuthority()); + } + + @Test + public void testGetController() throws Exception { + DefaultAuthorityController defaultAuthorityController = EasyMock.createMock(DefaultAuthorityController.class); + CustomRoleController customRoleController = EasyMock.createMock(CustomRoleController.class); + DepartmentController departmentController = EasyMock.createMock(DepartmentController.class); + PostController postController = EasyMock.createMock(PostController.class); + UserController userController = EasyMock.createMock(UserController.class); + ConnectionAuthorityController connectionAuthorityController = EasyMock.createMock(ConnectionAuthorityController.class); + + AuthorityContext authorityContext = EasyMock.createMock(AuthorityContext.class); + EasyMock.expect(authorityContext.getAuthorityController()).andReturn(defaultAuthorityController).anyTimes(); + EasyMock.expect(authorityContext.getCustomRoleController()).andReturn(customRoleController).anyTimes(); + EasyMock.expect(authorityContext.getDepartmentController()).andReturn(departmentController).anyTimes(); + EasyMock.expect(authorityContext.getPostController()).andReturn(postController).anyTimes(); + EasyMock.expect(authorityContext.getUserController()).andReturn(userController).anyTimes(); + EasyMock.expect(authorityContext.getAuthorityController(ConnectionAuthorityController.class)).andReturn(connectionAuthorityController).anyTimes(); + EasyMock.replay(authorityContext); + + PowerMock.mockStatic(AuthorityContext.class); + EasyMock.expect(AuthorityContext.getInstance()).andReturn(authorityContext).anyTimes(); + PowerMock.replay(AuthorityContext.class); + + Assert.assertEquals(AuthorityKit.getAuthorityController(), defaultAuthorityController); + Assert.assertEquals(AuthorityKit.getCustomRoleController(), customRoleController); + Assert.assertEquals(AuthorityKit.getDepartmentController(), departmentController); + Assert.assertEquals(AuthorityKit.getPostController(), postController); + Assert.assertEquals(AuthorityKit.getUserController(), userController); + Assert.assertEquals(AuthorityKit.getAuthorityController(ConnectionAuthorityController.class), connectionAuthorityController); + } +} diff --git a/src/test/java/com/fanruan/api/decision/user/UserKitTest.java b/src/test/java/com/fanruan/api/decision/user/UserKitTest.java new file mode 100644 index 0000000..696c520 --- /dev/null +++ b/src/test/java/com/fanruan/api/decision/user/UserKitTest.java @@ -0,0 +1,39 @@ +package com.fanruan.api.decision.user; + +import com.fr.decision.webservice.v10.user.UserService; +import org.easymock.EasyMock; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.easymock.PowerMock; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author lidongy + * @version 10.0 + * Created by lidongy on 2020/6/29 + */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({UserService.class}) +public class UserKitTest { + + @Test + public void testGetAdminUserIdList() throws Exception { + List adminUserIdList = new ArrayList<>(); + adminUserIdList.add("1"); + + UserService userService = EasyMock.createMock(UserService.class); + EasyMock.expect(userService.getAdminUserIdList()).andReturn(adminUserIdList); + EasyMock.replay(userService); + + PowerMock.mockStatic(UserService.class); + EasyMock.expect(UserService.getInstance()).andReturn(userService); + PowerMock.replay(UserService.class); + + Assert.assertEquals(UserKit.getAdminUserIdList(), adminUserIdList); + } +} diff --git a/src/test/java/com/fanruan/api/util/DateKitTest.java b/src/test/java/com/fanruan/api/util/DateKitTest.java index 31ae43c..58acb9c 100644 --- a/src/test/java/com/fanruan/api/util/DateKitTest.java +++ b/src/test/java/com/fanruan/api/util/DateKitTest.java @@ -3,16 +3,23 @@ package com.fanruan.api.util; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; + import org.junit.Assert; import org.junit.Test; public class DateKitTest { @Test - public void string2Date() throws Exception{ + public void string2Date() throws Exception { DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd"); Date myDate = dateFormat2.parse("2019-02-20"); Assert.assertEquals(DateKit.string2Date("2019-02-20", false), myDate); Assert.assertEquals(DateKit.string2Date("abcd", false), new Date()); Assert.assertEquals(DateKit.string2Date("abcd", true), null); } + + @Test + public void testGetDate2Str() throws Exception { + String date = DateKit.getDate2Str("yyyy-MM-dd", new Date(0)); + Assert.assertEquals(date, "1970-01-01"); + } }