| | |
| | | |
| | | class TodoServiceTest { |
| | | @Test |
| | | void onlyOwnerCanReadHandleAndRemoveEvenWhenNamesMatch() throws Exception { |
| | | void onlyOwnerCanReadCompleteAndRemoveEvenWhenNamesMatch() throws Exception { |
| | | var database = new JdbcDataSource(); |
| | | database.setURL("jdbc:h2:mem:todo_" + UUID.randomUUID() + ";MODE=MySQL;DB_CLOSE_DELAY=-1"); |
| | | var jdbc = new JdbcTemplate(database); |
| | |
| | | assertEquals(id, service.list(2).get(0).id()); |
| | | assertEquals(2, service.owners().size()); |
| | | assertThrows(ServiceException.class, () -> service.create("事项", 3, 1, "创建人")); |
| | | assertThrows(ServiceException.class, () -> service.handle(id, 1, "管理员或创建人不可越权")); |
| | | assertThrows(ServiceException.class, () -> service.completeTodo(id, 1, "管理员或创建人不可越权")); |
| | | assertThrows(ServiceException.class, () -> service.remove(id, 1)); |
| | | assertThrows(ServiceException.class, () -> service.handle(id, 2, " ")); |
| | | service.handle(id, 2, "已完成"); |
| | | assertThrows(ServiceException.class, () -> service.completeTodo(id, 2, " ")); |
| | | service.completeTodo(id, 2, "已完成"); |
| | | var reopened = new TodoService(database).list(2).get(0); |
| | | assertEquals("已处理", reopened.status()); |
| | | assertEquals("已完成", reopened.handleRemark()); |
| | | assertThrows(ServiceException.class, () -> service.handle(id, 2, "再次处理")); |
| | | assertThrows(ServiceException.class, () -> service.completeTodo(id, 2, "再次处理")); |
| | | service.remove(id, 2); |
| | | assertTrue(service.list(2).isEmpty()); |
| | | } |