实现 DataPermissionRuleFactoryImpl,并增加相关单测
parent
f9b15fe70d
commit
b0855cc626
@ -0,0 +1,66 @@
|
|||||||
|
package cn.iocoder.yudao.framework.datapermission.core.aop;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link DataPermissionContextHolder} 的单元测试
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
class DataPermissionContextHolderTest {
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() {
|
||||||
|
DataPermissionContextHolder.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGet() {
|
||||||
|
// mock 方法
|
||||||
|
DataPermission dataPermission01 = mock(DataPermission.class);
|
||||||
|
DataPermissionContextHolder.add(dataPermission01);
|
||||||
|
DataPermission dataPermission02 = mock(DataPermission.class);
|
||||||
|
DataPermissionContextHolder.add(dataPermission02);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
DataPermission result = DataPermissionContextHolder.get();
|
||||||
|
// 断言
|
||||||
|
assertSame(result, dataPermission02);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPush() {
|
||||||
|
// 调用
|
||||||
|
DataPermission dataPermission01 = mock(DataPermission.class);
|
||||||
|
DataPermissionContextHolder.add(dataPermission01);
|
||||||
|
DataPermission dataPermission02 = mock(DataPermission.class);
|
||||||
|
DataPermissionContextHolder.add(dataPermission02);
|
||||||
|
// 断言
|
||||||
|
DataPermission first = DataPermissionContextHolder.getAll().get(0);
|
||||||
|
DataPermission second = DataPermissionContextHolder.getAll().get(1);
|
||||||
|
assertSame(dataPermission01, first);
|
||||||
|
assertSame(dataPermission02, second);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRemove() {
|
||||||
|
// mock 方法
|
||||||
|
DataPermission dataPermission01 = mock(DataPermission.class);
|
||||||
|
DataPermissionContextHolder.add(dataPermission01);
|
||||||
|
DataPermission dataPermission02 = mock(DataPermission.class);
|
||||||
|
DataPermissionContextHolder.add(dataPermission02);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
DataPermission result = DataPermissionContextHolder.remove();
|
||||||
|
// 断言
|
||||||
|
assertSame(result, dataPermission02);
|
||||||
|
assertEquals(1, DataPermissionContextHolder.getAll().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,145 @@
|
|||||||
|
package cn.iocoder.yudao.framework.datapermission.core.rule;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
||||||
|
import cn.iocoder.yudao.framework.datapermission.core.aop.DataPermissionContextHolder;
|
||||||
|
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
||||||
|
import net.sf.jsqlparser.expression.Alias;
|
||||||
|
import net.sf.jsqlparser.expression.Expression;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Spy;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link DataPermissionRuleFactoryImpl} 单元测试
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
class DataPermissionRuleFactoryImplTest extends BaseMockitoUnitTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private DataPermissionRuleFactoryImpl dataPermissionRuleFactory;
|
||||||
|
|
||||||
|
@Spy
|
||||||
|
private List<DataPermissionRule> rules = Arrays.asList(new DataPermissionRule01(),
|
||||||
|
new DataPermissionRule02());
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() {
|
||||||
|
DataPermissionContextHolder.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetDataPermissionRule_02() {
|
||||||
|
// 准备参数
|
||||||
|
String mappedStatementId = randomString();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<DataPermissionRule> result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId);
|
||||||
|
// 断言
|
||||||
|
assertSame(rules, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetDataPermissionRule_03() {
|
||||||
|
// 准备参数
|
||||||
|
String mappedStatementId = randomString();
|
||||||
|
// mock 方法
|
||||||
|
DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass03.class, DataPermission.class));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<DataPermissionRule> result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId);
|
||||||
|
// 断言
|
||||||
|
assertTrue(result.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetDataPermissionRule_04() {
|
||||||
|
// 准备参数
|
||||||
|
String mappedStatementId = randomString();
|
||||||
|
// mock 方法
|
||||||
|
DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass04.class, DataPermission.class));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<DataPermissionRule> result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, result.size());
|
||||||
|
assertEquals(DataPermissionRule01.class, result.get(0).getClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetDataPermissionRule_05() {
|
||||||
|
// 准备参数
|
||||||
|
String mappedStatementId = randomString();
|
||||||
|
// mock 方法
|
||||||
|
DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass05.class, DataPermission.class));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<DataPermissionRule> result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, result.size());
|
||||||
|
assertEquals(DataPermissionRule02.class, result.get(0).getClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetDataPermissionRule_06() {
|
||||||
|
// 准备参数
|
||||||
|
String mappedStatementId = randomString();
|
||||||
|
// mock 方法
|
||||||
|
DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass06.class, DataPermission.class));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<DataPermissionRule> result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId);
|
||||||
|
// 断言
|
||||||
|
assertSame(rules, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DataPermission(enable = false)
|
||||||
|
static class TestClass03 {}
|
||||||
|
|
||||||
|
@DataPermission(includeRules = DataPermissionRule01.class)
|
||||||
|
static class TestClass04 {}
|
||||||
|
|
||||||
|
@DataPermission(excludeRules = DataPermissionRule01.class)
|
||||||
|
static class TestClass05 {}
|
||||||
|
|
||||||
|
@DataPermission
|
||||||
|
static class TestClass06 {}
|
||||||
|
|
||||||
|
static class DataPermissionRule01 implements DataPermissionRule {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<String> getTableNames() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Expression getExpression(String tableName, Alias tableAlias) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static class DataPermissionRule02 implements DataPermissionRule {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<String> getTableNames() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Expression getExpression(String tableName, Alias tableAlias) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue