From 84a9539aab97e0420b49b6e5e4bf80de687d78a2 Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Thu, 17 Oct 2024 13:52:51 +0300 Subject: [PATCH] Add not found target (on assign) test (#1897) Signed-off-by: Marinov Avgustin --- .../management/TargetTagManagementTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetTagManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetTagManagementTest.java index 5b082a50e..743a90d08 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetTagManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetTagManagementTest.java @@ -178,6 +178,40 @@ class TargetTagManagementTest extends AbstractJpaIntegrationTest { assertThat(targetManagement.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 group = testdataFactory.createTargets(5).stream() + .map(Target::getControllerId) + .collect(Collectors.toList()); + final TargetTag tag = targetTagManagement.create(entityFactory.tag().create().name("tag1").description("tagdesc1")); + + final List missing = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + while (true) { + final String id = String.valueOf(RND.nextLong()); + if (!group.contains(id)) { + missing.add(id); + break; + } + } + } + Collections.sort(missing); + final Collection withMissing = concat(group, missing); + assertThatThrownBy(() -> targetManagement.assignTag(withMissing, tag.getId())) + .matches(e -> { + if (e instanceof EntityNotFoundException enfe) { + if (enfe.getType().equals(Target.class)) { + if (enfe.getEntityId() instanceof Collection entityId) { + return entityId.stream().sorted().toList().equals(missing); + } + } + } + return false; + }); + } + @SafeVarargs private Collection concat(final Collection... targets) { final List result = new ArrayList<>();