/src/test/java/syscon/arbutus/product/services/approval/contract/ejb/IT.java

https://gitlab.com/yuping.shang/ArbutusService · Java · 389 lines · 297 code · 80 blank · 12 comment · 44 complexity · 41a3cc14db96d4c50ba0a3f4c5af19c6 MD5 · raw file

  1. package syscon.arbutus.product.services.approval.contract.ejb;
  2. import org.apache.log4j.Logger;
  3. import org.jboss.security.client.SecurityClient;
  4. import org.jboss.security.client.SecurityClientFactory;
  5. import org.testng.annotations.AfterClass;
  6. import org.testng.annotations.AfterMethod;
  7. import org.testng.annotations.BeforeClass;
  8. import org.testng.annotations.Test;
  9. import syscon.arbutus.product.services.approval.contract.dto.*;
  10. import syscon.arbutus.product.services.approval.contract.dto.EntityType;
  11. import syscon.arbutus.product.services.approval.contract.interfaces.ApprovalService;
  12. import syscon.arbutus.product.services.common.BaseIT;
  13. import syscon.arbutus.product.services.common.ModuleConfig;
  14. import syscon.arbutus.product.services.core.exception.ArbutusOptimisticLockException;
  15. import syscon.arbutus.product.services.vine.gov.niem.niem.niem_core._2.*;
  16. import java.util.AbstractList;
  17. import java.util.ArrayList;
  18. import java.util.Date;
  19. import java.util.List;
  20. @ModuleConfig
  21. public class IT extends BaseIT {
  22. private static Logger log = Logger.getLogger(IT.class);
  23. private ApprovalService approvalService;
  24. @AfterMethod
  25. public void afterMethod() {
  26. }
  27. @BeforeClass
  28. public void beforeClass() {
  29. log.info("beforeClass Begin - JNDI lookup");
  30. approvalService = (ApprovalService) JNDILookUp(this.getClass(), ApprovalService.class);
  31. uc = super.initUserContext();
  32. SecurityClient client;
  33. try {
  34. client = SecurityClientFactory.getSecurityClient();
  35. client.setSimple("devtest", "devtest"); // nice regular service user
  36. client.login();
  37. } catch (Exception e) {
  38. e.printStackTrace();
  39. }
  40. //init();
  41. }
  42. @AfterClass
  43. public void afterTest() {
  44. }
  45. public void init() {
  46. approvalService.deleteAllConfiguration(uc);
  47. approvalService.deleteAllEntityInstances(uc);
  48. }
  49. @Test
  50. public void createEntity() {
  51. EntityType entityType = new EntityType("A", "Desc", "B", "C", "D", "E");
  52. entityType = approvalService.createEntity(uc, entityType);
  53. assert (entityType != null);
  54. assert (entityType.getVersion() == 0L);
  55. }
  56. @Test
  57. void createProcess() {
  58. ProcessType processType = new ProcessType("A", "AND");
  59. processType = approvalService.createProcess(uc, processType);
  60. assert (processType != null);
  61. assert (processType.getVersion() != null);
  62. }
  63. @Test
  64. void createReviewTask() {
  65. ReviewTaskType reviewTaskType = new ReviewTaskType("A", 1, "HOUR", 1000, "HOUR", 1000);
  66. reviewTaskType = approvalService.createReviewTask(uc, reviewTaskType);
  67. assert (reviewTaskType != null);
  68. assert (reviewTaskType.getVersion() != null);
  69. }
  70. @Test
  71. public void createEntityInstance() {
  72. EntityInstanceType entityInstanceType = new EntityInstanceType("A", 1L);
  73. entityInstanceType = approvalService.createEntityInstance(uc, entityInstanceType);
  74. assert (entityInstanceType != null);
  75. assert (entityInstanceType.getVersion() == 0L);
  76. }
  77. @Test
  78. public void createReview() {
  79. ReviewType reviewType = new ReviewType("A", 1L);
  80. reviewType = approvalService.createReview(uc, reviewType);
  81. assert (reviewType != null);
  82. assert (reviewType.getReviewId() != null);
  83. assert (reviewType.getVersion() == 0L);
  84. }
  85. @Test
  86. public void updateEntity() {
  87. EntityType entityType = new EntityType("A", "Desc", "B", "C", "D", "E");
  88. entityType = approvalService.createEntity(uc, entityType);
  89. //
  90. entityType.setApprovalRefSet("F");
  91. EntityType updated1 = approvalService.updateEntity(uc, entityType);
  92. assert (entityType.getVersion() != updated1.getVersion());
  93. //
  94. boolean locked = false;
  95. try {
  96. entityType.setApprovalRefSet("G");
  97. EntityType updated2 = approvalService.updateEntity(uc, entityType);
  98. } catch (ArbutusOptimisticLockException ex) {
  99. locked = true;
  100. }
  101. assert (locked);
  102. }
  103. @Test
  104. public void updateEntityWithoutLocking() {
  105. EntityType entityType = new EntityType("A", "Desc", "B", "C", "D", "E");
  106. entityType = approvalService.createEntity(uc, entityType);
  107. //
  108. entityType.setApprovalRefSet("F");
  109. EntityType updated1 = approvalService.forceUpdateEntity(uc, entityType);
  110. assert (entityType.getVersion() != updated1.getVersion());
  111. entityType.setApprovalRefSet("G");
  112. EntityType updated2 = approvalService.forceUpdateEntity(uc, entityType);
  113. assert (updated2.getVersion() != updated1.getVersion());
  114. }
  115. @Test
  116. void updateProcess() {
  117. ProcessType processType = new ProcessType("A", "AND");
  118. processType = approvalService.createProcess(uc, processType);
  119. //
  120. processType.setProcessOrchestration("OR");
  121. ProcessType updated1 = approvalService.updateProcess(uc, processType);
  122. assert (processType.getVersion() != updated1.getVersion());
  123. //
  124. boolean locked = false;
  125. try {
  126. processType.setProcessOrchestration("AND");
  127. ProcessType updated2 = approvalService.updateProcess(uc, processType);
  128. assert (updated2.getVersion() != updated1.getVersion());
  129. } catch (ArbutusOptimisticLockException ex) {
  130. locked = true;
  131. }
  132. assert (locked);
  133. }
  134. @Test
  135. void updateProcessWithoutLocking() {
  136. ProcessType processType = new ProcessType("A", "AND");
  137. processType = approvalService.createProcess(uc, processType);
  138. //
  139. processType.setProcessOrchestration("OR");
  140. ProcessType updated1 = approvalService.forceUpdateProcess(uc, processType);
  141. assert (processType.getVersion() != updated1.getVersion());
  142. //
  143. processType.setProcessOrchestration("AND");
  144. ProcessType updated2 = approvalService.forceUpdateProcess(uc, processType);
  145. assert (updated2.getVersion() != updated1.getVersion());
  146. }
  147. @Test
  148. public void updateEntityInstance() {
  149. EntityInstanceType entityInstanceType = new EntityInstanceType("A", 1L);
  150. entityInstanceType = approvalService.createEntityInstance(uc, entityInstanceType);
  151. //
  152. entityInstanceType.setDecisionCode("R");
  153. EntityInstanceType updated1 = approvalService.updateEntityInstance(uc, entityInstanceType);
  154. assert (entityInstanceType.getVersion() != updated1.getVersion());
  155. //
  156. boolean locked = false;
  157. try {
  158. entityInstanceType.setDecisionCode("A");
  159. EntityInstanceType updated2 = approvalService.updateEntityInstance(uc, entityInstanceType);
  160. assert (updated2.getVersion() != updated1.getVersion());
  161. } catch (ArbutusOptimisticLockException ex) {
  162. locked = true;
  163. }
  164. assert (locked);
  165. }
  166. @Test
  167. public void updateEntityInstanceWithoutLocking() {
  168. EntityInstanceType entityInstanceType = new EntityInstanceType("A", 1L);
  169. entityInstanceType = approvalService.createEntityInstance(uc, entityInstanceType);
  170. //
  171. entityInstanceType.setDecisionCode("R");
  172. EntityInstanceType updated1 = approvalService.forceUpdateEntityInstance(uc, entityInstanceType);
  173. assert (entityInstanceType.getVersion() != updated1.getVersion());
  174. //
  175. entityInstanceType.setDecisionCode("A");
  176. EntityInstanceType updated2 = approvalService.forceUpdateEntityInstance(uc, entityInstanceType);
  177. assert (updated2.getVersion() != updated1.getVersion());
  178. }
  179. @Test
  180. public void getAllEntities() {
  181. EntityType entityType = new EntityType("A", "Desc", "B", "C", "D", "E");
  182. entityType = approvalService.createEntity(uc, entityType);
  183. entityType = new EntityType("B", "Desc", "B", "C", "D", "E");
  184. entityType = approvalService.createEntity(uc, entityType);
  185. List<EntityType> entityTypeList = approvalService.getAllEntities(uc);
  186. assert(entityTypeList != null && entityTypeList.size() == 2);
  187. }
  188. @Test
  189. public void getAllProcessesAndRoles() {
  190. ProcessType processType = new ProcessType("A", "AND");
  191. processType = approvalService.createProcess(uc, processType);
  192. processType = new ProcessType("B", "AND");
  193. processType = approvalService.createProcess(uc, processType);
  194. List<Long> roleIdList = new ArrayList<Long>();
  195. roleIdList.add(1L);
  196. approvalService.createProcessRoles(uc, "A", roleIdList);
  197. roleIdList.add(2L);
  198. approvalService.createProcessRoles(uc, "B", roleIdList);
  199. List<ProcessType> processTypeList = approvalService.getAllProcessesAndRoles(uc);
  200. assert(processTypeList != null && processTypeList.size() == 2);
  201. assert(processTypeList.get(1).getRoleTypeList().size() == 2);
  202. }
  203. @Test
  204. public void getAll() {
  205. ProcessType processType = new ProcessType("A", "AND");
  206. processType = approvalService.createProcess(uc, processType);
  207. processType = new ProcessType("B", "AND");
  208. processType = approvalService.createProcess(uc, processType);
  209. List<Long> roleIdList = new ArrayList<Long>();
  210. roleIdList.add(1L);
  211. approvalService.createProcessRoles(uc, "A", roleIdList);
  212. roleIdList.add(2L);
  213. approvalService.createProcessRoles(uc, "B", roleIdList);
  214. List<ProcessType> processTypeList = approvalService.getAllProcessesAndRoles(uc);
  215. assert(processTypeList != null && processTypeList.size() == 2);
  216. assert(processTypeList.get(1).getRoleTypeList().size() == 2);
  217. }
  218. @Test
  219. public void getProcessAndRoles() {
  220. ProcessType processType = new ProcessType("A", "AND");
  221. processType = approvalService.createProcess(uc, processType);
  222. processType = new ProcessType("B", "AND");
  223. processType = approvalService.createProcess(uc, processType);
  224. List<Long> roleIdList = new ArrayList<Long>();
  225. roleIdList.add(1L);
  226. approvalService.createProcessRoles(uc, "A", roleIdList);
  227. roleIdList.add(2L);
  228. approvalService.createProcessRoles(uc, "B", roleIdList);
  229. roleIdList.add(3L);
  230. approvalService.createProcessRoles(uc, "B", roleIdList);
  231. processType = approvalService.getProcessAndRoles(uc, "B");
  232. assert(processType.getRoleTypeList().size() == 3);
  233. }
  234. @Test
  235. public void getAllReviewTasks() {
  236. ReviewTaskType reviewTaskType = new ReviewTaskType("A", 1, "HOUR", 1000, "HOUR", 1000);
  237. reviewTaskType = approvalService.createReviewTask(uc, reviewTaskType);
  238. reviewTaskType = new ReviewTaskType("A", 2, "HOUR", 1000, "HOUR", 1000);
  239. reviewTaskType = approvalService.createReviewTask(uc, reviewTaskType);
  240. List<ReviewTaskType> reviewTaskTypeList = approvalService.getAllReviewTasksAndRoles(uc, "A");
  241. assert(reviewTaskTypeList != null && reviewTaskTypeList.size() == 2);
  242. }
  243. @Test
  244. public void updateProcessAndRoles() {
  245. ProcessType processType = new ProcessType("A", "AND");
  246. processType = approvalService.createProcess(uc, processType);
  247. List<Long> roleIdList = new ArrayList<Long>();
  248. roleIdList.add(1L);
  249. roleIdList.add(2L);
  250. approvalService.createProcessRoles(uc, "A", roleIdList);
  251. roleIdList = new ArrayList<Long>();
  252. roleIdList.add(3L);
  253. processType.setProcessOrchestration("OR");
  254. processType = approvalService.updateProcessAndRoles(uc, processType, roleIdList);
  255. processType = approvalService.getProcessAndRoles(uc, "A");
  256. assert("OR".equalsIgnoreCase(processType.getProcessOrchestration()));
  257. assert(processType.getRoleTypeList().size() == 1);
  258. }
  259. @Test
  260. public void updateReviewTaskAndRoles() {
  261. ReviewTaskType reviewTaskType = new ReviewTaskType("A", 1, "HOUR", 1000, "HOUR", 1000);
  262. reviewTaskType = approvalService.createReviewTask(uc, reviewTaskType);
  263. List<Long> roleIdList = new ArrayList<Long>();
  264. roleIdList.add(1L);
  265. roleIdList.add(2L);
  266. approvalService.createReviewTaskRoles(uc, reviewTaskType.getReviewTaskId(), roleIdList);
  267. roleIdList.add(3L);
  268. reviewTaskType.setReviewReminder(2000);
  269. reviewTaskType = approvalService.updateReviewTaskAndRoles(uc, reviewTaskType, roleIdList);
  270. assert(reviewTaskType.getReviewReminder() == 2000);
  271. assert(reviewTaskType.getRoleTypeList().size() == 3);
  272. }
  273. @Test
  274. public void deleteProcess() {
  275. ProcessType processType = new ProcessType("A", "AND");
  276. processType = approvalService.createProcess(uc, processType);
  277. List<Long> roleIdList = new ArrayList<Long>();
  278. roleIdList.add(1L);
  279. roleIdList.add(2L);
  280. approvalService.createProcessRoles(uc, "A", roleIdList);
  281. approvalService.deleteProcess(uc, "A");
  282. processType = approvalService.getProcessAndRoles(uc, "A");
  283. assert(processType == null);
  284. }
  285. @Test
  286. public void deleteReviewTask() {
  287. ReviewTaskType reviewTaskType = new ReviewTaskType("A", 1, "HOUR", 1000, "HOUR", 1000);
  288. reviewTaskType = approvalService.createReviewTask(uc, reviewTaskType);
  289. List<Long> roleIdList = new ArrayList<Long>();
  290. roleIdList.add(1L);
  291. roleIdList.add(2L);
  292. approvalService.createReviewTaskRoles(uc, reviewTaskType.getReviewTaskId(), roleIdList);
  293. approvalService.deleteReviewTask(uc, reviewTaskType.getReviewTaskId());
  294. reviewTaskType = approvalService.getReviewTaskAndRoles(uc, reviewTaskType.getReviewTaskId());
  295. assert(reviewTaskType == null);
  296. }
  297. @Test
  298. public void getAllReviews() {
  299. ReviewType reviewType = new ReviewType("A", 1L, null, null, null, null, 1L);
  300. reviewType = approvalService.createReview(uc, reviewType);
  301. reviewType = new ReviewType("A", 1L, null, null, null, null, 2L);
  302. reviewType = approvalService.createReview(uc, reviewType);
  303. reviewType = new ReviewType("A", 1L, null, null, null, null, -1L);
  304. reviewType = approvalService.createReview(uc, reviewType);
  305. List<ReviewType> reviewTypeList = approvalService.getAllReviews(uc, "A", 1L);
  306. assert (reviewTypeList != null);
  307. assert (reviewTypeList.size() == 2);
  308. }
  309. }