Commit f9b15fe70d738d0896016312679278e5ea9bd5d0
1 parent
2334e177
1. 增加数据权限的自动配置 DataPermissionAutoConfiguration
2. 增加数据权限的 AOP DataPermissionAnnotationInterceptor 3. 重命名 DataPermissionDatabaseInterceptor
Showing
11 changed files
with
340 additions
and
15 deletions
yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/config/DataPermissionAutoConfiguration.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.datapermission.config; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.datapermission.core.aop.DataPermissionAnnotationAdvisor; | ||
| 4 | +import cn.iocoder.yudao.framework.datapermission.core.db.DataPermissionDatabaseInterceptor; | ||
| 5 | +import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule; | ||
| 6 | +import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRuleFactory; | ||
| 7 | +import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRuleFactoryImpl; | ||
| 8 | +import org.springframework.context.annotation.Bean; | ||
| 9 | +import org.springframework.context.annotation.Configuration; | ||
| 10 | + | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 13 | +@Configuration | ||
| 14 | +public class DataPermissionAutoConfiguration { | ||
| 15 | + | ||
| 16 | + @Bean | ||
| 17 | + public DataPermissionRuleFactory dataPermissionRuleFactory(List<DataPermissionRule> rules) { | ||
| 18 | + return new DataPermissionRuleFactoryImpl(rules); | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + @Bean | ||
| 22 | + public DataPermissionDatabaseInterceptor dataPermissionDatabaseInterceptor(List<DataPermissionRule> rules) { | ||
| 23 | + DataPermissionRuleFactory ruleFactory = dataPermissionRuleFactory(rules); | ||
| 24 | + return new DataPermissionDatabaseInterceptor(ruleFactory); | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + @Bean | ||
| 28 | + public DataPermissionAnnotationAdvisor dataPermissionAnnotationAdvisor() { | ||
| 29 | + return new DataPermissionAnnotationAdvisor(); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | +} |
yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.datapermission.core.aop; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; | ||
| 4 | +import lombok.EqualsAndHashCode; | ||
| 5 | +import lombok.Getter; | ||
| 6 | +import org.aopalliance.aop.Advice; | ||
| 7 | +import org.springframework.aop.Pointcut; | ||
| 8 | +import org.springframework.aop.support.AbstractPointcutAdvisor; | ||
| 9 | +import org.springframework.aop.support.ComposablePointcut; | ||
| 10 | +import org.springframework.aop.support.annotation.AnnotationMatchingPointcut; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * {@link cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission} 注解的 Advisor 实现类 | ||
| 14 | + * | ||
| 15 | + * @author 芋道源码 | ||
| 16 | + */ | ||
| 17 | +@Getter | ||
| 18 | +@EqualsAndHashCode(callSuper = true) | ||
| 19 | +public class DataPermissionAnnotationAdvisor extends AbstractPointcutAdvisor { | ||
| 20 | + | ||
| 21 | + private final Advice advice; | ||
| 22 | + | ||
| 23 | + private final Pointcut pointcut; | ||
| 24 | + | ||
| 25 | + public DataPermissionAnnotationAdvisor() { | ||
| 26 | + this.advice = new DataPermissionAnnotationInterceptor(); | ||
| 27 | + this.pointcut = this.buildPointcut(); | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + protected Pointcut buildPointcut() { | ||
| 31 | + Pointcut classPointcut = new AnnotationMatchingPointcut(DataPermission.class, true); | ||
| 32 | + Pointcut methodPointcut = new AnnotationMatchingPointcut(null, DataPermission.class, true); | ||
| 33 | + return new ComposablePointcut(classPointcut).union(methodPointcut); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | +} |
yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/aop/DataPermissionAnnotationInterceptor.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.datapermission.core.aop; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; | ||
| 4 | +import lombok.Getter; | ||
| 5 | +import org.aopalliance.intercept.MethodInterceptor; | ||
| 6 | +import org.aopalliance.intercept.MethodInvocation; | ||
| 7 | +import org.springframework.core.MethodClassKey; | ||
| 8 | +import org.springframework.core.annotation.AnnotationUtils; | ||
| 9 | + | ||
| 10 | +import java.lang.reflect.Method; | ||
| 11 | +import java.util.Map; | ||
| 12 | +import java.util.concurrent.ConcurrentHashMap; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * {@link DataPermission} 注解的拦截器 | ||
| 16 | + * 1. 在执行方法前,将 @DataPermission 注解入栈 | ||
| 17 | + * 2. 在执行方法后,将 @DataPermission 注解出栈 | ||
| 18 | + * | ||
| 19 | + * @author 芋道源码 | ||
| 20 | + */ | ||
| 21 | +@DataPermission // 该注解,用于 {@link DATA_PERMISSION_NULL} 的空对象 | ||
| 22 | +public class DataPermissionAnnotationInterceptor implements MethodInterceptor { | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * DataPermission 空对象,用于方法无 {@link DataPermission} 注解时,使用 DATA_PERMISSION_NULL 进行占位 | ||
| 26 | + */ | ||
| 27 | + static final DataPermission DATA_PERMISSION_NULL = DataPermissionAnnotationInterceptor.class.getAnnotation(DataPermission.class); | ||
| 28 | + | ||
| 29 | + @Getter | ||
| 30 | + private final Map<MethodClassKey, DataPermission> dataPermissionCache = new ConcurrentHashMap<>(); | ||
| 31 | + | ||
| 32 | + @Override | ||
| 33 | + public Object invoke(MethodInvocation methodInvocation) throws Throwable { | ||
| 34 | + // 入栈 | ||
| 35 | + DataPermission dataPermission = this.findAnnotation(methodInvocation); | ||
| 36 | + if (dataPermission != null) { | ||
| 37 | + DataPermissionContextHolder.push(dataPermission); | ||
| 38 | + } | ||
| 39 | + try { | ||
| 40 | + // 执行逻辑 | ||
| 41 | + return methodInvocation.proceed(); | ||
| 42 | + } finally { | ||
| 43 | + // 出栈 | ||
| 44 | + if (dataPermission != null) { | ||
| 45 | + DataPermissionContextHolder.poll(); | ||
| 46 | + } | ||
| 47 | + } | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + private DataPermission findAnnotation(MethodInvocation methodInvocation) { | ||
| 51 | + // 1. 从缓存中获取 | ||
| 52 | + Method method = methodInvocation.getMethod(); | ||
| 53 | + Object targetObject = methodInvocation.getThis(); | ||
| 54 | + Class<?> clazz = targetObject != null ? targetObject.getClass() : method.getDeclaringClass(); | ||
| 55 | + MethodClassKey methodClassKey = new MethodClassKey(method, clazz); | ||
| 56 | + DataPermission dataPermission = dataPermissionCache.get(methodClassKey); | ||
| 57 | + if (dataPermission != null) { | ||
| 58 | + return dataPermission != DATA_PERMISSION_NULL ? dataPermission : null; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + // 2.1 从方法中获取 | ||
| 62 | + dataPermission = AnnotationUtils.findAnnotation(method, DataPermission.class); | ||
| 63 | + // 2.2 从类上获取 | ||
| 64 | + if (dataPermission == null) { | ||
| 65 | + dataPermission = AnnotationUtils.findAnnotation(clazz, DataPermission.class); | ||
| 66 | + } | ||
| 67 | + // 2.3 添加到缓存中 | ||
| 68 | + dataPermissionCache.put(methodClassKey, dataPermission != null ? dataPermission : DATA_PERMISSION_NULL); | ||
| 69 | + return dataPermission; | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | +} |
yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/aop/DataPermissionContextHolder.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.datapermission.core.aop; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; | ||
| 4 | +import com.alibaba.ttl.TransmittableThreadLocal; | ||
| 5 | + | ||
| 6 | +import java.util.ArrayDeque; | ||
| 7 | +import java.util.Deque; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * {@link DataPermission} 注解的 Context 上下文 | ||
| 11 | + * | ||
| 12 | + * @author 芋道源码 | ||
| 13 | + */ | ||
| 14 | +public class DataPermissionContextHolder { | ||
| 15 | + | ||
| 16 | + private static final ThreadLocal<Deque<DataPermission>> DATA_PERMISSIONS = | ||
| 17 | + TransmittableThreadLocal.withInitial(ArrayDeque::new); | ||
| 18 | + | ||
| 19 | + /** | ||
| 20 | + * 获得当前的 DataPermission 注解 | ||
| 21 | + * | ||
| 22 | + * @return DataPermission 注解 | ||
| 23 | + */ | ||
| 24 | + public static DataPermission peek() { | ||
| 25 | + return DATA_PERMISSIONS.get().remove(); | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 入栈 DataPermission 注解 | ||
| 30 | + * | ||
| 31 | + * @param dataPermission DataPermission 注解 | ||
| 32 | + */ | ||
| 33 | + public static void push(DataPermission dataPermission) { | ||
| 34 | + DATA_PERMISSIONS.get().push(dataPermission); | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + /** | ||
| 38 | + * 出栈 DataPermission 注解 | ||
| 39 | + * | ||
| 40 | + * @return DataPermission 注解 | ||
| 41 | + */ | ||
| 42 | + public static DataPermission poll() { | ||
| 43 | + DataPermission dataPermission = DATA_PERMISSIONS.get().poll(); | ||
| 44 | + // 无元素时,清空 ThreadLocal | ||
| 45 | + if (dataPermission == null) { | ||
| 46 | + DATA_PERMISSIONS.remove(); | ||
| 47 | + } | ||
| 48 | + return dataPermission; | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | +} |
yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/interceptor/DataPermissionInterceptor.java renamed to yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/db/DataPermissionDatabaseInterceptor.java
| 1 | -package cn.iocoder.yudao.framework.datapermission.core.interceptor; | 1 | +package cn.iocoder.yudao.framework.datapermission.core.db; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; | 4 | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; |
| @@ -45,7 +45,7 @@ import java.util.concurrent.ConcurrentHashMap; | @@ -45,7 +45,7 @@ import java.util.concurrent.ConcurrentHashMap; | ||
| 45 | * @author 芋道源码 | 45 | * @author 芋道源码 |
| 46 | */ | 46 | */ |
| 47 | @RequiredArgsConstructor | 47 | @RequiredArgsConstructor |
| 48 | -public class DataPermissionInterceptor extends JsqlParserSupport implements InnerInterceptor { | 48 | +public class DataPermissionDatabaseInterceptor extends JsqlParserSupport implements InnerInterceptor { |
| 49 | 49 | ||
| 50 | private final DataPermissionRuleFactory ruleFactory; | 50 | private final DataPermissionRuleFactory ruleFactory; |
| 51 | 51 |
yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/package-info.java deleted
| 1 | -package cn.iocoder.yudao.framework.datapermission.core; |
yudao-framework/yudao-spring-boot-starter-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/DataPermissionRuleFactoryImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.datapermission.core.rule; | ||
| 2 | + | ||
| 3 | +import lombok.RequiredArgsConstructor; | ||
| 4 | + | ||
| 5 | +import java.util.List; | ||
| 6 | + | ||
| 7 | +@RequiredArgsConstructor | ||
| 8 | +public class DataPermissionRuleFactoryImpl implements DataPermissionRuleFactory { | ||
| 9 | + | ||
| 10 | + /** | ||
| 11 | + * 数据权限规则数组 | ||
| 12 | + */ | ||
| 13 | + private final List<DataPermissionRule> rules; | ||
| 14 | + | ||
| 15 | + @Override | ||
| 16 | + public List<DataPermissionRule> getDataPermissionRules() { | ||
| 17 | + return rules; | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + @Override | ||
| 21 | + public List<DataPermissionRule> getDataPermissionRule(String mappedStatementId) { | ||
| 22 | + return null; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | +} |
yudao-framework/yudao-spring-boot-starter-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/aop/DataPermissionAnnotationInterceptorTest.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.datapermission.core.aop; | ||
| 2 | + | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 4 | +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; | ||
| 5 | +import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; | ||
| 6 | +import org.aopalliance.intercept.MethodInvocation; | ||
| 7 | +import org.junit.jupiter.api.BeforeEach; | ||
| 8 | +import org.junit.jupiter.api.Test; | ||
| 9 | +import org.mockito.InjectMocks; | ||
| 10 | +import org.mockito.Mock; | ||
| 11 | + | ||
| 12 | +import java.lang.reflect.Method; | ||
| 13 | + | ||
| 14 | +import static org.junit.jupiter.api.Assertions.*; | ||
| 15 | +import static org.mockito.Mockito.when; | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * {@link DataPermissionAnnotationInterceptor} 的单元测试 | ||
| 19 | + * | ||
| 20 | + * @author 芋道源码 | ||
| 21 | + */ | ||
| 22 | +public class DataPermissionAnnotationInterceptorTest extends BaseMockitoUnitTest { | ||
| 23 | + | ||
| 24 | + @InjectMocks | ||
| 25 | + private DataPermissionAnnotationInterceptor interceptor; | ||
| 26 | + | ||
| 27 | + @Mock | ||
| 28 | + private MethodInvocation methodInvocation; | ||
| 29 | + | ||
| 30 | + @BeforeEach | ||
| 31 | + public void setUp() { | ||
| 32 | + interceptor.getDataPermissionCache().clear(); | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + @Test // 无 @DataPermission 注解 | ||
| 36 | + public void testInvoke_none() throws Throwable { | ||
| 37 | + // 参数 | ||
| 38 | + mockMethodInvocation(TestNone.class); | ||
| 39 | + | ||
| 40 | + // 调用 | ||
| 41 | + Object result = interceptor.invoke(methodInvocation); | ||
| 42 | + // 断言 | ||
| 43 | + assertEquals("none", result); | ||
| 44 | + assertEquals(1, interceptor.getDataPermissionCache().size()); | ||
| 45 | + assertTrue(CollUtil.getFirst(interceptor.getDataPermissionCache().values()).enable()); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + @Test // 在 Method 上有 @DataPermission 注解 | ||
| 49 | + public void testInvoke_method() throws Throwable { | ||
| 50 | + // 参数 | ||
| 51 | + mockMethodInvocation(TestMethod.class); | ||
| 52 | + | ||
| 53 | + // 调用 | ||
| 54 | + Object result = interceptor.invoke(methodInvocation); | ||
| 55 | + // 断言 | ||
| 56 | + assertEquals("method", result); | ||
| 57 | + assertEquals(1, interceptor.getDataPermissionCache().size()); | ||
| 58 | + assertFalse(CollUtil.getFirst(interceptor.getDataPermissionCache().values()).enable()); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + @Test // 在 Class 上有 @DataPermission 注解 | ||
| 62 | + public void testInvoke_class() throws Throwable { | ||
| 63 | + // 参数 | ||
| 64 | + mockMethodInvocation(TestClass.class); | ||
| 65 | + | ||
| 66 | + // 调用 | ||
| 67 | + Object result = interceptor.invoke(methodInvocation); | ||
| 68 | + // 断言 | ||
| 69 | + assertEquals("class", result); | ||
| 70 | + assertEquals(1, interceptor.getDataPermissionCache().size()); | ||
| 71 | + assertFalse(CollUtil.getFirst(interceptor.getDataPermissionCache().values()).enable()); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + private void mockMethodInvocation(Class<?> clazz) throws Throwable { | ||
| 75 | + Object targetObject = clazz.newInstance(); | ||
| 76 | + Method method = targetObject.getClass().getMethod("echo"); | ||
| 77 | + when(methodInvocation.getThis()).thenReturn(targetObject); | ||
| 78 | + when(methodInvocation.getMethod()).thenReturn(method); | ||
| 79 | + when(methodInvocation.proceed()).then(invocationOnMock -> method.invoke(targetObject)); | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + static class TestMethod { | ||
| 83 | + | ||
| 84 | + @DataPermission(enable = false) | ||
| 85 | + public String echo() { | ||
| 86 | + return "method"; | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + @DataPermission(enable = false) | ||
| 92 | + static class TestClass { | ||
| 93 | + | ||
| 94 | + public String echo() { | ||
| 95 | + return "class"; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + static class TestNone { | ||
| 101 | + | ||
| 102 | + public String echo() { | ||
| 103 | + return "none"; | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | +} |
yudao-framework/yudao-spring-boot-starter-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/interceptor/DataPermissionInterceptorTest.java renamed to yudao-framework/yudao-spring-boot-starter-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest.java
| 1 | -package cn.iocoder.yudao.framework.datapermission.core.interceptor; | 1 | +package cn.iocoder.yudao.framework.datapermission.core.db; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; | 3 | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; |
| 4 | import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule; | 4 | import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule; |
| @@ -29,17 +29,17 @@ import static org.junit.jupiter.api.Assertions.*; | @@ -29,17 +29,17 @@ import static org.junit.jupiter.api.Assertions.*; | ||
| 29 | import static org.mockito.Mockito.*; | 29 | import static org.mockito.Mockito.*; |
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| 32 | - * {@link DataPermissionInterceptor} 的单元测试 | ||
| 33 | - * 主要测试 {@link DataPermissionInterceptor#beforePrepare(StatementHandler, Connection, Integer)} | ||
| 34 | - * 和 {@link DataPermissionInterceptor#beforeUpdate(Executor, MappedStatement, Object)} | 32 | + * {@link DataPermissionDatabaseInterceptor} 的单元测试 |
| 33 | + * 主要测试 {@link DataPermissionDatabaseInterceptor#beforePrepare(StatementHandler, Connection, Integer)} | ||
| 34 | + * 和 {@link DataPermissionDatabaseInterceptor#beforeUpdate(Executor, MappedStatement, Object)} | ||
| 35 | * 以及在这个过程中,ContextHolder 和 MappedStatementCache | 35 | * 以及在这个过程中,ContextHolder 和 MappedStatementCache |
| 36 | * | 36 | * |
| 37 | * @author 芋道源码 | 37 | * @author 芋道源码 |
| 38 | */ | 38 | */ |
| 39 | -public class DataPermissionInterceptorTest extends BaseMockitoUnitTest { | 39 | +public class DataPermissionDatabaseInterceptorTest extends BaseMockitoUnitTest { |
| 40 | 40 | ||
| 41 | @InjectMocks | 41 | @InjectMocks |
| 42 | - private DataPermissionInterceptor interceptor; | 42 | + private DataPermissionDatabaseInterceptor interceptor; |
| 43 | 43 | ||
| 44 | @Mock | 44 | @Mock |
| 45 | private DataPermissionRuleFactory ruleFactory; | 45 | private DataPermissionRuleFactory ruleFactory; |
| @@ -47,7 +47,7 @@ public class DataPermissionInterceptorTest extends BaseMockitoUnitTest { | @@ -47,7 +47,7 @@ public class DataPermissionInterceptorTest extends BaseMockitoUnitTest { | ||
| 47 | @BeforeEach | 47 | @BeforeEach |
| 48 | public void setUp() { | 48 | public void setUp() { |
| 49 | // 清理上下文 | 49 | // 清理上下文 |
| 50 | - DataPermissionInterceptor.ContextHolder.clear(); | 50 | + DataPermissionDatabaseInterceptor.ContextHolder.clear(); |
| 51 | // 清空缓存 | 51 | // 清空缓存 |
| 52 | interceptor.getMappedStatementCache().clear(); | 52 | interceptor.getMappedStatementCache().clear(); |
| 53 | } | 53 | } |
yudao-framework/yudao-spring-boot-starter-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/interceptor/DataPermissionInterceptorTest2.java renamed to yudao-framework/yudao-spring-boot-starter-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest2.java
| 1 | -package cn.iocoder.yudao.framework.datapermission.core.interceptor; | 1 | +package cn.iocoder.yudao.framework.datapermission.core.db; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule; | 3 | import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule; |
| 4 | import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRuleFactory; | 4 | import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRuleFactory; |
| @@ -23,16 +23,16 @@ import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; | @@ -23,16 +23,16 @@ import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; | ||
| 23 | import static org.junit.jupiter.api.Assertions.assertEquals; | 23 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 24 | 24 | ||
| 25 | /** | 25 | /** |
| 26 | - * {@link DataPermissionInterceptor} 的单元测试 | 26 | + * {@link DataPermissionDatabaseInterceptor} 的单元测试 |
| 27 | * 主要复用了 MyBatis Plus 的 TenantLineInnerInterceptorTest 的单元测试 | 27 | * 主要复用了 MyBatis Plus 的 TenantLineInnerInterceptorTest 的单元测试 |
| 28 | * 不过它的单元测试不是很规范,考虑到是复用的,所以暂时不进行修改~ | 28 | * 不过它的单元测试不是很规范,考虑到是复用的,所以暂时不进行修改~ |
| 29 | * | 29 | * |
| 30 | * @author 芋道源码 | 30 | * @author 芋道源码 |
| 31 | */ | 31 | */ |
| 32 | -public class DataPermissionInterceptorTest2 extends BaseMockitoUnitTest { | 32 | +public class DataPermissionDatabaseInterceptorTest2 extends BaseMockitoUnitTest { |
| 33 | 33 | ||
| 34 | @InjectMocks | 34 | @InjectMocks |
| 35 | - private DataPermissionInterceptor interceptor; | 35 | + private DataPermissionDatabaseInterceptor interceptor; |
| 36 | 36 | ||
| 37 | @Mock | 37 | @Mock |
| 38 | private DataPermissionRuleFactory ruleFactory; | 38 | private DataPermissionRuleFactory ruleFactory; |
| @@ -78,7 +78,7 @@ public class DataPermissionInterceptorTest2 extends BaseMockitoUnitTest { | @@ -78,7 +78,7 @@ public class DataPermissionInterceptorTest2 extends BaseMockitoUnitTest { | ||
| 78 | 78 | ||
| 79 | }; | 79 | }; |
| 80 | // 设置到上下文,保证 | 80 | // 设置到上下文,保证 |
| 81 | - DataPermissionInterceptor.ContextHolder.init(Arrays.asList(tenantRule, deptRule)); | 81 | + DataPermissionDatabaseInterceptor.ContextHolder.init(Arrays.asList(tenantRule, deptRule)); |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | @Test | 84 | @Test |
yudao-framework/yudao-spring-boot-starter-data-permission/src/test/resources/META-INF/spring.factories
0 → 100644