Add not found DS test & improve EntityNotFoundException (#1896)

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-10-17 13:50:41 +03:00
committed by GitHub
parent c76a2e2db5
commit f90ced20df
3 changed files with 80 additions and 41 deletions

View File

@@ -11,11 +11,14 @@ package org.eclipse.hawkbit.repository.jpa.management;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -25,6 +28,7 @@ import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTagUpda
import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent;
import org.eclipse.hawkbit.repository.event.remote.entity.TargetTagUpdatedEvent;
import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException;
import org.eclipse.hawkbit.repository.exception.EntityNotFoundException;
import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetFilter;
@@ -145,8 +149,7 @@ public class DistributionSetTagManagementTest extends AbstractJpaIntegrationTest
}
@Test
@Description("Verifies the toogle mechanism by means on assigning tag if at least on DS in the list does not have"
+ "the tag yet. Unassign if all of them have the tag already.")
@Description("Verifies assign/unassign.")
public void assignAndUnassignDistributionSetTags() {
final Collection<DistributionSet> groupA = testdataFactory.createDistributionSets(20);
final Collection<DistributionSet> groupB = testdataFactory.createDistributionSets("unassigned", 20);
@@ -179,6 +182,40 @@ public class DistributionSetTagManagementTest extends AbstractJpaIntegrationTest
assertThat(distributionSetManagement.findByTag(Pageable.unpaged(), tag.getId()).getContent()).isEmpty();
}
private static final Random RND = new Random();
@Test
@Description("Verifies that tagging of set containing missing DS throws meaningful and correct exception.")
public void failOnMissingDs() {
final Collection<Long> group = testdataFactory.createDistributionSets(5).stream()
.map(DistributionSet::getId)
.collect(Collectors.toList());
final DistributionSetTag tag = distributionSetTagManagement
.create(entityFactory.tag().create().name("tag1").description("tagdesc1"));
final List<Long> missing = new ArrayList<>();
for (int i = 0; i < 5; i++) {
while (true) {
final Long id = RND.nextLong();
if (!group.contains(id)) {
missing.add(id);
break;
}
}
}
Collections.sort(missing);
final Collection<Long> withMissing = concat(group, missing);
assertThatThrownBy(() -> distributionSetManagement.assignTag(withMissing, tag.getId()))
.matches(e -> {
if (e instanceof EntityNotFoundException enfe) {
if (enfe.getType().equals(DistributionSet.class)) {
if (enfe.getEntityId() instanceof Collection entityId) {
return entityId.stream().sorted().toList().equals(missing);
}
}
}
return false;
});
}
@Test
@Description("Ensures that a created tag is persisted in the repository as defined.")
public void createDistributionSetTag() {

View File

@@ -11,11 +11,14 @@ package org.eclipse.hawkbit.repository.jpa.management;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import jakarta.validation.ConstraintViolationException;
@@ -26,8 +29,11 @@ import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTagUpda
import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent;
import org.eclipse.hawkbit.repository.event.remote.entity.TargetTagUpdatedEvent;
import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException;
import org.eclipse.hawkbit.repository.exception.EntityNotFoundException;
import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest;
import org.eclipse.hawkbit.repository.jpa.model.JpaTargetTag;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetTag;
import org.eclipse.hawkbit.repository.model.NamedEntity;
import org.eclipse.hawkbit.repository.model.Tag;
import org.eclipse.hawkbit.repository.model.Target;
@@ -140,8 +146,7 @@ class TargetTagManagementTest extends AbstractJpaIntegrationTest {
}
@Test
@Description("Verifies the toogle mechanism by means on assigning tag if at least on target in the list does not have"
+ "the tag yet. Unassign if all of them have the tag already.")
@Description("Verifies assign/unassign.")
void assignAndUnassignTargetTags() {
final List<Target> groupA = testdataFactory.createTargets(20);
final List<Target> groupB = testdataFactory.createTargets(20, "groupb", "groupb");