diff --git a/src/main/java/com/rebuild/server/service/bizz/privileges/SecurityManager.java b/src/main/java/com/rebuild/server/service/bizz/privileges/SecurityManager.java
index 1e7b330e7..2d6ae37a4 100644
--- a/src/main/java/com/rebuild/server/service/bizz/privileges/SecurityManager.java
+++ b/src/main/java/com/rebuild/server/service/bizz/privileges/SecurityManager.java
@@ -331,7 +331,7 @@ public class SecurityManager {
com.rebuild.server.service.bizz.privileges.User accessUser = theUserStore.getUser(user);
com.rebuild.server.service.bizz.privileges.User targetUser = theUserStore.getUser(targetUserId);
- Department accessUserDept = (Department) accessUser.getOwningDept();
+ Department accessUserDept = accessUser.getOwningDept();
if (BizzDepthEntry.LOCAL.equals(depth)) {
allowed = accessUserDept.equals(targetUser.getOwningDept());
@@ -346,7 +346,7 @@ public class SecurityManager {
return true;
}
- allowed = accessUserDept.isChildrenAll((Department) targetUser.getOwningDept());
+ allowed = accessUserDept.isChildrenAll(targetUser.getOwningDept());
if (!allowed) {
return allowedViaShare(user, target, action);
}
@@ -357,14 +357,14 @@ public class SecurityManager {
}
/**
- * 通过共享取得的操作权限
+ * 通过共享取得的操作权限(目前只共享了读取权限)
*
* @param user
* @param target
* @param action
* @return
*/
- private boolean allowedViaShare(ID user, ID target, Permission action) {
+ public boolean allowedViaShare(ID user, ID target, Permission action) {
// TODO 目前只共享了读取权限
// TODO 性能优化-缓存
@@ -372,7 +372,7 @@ public class SecurityManager {
if (action != BizzPermission.READ) {
return false;
}
-
+
Entity entity = MetadataHelper.getEntity(target.getEntityCode());
if (entity.getMasterEntity() != null) {
ID masterId = getMasterRecordId(target);
diff --git a/src/test/java/com/rebuild/server/TestSupport.java b/src/test/java/com/rebuild/server/TestSupport.java
index ddac65ba2..4c0c983f3 100644
--- a/src/test/java/com/rebuild/server/TestSupport.java
+++ b/src/test/java/com/rebuild/server/TestSupport.java
@@ -152,6 +152,8 @@ public class TestSupport {
}
/**
+ * 添加一条测试记录。注意调用前设置线程用户 {@link Application#getSessionStore()}
+ *
* @return
*/
protected static ID addRecordOfTestAllFields() {
@@ -159,12 +161,6 @@ public class TestSupport {
Entity test = MetadataHelper.getEntity(TEST_ENTITY);
Record record = EntityHelper.forNew(test.getEntityCode(), opUser);
record.setString("text", "TEXT-" + RandomUtils.nextLong());
- try {
- Application.getSessionStore().set(opUser);
- record = Application.getGeneralEntityService().create(record);
- return record.getPrimary();
- } finally {
- Application.getSessionStore().clean();
- }
+ return Application.getGeneralEntityService().create(record).getPrimary();
}
}
diff --git a/src/test/java/com/rebuild/server/business/datareport/DataReportGeneratorTest.java b/src/test/java/com/rebuild/server/business/datareport/DataReportGeneratorTest.java
index ac93b497b..7f502fb20 100644
--- a/src/test/java/com/rebuild/server/business/datareport/DataReportGeneratorTest.java
+++ b/src/test/java/com/rebuild/server/business/datareport/DataReportGeneratorTest.java
@@ -19,6 +19,7 @@ along with this program. If not, see .
package com.rebuild.server.business.datareport;
import cn.devezhao.persist4j.engine.ID;
+import com.rebuild.server.Application;
import com.rebuild.server.TestSupport;
import com.rebuild.server.service.bizz.UserService;
import org.junit.Test;
@@ -35,10 +36,16 @@ public class DataReportGeneratorTest extends TestSupport {
@Test
public void testGenerator() throws Exception {
File template = ResourceUtils.getFile("classpath:report-template.xlsx");
- ID record = addRecordOfTestAllFields();
- ReportGenerator generator = new ReportGenerator(template, record);
- generator.setUser(UserService.ADMIN_USER);
- File file = generator.generate();
- System.out.println(file);
+ try {
+ Application.getSessionStore().set(UserService.ADMIN_USER);
+
+ ID record = addRecordOfTestAllFields();
+ ReportGenerator generator = new ReportGenerator(template, record);
+ generator.setUser(UserService.ADMIN_USER);
+ File file = generator.generate();
+ System.out.println(file);
+ } finally {
+ Application.getSessionStore().clean();
+ }
}
}
diff --git a/src/test/java/com/rebuild/server/business/recyclebin/RecycleBeanTest.java b/src/test/java/com/rebuild/server/business/recyclebin/RecycleBeanTest.java
index 09f248bab..444de6f29 100644
--- a/src/test/java/com/rebuild/server/business/recyclebin/RecycleBeanTest.java
+++ b/src/test/java/com/rebuild/server/business/recyclebin/RecycleBeanTest.java
@@ -20,7 +20,9 @@ package com.rebuild.server.business.recyclebin;
import cn.devezhao.persist4j.engine.ID;
import com.alibaba.fastjson.JSON;
+import com.rebuild.server.Application;
import com.rebuild.server.TestSupport;
+import com.rebuild.server.service.bizz.UserService;
import org.junit.Test;
/**
@@ -31,8 +33,14 @@ public class RecycleBeanTest extends TestSupport {
@Test
public void serialize() {
- ID test = addRecordOfTestAllFields();
- JSON s = new RecycleBean(test).serialize();
- System.out.println(s);
+ try {
+ Application.getSessionStore().set(UserService.ADMIN_USER);
+
+ ID test = addRecordOfTestAllFields();
+ JSON s = new RecycleBean(test).serialize();
+ System.out.println(s);
+ } finally {
+ Application.getSessionStore().clean();
+ }
}
}
\ No newline at end of file
diff --git a/src/test/java/com/rebuild/server/business/recyclebin/RecycleRestoreTest.java b/src/test/java/com/rebuild/server/business/recyclebin/RecycleRestoreTest.java
index e66887151..9fc559eb7 100644
--- a/src/test/java/com/rebuild/server/business/recyclebin/RecycleRestoreTest.java
+++ b/src/test/java/com/rebuild/server/business/recyclebin/RecycleRestoreTest.java
@@ -33,18 +33,20 @@ public class RecycleRestoreTest extends TestSupport {
@Test
public void restore() {
- final ID test = addRecordOfTestAllFields();
-
- Application.getSessionStore().set(UserService.ADMIN_USER);
+ ID testId = null;
try {
- Application.getGeneralEntityService().delete(test);
+ Application.getSessionStore().set(UserService.ADMIN_USER);
+
+ testId = addRecordOfTestAllFields();
+ Application.getGeneralEntityService().delete(testId);
+
} finally {
Application.getSessionStore().clean();
}
Object[] recycle = Application.createQueryNoFilter(
"select recycleId from RecycleBin where recordId = ?")
- .setParameter(1, test)
+ .setParameter(1, testId)
.unique();
Assert.assertTrue(recycle != null);
diff --git a/src/test/java/com/rebuild/server/business/recyclebin/RecycleStoreTest.java b/src/test/java/com/rebuild/server/business/recyclebin/RecycleStoreTest.java
index 66b842412..8dad49d19 100644
--- a/src/test/java/com/rebuild/server/business/recyclebin/RecycleStoreTest.java
+++ b/src/test/java/com/rebuild/server/business/recyclebin/RecycleStoreTest.java
@@ -19,6 +19,7 @@ along with this program. If not, see .
package com.rebuild.server.business.recyclebin;
import cn.devezhao.persist4j.engine.ID;
+import com.rebuild.server.Application;
import com.rebuild.server.TestSupport;
import com.rebuild.server.service.bizz.UserService;
import org.junit.Test;
@@ -31,17 +32,23 @@ public class RecycleStoreTest extends TestSupport {
@Test
public void store() {
- ID test1 = addRecordOfTestAllFields();
- ID test2 = addRecordOfTestAllFields();
+ try {
+ Application.getSessionStore().set(UserService.ADMIN_USER);
- RecycleStore recycleStore = new RecycleStore(UserService.ADMIN_USER);
- recycleStore.add(test1);
- recycleStore.add(test2);
- recycleStore.removeLast();
+ ID test1 = addRecordOfTestAllFields();
+ ID test2 = addRecordOfTestAllFields();
- recycleStore.add(test2, test1);
+ RecycleStore recycleStore = new RecycleStore(UserService.ADMIN_USER);
+ recycleStore.add(test1);
+ recycleStore.add(test2);
+ recycleStore.removeLast();
- int s = recycleStore.store();
- System.out.println(s);
+ recycleStore.add(test2, test1);
+
+ int s = recycleStore.store();
+ System.out.println(s);
+ } finally {
+ Application.getSessionStore().clean();
+ }
}
}
\ No newline at end of file
diff --git a/src/test/java/com/rebuild/server/business/trigger/impl/AutoAssignTest.java b/src/test/java/com/rebuild/server/business/trigger/impl/AutoAssignTest.java
new file mode 100644
index 000000000..e861674c2
--- /dev/null
+++ b/src/test/java/com/rebuild/server/business/trigger/impl/AutoAssignTest.java
@@ -0,0 +1,65 @@
+/*
+rebuild - Building your business-systems freely.
+Copyright (C) 2019 devezhao
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package com.rebuild.server.business.trigger.impl;
+
+import cn.devezhao.persist4j.Record;
+import cn.devezhao.persist4j.engine.ID;
+import com.rebuild.server.Application;
+import com.rebuild.server.TestSupport;
+import com.rebuild.server.business.trigger.ActionType;
+import com.rebuild.server.business.trigger.TriggerWhen;
+import com.rebuild.server.metadata.EntityHelper;
+import com.rebuild.server.service.bizz.UserService;
+import com.rebuild.server.service.configuration.RobotTriggerConfigService;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author devezhao zhaofang123@gmail.com
+ * @since 2019/08/27
+ */
+public class AutoAssignTest extends TestSupport {
+
+ @Test
+ public void execute() throws Exception {
+ addExtTestEntities(false);
+ Application.getSessionStore().set(UserService.ADMIN_USER);
+
+ // 添加配置
+ Application.getSQLExecutor().execute("delete from robot_trigger_config where BELONG_ENTITY = '" + TEST_ENTITY + "'");
+
+ Record autoshareConfig = EntityHelper.forNew(EntityHelper.RobotTriggerConfig, UserService.SYSTEM_USER);
+ autoshareConfig.setString("belongEntity", TEST_ENTITY);
+ autoshareConfig.setInt("when", TriggerWhen.CREATE.getMaskValue());
+ autoshareConfig.setString("actionType", ActionType.AUTOASSIGN.name());
+ String content = "{cascades:null, assignRule:1, assignTo:['" + SIMPLE_USER.toLiteral() + "']}";
+ autoshareConfig.setString("actionContent", content);
+ Application.getBean(RobotTriggerConfigService.class).create(autoshareConfig);
+
+ // 测试执行
+ try {
+ ID testId = addRecordOfTestAllFields();
+ ID owningUser = Application.getRecordOwningCache().getOwningUser(testId);
+ Assert.assertTrue(SIMPLE_USER.equals(owningUser));
+ } finally {
+ Application.getBean(RobotTriggerConfigService.class).delete(autoshareConfig.getPrimary());
+ Application.getSessionStore().clean();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/rebuild/server/business/trigger/impl/AutoShareTest.java b/src/test/java/com/rebuild/server/business/trigger/impl/AutoShareTest.java
new file mode 100644
index 000000000..838256d82
--- /dev/null
+++ b/src/test/java/com/rebuild/server/business/trigger/impl/AutoShareTest.java
@@ -0,0 +1,66 @@
+/*
+rebuild - Building your business-systems freely.
+Copyright (C) 2019 devezhao
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package com.rebuild.server.business.trigger.impl;
+
+import cn.devezhao.bizz.privileges.impl.BizzPermission;
+import cn.devezhao.persist4j.Record;
+import cn.devezhao.persist4j.engine.ID;
+import com.rebuild.server.Application;
+import com.rebuild.server.TestSupport;
+import com.rebuild.server.business.trigger.ActionType;
+import com.rebuild.server.business.trigger.TriggerWhen;
+import com.rebuild.server.metadata.EntityHelper;
+import com.rebuild.server.service.bizz.UserService;
+import com.rebuild.server.service.configuration.RobotTriggerConfigService;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author devezhao zhaofang123@gmail.com
+ * @since 2019/08/27
+ */
+public class AutoShareTest extends TestSupport {
+
+ @Test
+ public void execute() throws Exception {
+ addExtTestEntities(false);
+ Application.getSessionStore().set(UserService.ADMIN_USER);
+
+ // 添加配置
+ Application.getSQLExecutor().execute("delete from robot_trigger_config where BELONG_ENTITY = '" + TEST_ENTITY + "'");
+
+ Record autoshareConfig = EntityHelper.forNew(EntityHelper.RobotTriggerConfig, UserService.SYSTEM_USER);
+ autoshareConfig.setString("belongEntity", TEST_ENTITY);
+ autoshareConfig.setInt("when", TriggerWhen.CREATE.getMaskValue());
+ autoshareConfig.setString("actionType", ActionType.AUTOSHARE.name());
+ String content = "{shareTo:['" + SIMPLE_USER.toLiteral() + "']}";
+ autoshareConfig.setString("actionContent", content);
+ Application.getBean(RobotTriggerConfigService.class).create(autoshareConfig);
+
+ // 测试执行
+ try {
+ ID testId = addRecordOfTestAllFields();
+ boolean allowed = Application.getSecurityManager().allowedViaShare(SIMPLE_USER, testId, BizzPermission.READ);
+ Assert.assertTrue(allowed);
+ } finally {
+ Application.getBean(RobotTriggerConfigService.class).delete(autoshareConfig.getPrimary());
+ Application.getSessionStore().clean();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/rebuild/server/business/trigger/FieldAggregationTest.java b/src/test/java/com/rebuild/server/business/trigger/impl/FieldAggregationTest.java
similarity index 98%
rename from src/test/java/com/rebuild/server/business/trigger/FieldAggregationTest.java
rename to src/test/java/com/rebuild/server/business/trigger/impl/FieldAggregationTest.java
index f6ef074d4..f3370966a 100644
--- a/src/test/java/com/rebuild/server/business/trigger/FieldAggregationTest.java
+++ b/src/test/java/com/rebuild/server/business/trigger/impl/FieldAggregationTest.java
@@ -16,10 +16,11 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-package com.rebuild.server.business.trigger;
-
-import org.junit.Test;
+package com.rebuild.server.business.trigger.impl;
+import cn.devezhao.persist4j.Entity;
+import cn.devezhao.persist4j.Record;
+import cn.devezhao.persist4j.engine.ID;
import com.rebuild.server.Application;
import com.rebuild.server.TestSupport;
import com.rebuild.server.business.trigger.ActionType;
@@ -30,10 +31,7 @@ import com.rebuild.server.metadata.EntityHelper;
import com.rebuild.server.metadata.MetadataHelper;
import com.rebuild.server.service.bizz.UserService;
import com.rebuild.server.service.configuration.RobotTriggerConfigService;
-
-import cn.devezhao.persist4j.Entity;
-import cn.devezhao.persist4j.Record;
-import cn.devezhao.persist4j.engine.ID;
+import org.junit.Test;
/**
* @author devezhao zhaofang123@gmail.com
diff --git a/src/test/java/com/rebuild/server/business/trigger/SendNotificationTest.java b/src/test/java/com/rebuild/server/business/trigger/impl/SendNotificationTest.java
similarity index 98%
rename from src/test/java/com/rebuild/server/business/trigger/SendNotificationTest.java
rename to src/test/java/com/rebuild/server/business/trigger/impl/SendNotificationTest.java
index b1af9d987..537dec894 100644
--- a/src/test/java/com/rebuild/server/business/trigger/SendNotificationTest.java
+++ b/src/test/java/com/rebuild/server/business/trigger/impl/SendNotificationTest.java
@@ -16,12 +16,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-package com.rebuild.server.business.trigger;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
+package com.rebuild.server.business.trigger.impl;
+import cn.devezhao.persist4j.Entity;
+import cn.devezhao.persist4j.Record;
import com.rebuild.server.Application;
import com.rebuild.server.TestSupport;
import com.rebuild.server.business.trigger.ActionType;
@@ -31,9 +29,9 @@ import com.rebuild.server.metadata.EntityHelper;
import com.rebuild.server.metadata.MetadataHelper;
import com.rebuild.server.service.bizz.UserService;
import com.rebuild.server.service.configuration.RobotTriggerConfigService;
+import org.junit.Test;
-import cn.devezhao.persist4j.Entity;
-import cn.devezhao.persist4j.Record;
+import static org.junit.Assert.assertEquals;
/**
* @author devezhao-mbp zhaofang123@gmail.com