TSK-1419: Null check for Service Level in classification service

This commit is contained in:
Joerg Heffner 2020-11-26 13:36:43 +01:00 committed by gitgoodjhe
parent bfa2245bd0
commit 6133b66059
14 changed files with 93 additions and 16 deletions

View File

@ -33,6 +33,7 @@ class CreateHistoryEventOnClassificationsCreationAccTest extends AbstractAccTest
Classification newClassification =
classificationService.newClassification("somekey", "DOMAIN_A", "TASK");
newClassification.setDescription("some description");
newClassification.setServiceLevel("P1D");
newClassification = classificationService.createClassification(newClassification);
List<ClassificationHistoryEvent> events =

View File

@ -421,7 +421,8 @@ public class ClassificationServiceImpl implements ClassificationService {
* Fill missing values and validate classification before saving the classification.
*
* @param classification the classification which will be verified.
* @throws InvalidArgumentException if the given classification has no key.
* @throws InvalidArgumentException if the given classification has no key, the service level is
* null, the type is not valid or the category for the provided type is invalid.
*/
private void initDefaultClassificationValues(ClassificationImpl classification)
throws InvalidArgumentException {
@ -442,7 +443,9 @@ public class ClassificationServiceImpl implements ClassificationService {
classification.setIsValidInDomain(true);
}
if (classification.getServiceLevel() != null && !"".equals(classification.getServiceLevel())) {
if (classification.getServiceLevel() == null) {
throw new InvalidArgumentException("Classification Service Level must not be null!");
} else if (!classification.getServiceLevel().isEmpty()) {
validateServiceLevel(classification.getServiceLevel());
}

View File

@ -30,9 +30,11 @@ class CreateClassificationAccTest extends AbstractAccTest {
@WithAccessId(user = "businessadmin")
@Test
void testCreateMasterClassification() throws Exception {
long amountOfClassificationsBefore = CLASSIFICATION_SERVICE.createClassificationQuery().count();
final long amountOfClassificationsBefore =
CLASSIFICATION_SERVICE.createClassificationQuery().count();
Classification classification = CLASSIFICATION_SERVICE.newClassification("Key0", "", "TASK");
classification.setIsValidInDomain(true);
classification.setServiceLevel("P1D");
classification = CLASSIFICATION_SERVICE.createClassification(classification);
// check only 1 created
@ -57,6 +59,7 @@ class CreateClassificationAccTest extends AbstractAccTest {
Classification classification =
CLASSIFICATION_SERVICE.newClassification("Key1", "DOMAIN_A", "TASK");
classification.setIsValidInDomain(true);
classification.setServiceLevel("P1D");
classification = CLASSIFICATION_SERVICE.createClassification(classification);
// Check returning one is the "original"
@ -98,12 +101,14 @@ class CreateClassificationAccTest extends AbstractAccTest {
@Test
void testCreateClassificationWithExistingMaster() throws Exception {
CLASSIFICATION_SERVICE.createClassification(
CLASSIFICATION_SERVICE.newClassification("Key0815", "", "TASK"));
Classification classification = CLASSIFICATION_SERVICE.newClassification("Key0815", "", "TASK");
classification.setServiceLevel("P1D");
CLASSIFICATION_SERVICE.createClassification(classification);
long amountOfClassificationsBefore = CLASSIFICATION_SERVICE.createClassificationQuery().count();
Classification expected =
CLASSIFICATION_SERVICE.newClassification("Key0815", "DOMAIN_B", "TASK");
expected.setServiceLevel("P1D");
Classification actual = CLASSIFICATION_SERVICE.createClassification(expected);
long amountOfClassificationsAfter = CLASSIFICATION_SERVICE.createClassificationQuery().count();
@ -116,13 +121,16 @@ class CreateClassificationAccTest extends AbstractAccTest {
@Test
void testCreateChildInDomainAndCopyInMaster() throws Exception {
Classification parent = CLASSIFICATION_SERVICE.newClassification("Key0816", "DOMAIN_A", "TASK");
parent.setServiceLevel("P1D");
Classification actualParent = CLASSIFICATION_SERVICE.createClassification(parent);
assertThat(actualParent).isNotNull();
long amountOfClassificationsBefore = CLASSIFICATION_SERVICE.createClassificationQuery().count();
final long amountOfClassificationsBefore =
CLASSIFICATION_SERVICE.createClassificationQuery().count();
Classification child = CLASSIFICATION_SERVICE.newClassification("Key0817", "DOMAIN_A", "TASK");
child.setParentId(actualParent.getId());
child.setParentKey(actualParent.getKey());
child.setServiceLevel("P1D");
Classification actualChild = CLASSIFICATION_SERVICE.createClassification(child);
long amountOfClassificationsAfter = CLASSIFICATION_SERVICE.createClassificationQuery().count();
@ -130,6 +138,33 @@ class CreateClassificationAccTest extends AbstractAccTest {
assertThat(actualChild).isNotNull();
}
@WithAccessId(user = "businessadmin")
@Test
void should_ThrowException_When_TryingToCreateClassificationWithMissingServiceLevel() {
Classification classification =
CLASSIFICATION_SERVICE.newClassification("someKey", "DOMAIN_A", "TASK");
assertThatThrownBy(() -> CLASSIFICATION_SERVICE.createClassification(classification))
.isInstanceOf(InvalidArgumentException.class);
}
@WithAccessId(user = "businessadmin")
@Test
void should_ThrowException_When_TryingToUpdateClassificationWithMissingServiceLevel()
throws Exception {
Classification classification =
CLASSIFICATION_SERVICE.newClassification("someKey2", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
Classification createdClassification =
CLASSIFICATION_SERVICE.createClassification(classification);
createdClassification.setServiceLevel(null);
assertThatThrownBy(() -> CLASSIFICATION_SERVICE.updateClassification(createdClassification))
.isInstanceOf(InvalidArgumentException.class);
}
@WithAccessId(user = "businessadmin")
@Test
void testCreateClassificationWithInvalidValues() {
@ -154,6 +189,7 @@ class CreateClassificationAccTest extends AbstractAccTest {
@Test
void testCreateClassificationAlreadyExisting() throws Exception {
Classification classification = CLASSIFICATION_SERVICE.newClassification("Key3", "", "TASK");
classification.setServiceLevel("P1D");
Classification classificationCreated =
CLASSIFICATION_SERVICE.createClassification(classification);
assertThatThrownBy(() -> CLASSIFICATION_SERVICE.createClassification(classificationCreated))

View File

@ -260,6 +260,7 @@ class UpdateClassificationAccTest extends AbstractAccTest {
Classification classification =
classificationService.newClassification("Key=0818", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
Classification created = classificationService.createClassification(classification);
created.setServiceLevel("");

View File

@ -113,9 +113,11 @@ class UpdateObjectsUseUtcTimeStampsAccTest extends AbstractAccTest {
@Test
void testTimestampsOnCreateMasterClassification() throws Exception {
ClassificationService classificationService = taskanaEngine.getClassificationService();
long amountOfClassificationsBefore = classificationService.createClassificationQuery().count();
final long amountOfClassificationsBefore =
classificationService.createClassificationQuery().count();
Classification classification = classificationService.newClassification("Key0", "", "TASK");
classification.setIsValidInDomain(true);
classification.setServiceLevel("P1D");
classification = classificationService.createClassification(classification);
// check only 1 created

View File

@ -52,11 +52,14 @@ class ClassificationServiceImplIntAutoCommitTest {
@Test
void testFindAllClassifications() throws Exception {
Classification classification0 = classificationService.newClassification("TEST1", "", "TASK");
classification0.setServiceLevel("P1D");
classificationService.createClassification(classification0);
Classification classification1 = classificationService.newClassification("TEST2", "", "TASK");
classification1.setServiceLevel("P1D");
classificationService.createClassification(classification1);
Classification classification2 = classificationService.newClassification("TEST3", "", "TASK");
classification2.setParentId(classification0.getId());
classification2.setServiceLevel("P1D");
classificationService.createClassification(classification2);
assertThat(classificationService.createClassificationQuery().list()).hasSize(2 + 1);
@ -68,6 +71,7 @@ class ClassificationServiceImplIntAutoCommitTest {
Classification classification =
classificationService.newClassification("TEST434", "DOMAIN_A", "TASK");
classification.setDescription("");
classification.setServiceLevel("P1D");
classification = classificationService.createClassification(classification);
classification.setDescription("TEST SOMETHING");
classificationService.updateClassification(classification);
@ -82,6 +86,7 @@ class ClassificationServiceImplIntAutoCommitTest {
void testInsertClassification() throws Exception {
Classification classification =
classificationService.newClassification("TEST1333", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
classificationService.createClassification(classification);
List<ClassificationSummary> list =
@ -98,6 +103,7 @@ class ClassificationServiceImplIntAutoCommitTest {
void testUpdateClassification() throws Exception {
Classification classification =
classificationService.newClassification("TEST32451", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
classification = classificationService.createClassification(classification);
classification.setDescription("description");
classification = classificationService.updateClassification(classification);
@ -119,10 +125,12 @@ class ClassificationServiceImplIntAutoCommitTest {
void testDefaultSettings() throws Exception {
Classification classification =
classificationService.newClassification("TEST7771", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
classification = classificationService.createClassification(classification);
Classification classification1 =
classificationService.newClassification("TEST1865", "DOMAIN_A", "TASK");
classification1.setServiceLevel("P1D");
classification1 = classificationService.createClassification(classification1);
classification1.setParentId(classification.getId());

View File

@ -70,6 +70,8 @@ class ClassificationServiceImplIntExplicitTest {
(ClassificationImpl) this.createNewClassificationWithUniqueKey("", "TASK");
expectedClassification.setKey(key);
expectedClassification.setDomain("DOMAIN_B");
expectedClassification.setServiceLevel("P1D");
classificationService.createClassification(expectedClassification);
connection.commit();
Classification actualClassification =
@ -106,11 +108,14 @@ class ClassificationServiceImplIntExplicitTest {
try (Connection connection = dataSource.getConnection()) {
taskanaEngine.setConnection(connection);
Classification classification0 = this.createNewClassificationWithUniqueKey("", "TASK");
classification0.setServiceLevel("P1D");
classificationService.createClassification(classification0);
Classification classification1 = this.createNewClassificationWithUniqueKey("", "TASK");
classification1.setServiceLevel("P1D");
classificationService.createClassification(classification1);
Classification classification2 = this.createNewClassificationWithUniqueKey("", "TASK");
classification2.setParentId(classification0.getId());
classification2.setServiceLevel("P1D");
classificationService.createClassification(classification2);
assertThat(classificationService.createClassificationQuery().list()).hasSize(2 + 1);
@ -124,6 +129,7 @@ class ClassificationServiceImplIntExplicitTest {
try (Connection connection = dataSource.getConnection()) {
taskanaEngine.setConnection(connection);
Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
connection.commit();
classification = classificationService.createClassification(classification);
@ -144,6 +150,7 @@ class ClassificationServiceImplIntExplicitTest {
try (Connection connection = dataSource.getConnection()) {
taskanaEngine.setConnection(connection);
Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
classificationService.createClassification(classification);
List<ClassificationSummary> list =
classificationService
@ -161,6 +168,7 @@ class ClassificationServiceImplIntExplicitTest {
taskanaEngine.setConnection(connection);
Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK");
classification.setDescription("");
classification.setServiceLevel("P1D");
classification = classificationService.createClassification(classification);
classification.setDescription("description");
classification = classificationService.updateClassification(classification);
@ -190,10 +198,12 @@ class ClassificationServiceImplIntExplicitTest {
try (Connection connection = dataSource.getConnection()) {
taskanaEngine.setConnection(connection);
Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
classification = classificationService.createClassification(classification);
Classification classification1 =
this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK");
classification1.setServiceLevel("P1D");
classification1 = classificationService.createClassification(classification1);
classification1.setParentId(classification.getId());
classification1 = classificationService.updateClassification(classification1);

View File

@ -87,6 +87,7 @@ class TaskServiceImplIntAutocommitTest {
Classification classification =
classificationService.newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
taskanaEngine.getClassificationService().createClassification(classification);
Task task = taskServiceImpl.newTask(wb.getId());
@ -112,6 +113,7 @@ class TaskServiceImplIntAutocommitTest {
Classification classification =
classificationService.newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
classification = taskanaEngine.getClassificationService().createClassification(classification);
classification =
taskanaEngine
@ -140,6 +142,7 @@ class TaskServiceImplIntAutocommitTest {
taskanaEngine.getWorkbasketService().createWorkbasket(wb);
Classification classification =
classificationService.newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
taskanaEngine.getClassificationService().createClassification(classification);
Task task = taskServiceImpl.newTask(wb.getKey(), wb.getDomain());
@ -196,6 +199,7 @@ class TaskServiceImplIntAutocommitTest {
(ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK");
classification.setCategory("EXTERNAL");
classification.setName("Transfert-Task Classification");
classification.setServiceLevel("P1D");
classificationService.createClassification(classification);
// Task which should be transfered
@ -247,6 +251,7 @@ class TaskServiceImplIntAutocommitTest {
(ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK");
classification.setCategory("EXTERNAL");
classification.setName("Transfert-Task Classification");
classification.setServiceLevel("P1D");
classificationService.createClassification(classification);
WorkbasketImpl wb = (WorkbasketImpl) workbasketService.newWorkbasket("k5", "DOMAIN_A");
@ -325,6 +330,7 @@ class TaskServiceImplIntAutocommitTest {
taskanaEngine.getWorkbasketService().createWorkbasket(wb);
Classification classification =
classificationService.newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
taskanaEngine.getClassificationService().createClassification(classification);
Task task = taskServiceImpl.newTask(wb.getId());

View File

@ -110,6 +110,7 @@ class TaskServiceImplIntExplicitTest {
workbasket.setType(WorkbasketType.GROUP);
final Classification classification =
classificationService.newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
taskanaEngineImpl.getWorkbasketService().createWorkbasket(workbasket);
WorkbasketAccessItem accessItem = workbasketService.newWorkbasketAccessItem("1", "user-1-1");
@ -214,6 +215,7 @@ class TaskServiceImplIntExplicitTest {
workbasket.setName("workbasket");
Classification classification =
classificationService.newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
classificationService.createClassification(classification);
workbasket.setId("1"); // set id manually for authorization tests
workbasket.setType(WorkbasketType.GROUP);
@ -299,6 +301,7 @@ class TaskServiceImplIntExplicitTest {
(ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK");
classification.setCategory("EXTERNAL");
classification.setName("Transfert-Task Classification");
classification.setServiceLevel("P1D");
classificationService.createClassification(classification);
// Task which should be transfered
@ -358,6 +361,7 @@ class TaskServiceImplIntExplicitTest {
(ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK");
classification.setCategory("EXTERNAL");
classification.setName("Transfert-Task Classification");
classification.setServiceLevel("P1D");
classificationService.createClassification(classification);
WorkbasketImpl wb = (WorkbasketImpl) workbasketService.newWorkbasket("wbKey1", "DOMAIN_A");
@ -447,6 +451,7 @@ class TaskServiceImplIntExplicitTest {
Classification classification =
classificationService.newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
taskanaEngine.getClassificationService().createClassification(classification);
Task task = taskServiceImpl.newTask(workbasket.getId());

View File

@ -49,6 +49,7 @@ public class ExampleBootstrap {
taskanaEngine.getWorkbasketService().createWorkbasket(wb);
Classification classification =
taskanaEngine.getClassificationService().newClassification("TEST", "DOMAIN_A", "TASK");
classification.setServiceLevel("P1D");
taskanaEngine.getClassificationService().createClassification(classification);
Task task = taskanaEngine.getTaskService().newTask(wb.getId());

View File

@ -123,7 +123,7 @@ class ClassificationControllerIntTest {
String newClassification =
"{\"classificationId\":\"\",\"category\":\"MANUAL\","
+ "\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLASS\","
+ "\"name\":\"new classification\",\"type\":\"TASK\"}";
+ "\"name\":\"new classification\",\"type\":\"TASK\", \"serviceLevel\":\"P1D\"}";
ResponseEntity<ClassificationRepresentationModel> responseEntity =
template.exchange(
@ -138,7 +138,7 @@ class ClassificationControllerIntTest {
newClassification =
"{\"classificationId\":\"\",\"category\":\"MANUAL\","
+ "\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLASS_2\","
+ "\"name\":\"new classification\",\"type\":\"TASK\"}";
+ "\"name\":\"new classification\",\"type\":\"TASK\", \"serviceLevel\":\"P1D\"}";
responseEntity =
template.exchange(
@ -178,7 +178,7 @@ class ClassificationControllerIntTest {
String newClassification =
"{\"classificationId\":\"\",\"category\":\"MANUAL\","
+ "\"domain\":\"DOMAIN_B\",\"key\":\"NEW_CLASS_P1\","
+ "\"name\":\"new classification\",\"type\":\"TASK\","
+ "\"name\":\"new classification\",\"type\":\"TASK\",\"serviceLevel\":\"P1D\","
+ "\"parentId\":\"CLI:200000000000000000000000000000000015\"}";
ResponseEntity<ClassificationRepresentationModel> responseEntity =
@ -199,7 +199,7 @@ class ClassificationControllerIntTest {
String newClassification =
"{\"classificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_B\","
+ "\"key\":\"NEW_CLASS_P2\",\"name\":\"new classification\","
+ "\"type\":\"TASK\",\"parentKey\":\"T2100\"}";
+ "\"type\":\"TASK\",\"parentKey\":\"T2100\",\"serviceLevel\":\"P1D\"}";
ResponseEntity<ClassificationRepresentationModel> responseEntity =
template.exchange(
@ -218,7 +218,7 @@ class ClassificationControllerIntTest {
String newClassification =
"{\"classificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_A\","
+ "\"key\":\"NEW_CLASS_P2\",\"name\":\"new classification\","
+ "\"type\":\"TASK\",\"parentKey\":\"T2100\"}";
+ "\"type\":\"TASK\",\"parentKey\":\"T2100\",\"serviceLevel\":\"P1D\"}";
ResponseEntity<ClassificationRepresentationModel> responseEntity =
template.exchange(
@ -260,7 +260,7 @@ class ClassificationControllerIntTest {
"{\"classificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_B\","
+ "\"key\":\"NEW_CLASS_P3\",\"name\":\"new classification\","
+ "\"type\":\"TASK\",\"parentId\":\"CLI:200000000000000000000000000000000015\","
+ "\"parentKey\":\"T2000\"}";
+ "\"parentKey\":\"T2000\",\"serviceLevel\":\"P1D\"}";
ThrowingCallable httpCall =
() -> {
@ -282,7 +282,7 @@ class ClassificationControllerIntTest {
String newClassification =
"{\"classificationId\":\"someId\",\"category\":\"MANUAL\","
+ "\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLASS\","
+ "\"name\":\"new classification\",\"type\":\"TASK\"}";
+ "\"name\":\"new classification\",\"type\":\"TASK\",\"serviceLevel\":\"P1D\"}";
ThrowingCallable httpCall =
() -> {

View File

@ -409,6 +409,7 @@ class ClassificationDefinitionControllerIntTest {
classificationRepresentationModel.setDomain(domain);
classificationRepresentationModel.setParentId(parentId);
classificationRepresentationModel.setParentKey(parentKey);
classificationRepresentationModel.setServiceLevel("P1D");
return classificationRepresentationModel;
}

View File

@ -300,7 +300,9 @@ class ClassificationControllerRestDocumentation extends BaseRestDocumentation {
RestDocumentationRequestBuilders.post(
restHelper.toUrl(RestEndpoints.URL_CLASSIFICATIONS))
.contentType("application/hal+json")
.content("{\"key\":\"Key0815casdgdgh\", \"domain\":\"DOMAIN_B\"}")
.content(
"{\"key\":\"Key0815casdgdgh\", \"domain\":\"DOMAIN_B\", "
+ "\"serviceLevel\":\"P1D\"}")
.header("Authorization", TEAMLEAD_1_CREDENTIALS))
.andExpect(MockMvcResultMatchers.status().isCreated())
.andDo(

View File

@ -51,7 +51,8 @@ class ClassificationDefinitionControllerRestDocumentation extends BaseRestDocume
@Test
void importClassificationDefinitions() throws Exception {
String definitionString =
"{\"classifications\":[{\"key\":\"Key0815\", \"domain\":\"DOMAIN_B\"}]}";
"{\"classifications\":[{\"key\":\"Key0815\", \"domain\":\"DOMAIN_B\", "
+ "\"serviceLevel\":\"P1D\"}]}";
this.mockMvc
.perform(