Remove deprecated toggle tag assigment from where possible (#1886)

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-10-17 09:08:38 +03:00
committed by GitHub
parent d45477cd5a
commit 903e5727a0
7 changed files with 74 additions and 87 deletions

View File

@@ -10,8 +10,6 @@
package org.eclipse.hawkbit.repository.jpa;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -29,7 +27,6 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet;
import org.eclipse.hawkbit.repository.jpa.model.JpaRollout;
import org.eclipse.hawkbit.repository.jpa.model.JpaRolloutGroup;
import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModule;
import org.eclipse.hawkbit.repository.jpa.model.JpaTarget;
import org.eclipse.hawkbit.repository.jpa.repository.ActionRepository;
import org.eclipse.hawkbit.repository.jpa.repository.ActionStatusRepository;
import org.eclipse.hawkbit.repository.jpa.repository.DistributionSetRepository;
@@ -46,7 +43,6 @@ import org.eclipse.hawkbit.repository.jpa.repository.TargetRepository;
import org.eclipse.hawkbit.repository.jpa.repository.TargetTagRepository;
import org.eclipse.hawkbit.repository.jpa.repository.TargetTypeRepository;
import org.eclipse.hawkbit.repository.jpa.repository.TenantMetaDataRepository;
import org.eclipse.hawkbit.repository.jpa.specifications.TargetSpecifications;
import org.eclipse.hawkbit.repository.model.Action;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetTag;
@@ -159,9 +155,13 @@ public abstract class AbstractJpaIntegrationTest extends AbstractIntegrationTest
.withMessageContaining(NOT_EXIST_ID).withMessageContaining(objectType);
}
protected TargetTagAssignmentResult toggleTagAssignment(final Collection<Target> targets, final TargetTag tag) {
return targetManagement.toggleTagAssignment(
targets.stream().map(Target::getControllerId).collect(Collectors.toList()), tag.getName());
protected List<Target> assignTag(final Collection<Target> targets, final TargetTag tag) {
return targetManagement.assignTag(
targets.stream().map(Target::getControllerId).collect(Collectors.toList()), tag.getId());
}
protected List<Target> unassignTag(final Collection<Target> targets, final TargetTag tag) {
return targetManagement.unassignTag(
targets.stream().map(Target::getControllerId).collect(Collectors.toList()), tag.getId());
}
public DistributionSetTagAssignmentResult toggleTagAssignment(final Collection<DistributionSet> sets,

View File

@@ -148,16 +148,20 @@ class TargetAccessControllerTest extends AbstractAccessControllerTest {
assertThat(targetManagement.findByRsqlAndTag(Pageable.unpaged(), "id==*", myTag.getId()).get()
.map(Identifiable::getId).toList()).containsOnly(permittedTarget.getId(), readOnlyTarget.getId());
// verify targetManagement#toggleTagAssignment on permitted target
// verify targetManagement#assignTag on permitted target
assertThat(targetManagement
.toggleTagAssignment(Collections.singletonList(permittedTarget.getControllerId()), myTag.getName())
.getUnassigned()).isEqualTo(1);
.assignTag(Collections.singletonList(permittedTarget.getControllerId()), myTag.getId())
.size()).isEqualTo(1);
// verify targetManagement#unassignTag on permitted target
assertThat(targetManagement
.unassignTag(Collections.singletonList(permittedTarget.getControllerId()), myTag.getId())
.size()).isEqualTo(1);
// verify targetManagement#assignTag on permitted target
assertThat(
targetManagement.assignTag(Collections.singletonList(permittedTarget.getControllerId()), myTag.getId()))
.hasSize(1);
// verify targetManagement#unAssignTag on permitted target
assertThat(targetManagement.unassignTag(permittedTarget.getControllerId(), myTag.getId()).getControllerId())
assertThat(targetManagement.unassignTag(List.of(permittedTarget.getControllerId()), myTag.getId()).get(0).getControllerId())
.isEqualTo(permittedTarget.getControllerId());
// assignment is denied for readOnlyTarget (read, but no update permissions)
@@ -177,15 +181,15 @@ class TargetAccessControllerTest extends AbstractAccessControllerTest {
// assignment is denied for readOnlyTarget (read, but no update permissions)
assertThatThrownBy(() -> {
targetManagement.unassignTag(readOnlyTarget.getControllerId(), myTag.getId());
targetManagement.unassignTag(List.of(readOnlyTarget.getControllerId()), myTag.getId());
}).as("Missing update permissions for target to toggle tag assignment.")
.isInstanceOf(InsufficientPermissionException.class);
// assignment is denied for hiddenTarget since it's hidden
assertThatThrownBy(() -> {
targetManagement
.toggleTagAssignment(Collections.singletonList(hiddenTarget.getControllerId()), myTag.getName())
.getUnassigned();
.assignTag(Collections.singletonList(hiddenTarget.getControllerId()), myTag.getId())
.size();
}).as("Missing update permissions for target to toggle tag assignment.")
.isInstanceOf(EntityNotFoundException.class);

View File

@@ -72,7 +72,7 @@ class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
final String targetDsAIdPref = "targ-A";
List<Target> targAs = testdataFactory.createTargets(100, targetDsAIdPref,
targetDsAIdPref.concat(" description"), lastTargetQueryNotOverdue);
targAs = toggleTagAssignment(targAs, targTagX).getAssignedEntity();
targAs = assignTag(targAs, targTagX);
final Target targSpecialName = targetManagement
.update(entityFactory.target().update(targAs.get(0).getControllerId()).name("targ-A-special"));
@@ -81,15 +81,15 @@ class TargetManagementSearchTest extends AbstractJpaIntegrationTest {
List<Target> targBs = testdataFactory.createTargets(100, targetDsBIdPref,
targetDsBIdPref.concat(" description"), lastTargetQueryAlwaysOverdue);
targBs = toggleTagAssignment(targBs, targTagY).getAssignedEntity();
targBs = toggleTagAssignment(targBs, targTagW).getAssignedEntity();
targBs = assignTag(targBs, targTagY);
targBs = assignTag(targBs, targTagW);
final String targetDsCIdPref = "targ-C";
List<Target> targCs = testdataFactory.createTargets(100, targetDsCIdPref,
targetDsCIdPref.concat(" description"), lastTargetQueryAlwaysOverdue);
targCs = toggleTagAssignment(targCs, targTagZ).getAssignedEntity();
targCs = toggleTagAssignment(targCs, targTagW).getAssignedEntity();
targCs = assignTag(targCs, targTagZ);
targCs = assignTag(targCs, targTagW);
final String targetDsDIdPref = "targ-D";
final List<Target> targDs = testdataFactory.createTargets(100, targetDsDIdPref,

View File

@@ -154,13 +154,13 @@ class TargetManagementTest extends AbstractJpaIntegrationTest {
"DistributionSet");
verifyThrownExceptionBy(() -> targetManagement
.toggleTagAssignment(Collections.singletonList(target.getControllerId()), NOT_EXIST_ID), "TargetTag");
.assignTag(Collections.singletonList(target.getControllerId()), Long.parseLong(NOT_EXIST_ID)), "TargetTag");
verifyThrownExceptionBy(
() -> targetManagement.toggleTagAssignment(Collections.singletonList(NOT_EXIST_ID), tag.getName()),
() -> targetManagement.assignTag(Collections.singletonList(NOT_EXIST_ID), tag.getId()),
"Target");
verifyThrownExceptionBy(() -> targetManagement.unassignTag(NOT_EXIST_ID, tag.getId()), "Target");
verifyThrownExceptionBy(() -> targetManagement.unassignTag(target.getControllerId(), NOT_EXIST_IDL),
verifyThrownExceptionBy(() -> targetManagement.unassignTag(List.of(NOT_EXIST_ID), tag.getId()), "Target");
verifyThrownExceptionBy(() -> targetManagement.unassignTag(List.of(target.getControllerId()), NOT_EXIST_IDL),
"TargetTag");
verifyThrownExceptionBy(() -> targetManagement.update(entityFactory.target().update(NOT_EXIST_ID)), "Target");
@@ -409,7 +409,7 @@ class TargetManagementTest extends AbstractJpaIntegrationTest {
assertThat(assignedTargets.size()).as("Assigned targets are wrong")
.isEqualTo(targetManagement.findByTag(PAGE, targetTag.getId()).getNumberOfElements());
final Target unAssignTarget = targetManagement.unassignTag("targetId123", findTargetTag.getId());
final Target unAssignTarget = targetManagement.unassignTag(List.of("targetId123"), findTargetTag.getId()).get(0);
assertThat(unAssignTarget.getControllerId()).as("Controller id is wrong").isEqualTo("targetId123");
assertThat(getTargetTags(unAssignTarget.getControllerId())).as("Tag size is wrong")
.isEmpty();
@@ -753,16 +753,16 @@ class TargetManagementTest extends AbstractJpaIntegrationTest {
targetTagManagement.create(entityFactory.tag().create().name("X"));
// doing different assignments
toggleTagAssignment(tagATargets, tagA);
toggleTagAssignment(tagBTargets, tagB);
toggleTagAssignment(tagCTargets, tagC);
assignTag(tagATargets, tagA);
assignTag(tagBTargets, tagB);
assignTag(tagCTargets, tagC);
toggleTagAssignment(tagABTargets, tagA);
toggleTagAssignment(tagABTargets, tagB);
assignTag(tagABTargets, tagA);
assignTag(tagABTargets, tagB);
toggleTagAssignment(tagABCTargets, tagA);
toggleTagAssignment(tagABCTargets, tagB);
toggleTagAssignment(tagABCTargets, tagC);
assignTag(tagABCTargets, tagA);
assignTag(tagABCTargets, tagB);
assignTag(tagABCTargets, tagC);
assertThat(targetManagement.countByFilters(new FilterParams(null, null, null, null, Boolean.FALSE, "X")))
.as("Target count is wrong").isZero();
@@ -821,20 +821,20 @@ class TargetManagementTest extends AbstractJpaIntegrationTest {
final List<Target> targBCs = testdataFactory.createTargets(7, "target-id-BC", "first description");
final List<Target> targABCs = testdataFactory.createTargets(17, "target-id-ABC", "first description");
toggleTagAssignment(targAs, targTagA);
toggleTagAssignment(targABs, targTagA);
toggleTagAssignment(targACs, targTagA);
toggleTagAssignment(targABCs, targTagA);
assignTag(targAs, targTagA);
assignTag(targABs, targTagA);
assignTag(targACs, targTagA);
assignTag(targABCs, targTagA);
toggleTagAssignment(targBs, targTagB);
toggleTagAssignment(targABs, targTagB);
toggleTagAssignment(targBCs, targTagB);
toggleTagAssignment(targABCs, targTagB);
assignTag(targBs, targTagB);
assignTag(targABs, targTagB);
assignTag(targBCs, targTagB);
assignTag(targABCs, targTagB);
toggleTagAssignment(targCs, targTagC);
toggleTagAssignment(targACs, targTagC);
toggleTagAssignment(targBCs, targTagC);
toggleTagAssignment(targABCs, targTagC);
assignTag(targCs, targTagC);
assignTag(targACs, targTagC);
assignTag(targBCs, targTagC);
assignTag(targABCs, targTagC);
checkTargetHasTags(true, targAs, targTagA);
checkTargetHasTags(true, targBs, targTagB);
@@ -843,10 +843,10 @@ class TargetManagementTest extends AbstractJpaIntegrationTest {
checkTargetHasTags(true, targBCs, targTagB, targTagC);
checkTargetHasTags(true, targABCs, targTagA, targTagB, targTagC);
toggleTagAssignment(targCs, targTagC);
toggleTagAssignment(targACs, targTagC);
toggleTagAssignment(targBCs, targTagC);
toggleTagAssignment(targABCs, targTagC);
unassignTag(targCs, targTagC);
unassignTag(targACs, targTagC);
unassignTag(targBCs, targTagC);
unassignTag(targABCs, targTagC);
checkTargetHasTags(true, targAs, targTagA); // 0
checkTargetHasTags(true, targBs, targTagB);
@@ -866,10 +866,9 @@ class TargetManagementTest extends AbstractJpaIntegrationTest {
@Expect(type = TargetCreatedEvent.class, count = 50),
@Expect(type = TargetUpdatedEvent.class, count = 25) })
void findTargetsWithNoTag() {
final TargetTag targTagA = targetTagManagement.create(entityFactory.tag().create().name("Targ-A-Tag"));
final List<Target> targAs = testdataFactory.createTargets(25, "target-id-A", "first description");
toggleTagAssignment(targAs, targTagA);
assignTag(targAs, targTagA);
testdataFactory.createTargets(25, "target-id-B", "first description");
@@ -907,7 +906,7 @@ class TargetManagementTest extends AbstractJpaIntegrationTest {
final TargetTag targTagA = targetTagManagement.create(entityFactory.tag().create().name("Targ-A-Tag"));
final List<String> targAs = testdataFactory.createTargets(25, "target-id-A", "first description").stream()
.map(Target::getControllerId).collect(Collectors.toList());
targetManagement.toggleTagAssignment(targAs, targTagA.getName());
targetManagement.assignTag(targAs, targTagA.getId());
testdataFactory.createTargets(25, "target-id-B", "first description");

View File

@@ -169,34 +169,22 @@ class TargetTagManagementTest extends AbstractJpaIntegrationTest {
.create(entityFactory.tag().create().name("tag1").description("tagdesc1"));
// toggle A only -> A is now assigned
TargetTagAssignmentResult result = toggleTagAssignment(groupA, tag);
assertThat(result.getAlreadyAssigned()).isZero();
assertThat(result.getAssigned()).isEqualTo(20);
assertThat(result.getAssignedEntity()).containsAll(targetManagement
List<Target> result = assignTag(groupA, tag);
assertThat(result).size().isEqualTo(20);
assertThat(result).containsAll(targetManagement
.getByControllerID(groupA.stream().map(Target::getControllerId).collect(Collectors.toList())));
assertThat(result.getUnassigned()).isZero();
assertThat(result.getUnassignedEntity()).isEmpty();
assertThat(result.getTargetTag()).isEqualTo(tag);
// toggle A+B -> A is still assigned and B is assigned as well
result = toggleTagAssignment(concat(groupA, groupB), tag);
assertThat(result.getAlreadyAssigned()).isEqualTo(20);
assertThat(result.getAssigned()).isEqualTo(20);
assertThat(result.getAssignedEntity()).containsAll(targetManagement
.getByControllerID(groupB.stream().map(Target::getControllerId).collect(Collectors.toList())));
assertThat(result.getUnassigned()).isZero();
assertThat(result.getUnassignedEntity()).isEmpty();
assertThat(result.getTargetTag()).isEqualTo(tag);
result = assignTag(concat(groupA, groupB), tag);
assertThat(result).size().isEqualTo(40);
assertThat(result).containsAll(targetManagement.getByControllerID(
concat(groupB, groupA).stream().map(Target::getControllerId).collect(Collectors.toList())));
// toggle A+B -> both unassigned
result = toggleTagAssignment(concat(groupA, groupB), tag);
assertThat(result.getAlreadyAssigned()).isZero();
assertThat(result.getAssigned()).isZero();
assertThat(result.getAssignedEntity()).isEmpty();
assertThat(result.getUnassigned()).isEqualTo(40);
assertThat(result.getUnassignedEntity()).containsAll(targetManagement.getByControllerID(
result = unassignTag(concat(groupA, groupB), tag);
assertThat(result).size().isEqualTo(40);
assertThat(result).containsAll(targetManagement.getByControllerID(
concat(groupB, groupA).stream().map(Target::getControllerId).collect(Collectors.toList())));
assertThat(result.getTargetTag()).isEqualTo(tag);
}
@@ -294,7 +282,7 @@ class TargetTagManagementTest extends AbstractJpaIntegrationTest {
final List<Target> targets = testdataFactory.createTargets(20);
final Iterable<TargetTag> tags = testdataFactory.createTargetTags(20, "");
tags.forEach(tag -> toggleTagAssignment(targets, tag));
tags.forEach(tag -> assignTag(targets, tag));
return targetTagRepository.findAll();
}

View File

@@ -1912,7 +1912,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest {
final List<TargetTag> targetTags = testdataFactory.createTargetTags(2, "tag_getControllerTagReturnsTagWithOk");
final List<String> tagNames = new ArrayList<>();
for (final TargetTag targetTag : targetTags) {
targetManagement.toggleTagAssignment(Collections.singletonList(target.getControllerId()), targetTag.getName());
targetManagement.assignTag(Collections.singletonList(target.getControllerId()), targetTag.getId());
tagNames.add(targetTag.getName());
}

View File

@@ -97,9 +97,9 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT
final TargetTag tag1 = tags.get(0);
final TargetTag tag2 = tags.get(1);
targetManagement.toggleTagAssignment(List.of(controllerId1, controllerId2), tag1.getName());
targetManagement.toggleTagAssignment(List.of(controllerId2), tag2.getName())
;
targetManagement.assignTag(List.of(controllerId1, controllerId2), tag1.getId());
targetManagement.assignTag(List.of(controllerId2), tag2.getId());
// pass here q directly as a pure string because .queryParam method delimiters the parameters in q with ,
// which is logical OR, we want AND here
mvc.perform(get(MgmtRestConstants.TARGET_TAG_V1_REQUEST_MAPPING +
@@ -207,8 +207,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT
final TargetTag tag = testdataFactory.createTargetTags(1, "").get(0);
final int targetsAssigned = 5;
final List<Target> targets = testdataFactory.createTargets(targetsAssigned);
targetManagement.toggleTagAssignment(targets.stream().map(Target::getControllerId).collect(Collectors.toList()),
tag.getName());
targetManagement.assignTag(targets.stream().map(Target::getControllerId).collect(Collectors.toList()), tag.getId());
mvc.perform(get(MgmtRestConstants.TARGET_TAG_V1_REQUEST_MAPPING + "/" + tag.getId() + "/assigned"))
.andDo(MockMvcResultPrinter.print()).andExpect(status().isOk())
@@ -226,8 +225,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT
final int targetsAssigned = 5;
final int limitSize = 1;
final List<Target> targets = testdataFactory.createTargets(targetsAssigned);
targetManagement.toggleTagAssignment(targets.stream().map(Target::getControllerId).collect(Collectors.toList()),
tag.getName());
targetManagement.assignTag(targets.stream().map(Target::getControllerId).collect(Collectors.toList()), tag.getId());
mvc.perform(get(MgmtRestConstants.TARGET_TAG_V1_REQUEST_MAPPING + "/" + tag.getId() + "/assigned")
.param(MgmtRestConstants.REQUEST_PARAMETER_PAGING_LIMIT, String.valueOf(limitSize)))
@@ -248,8 +246,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT
final int expectedSize = targetsAssigned - offsetParam;
final List<Target> targets = testdataFactory.createTargets(targetsAssigned);
targetManagement.toggleTagAssignment(targets.stream().map(Target::getControllerId).collect(Collectors.toList()),
tag.getName());
targetManagement.assignTag(targets.stream().map(Target::getControllerId).collect(Collectors.toList()), tag.getId());
mvc.perform(get(MgmtRestConstants.TARGET_TAG_V1_REQUEST_MAPPING + "/" + tag.getId() + "/assigned")
.param(MgmtRestConstants.REQUEST_PARAMETER_PAGING_OFFSET, String.valueOf(offsetParam))
@@ -327,7 +324,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT
}
@Test
@Description("Verfies that tag unassignments done through tag API command are correctly stored in the repository.")
@Description("Verifies that tag unassignments done through tag API command are correctly stored in the repository.")
@ExpectEvents({ @Expect(type = TargetTagCreatedEvent.class, count = 1),
@Expect(type = TargetCreatedEvent.class, count = 2), @Expect(type = TargetUpdatedEvent.class, count = 3) })
public void unassignTarget() throws Exception {
@@ -337,8 +334,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT
final Target assigned = targets.get(0);
final Target unassigned = targets.get(1);
targetManagement.toggleTagAssignment(targets.stream().map(Target::getControllerId).collect(Collectors.toList()),
tag.getName());
targetManagement.assignTag(targets.stream().map(Target::getControllerId).collect(Collectors.toList()), tag.getId());
mvc.perform(delete(MgmtRestConstants.TARGET_TAG_V1_REQUEST_MAPPING + "/" + tag.getId() + "/assigned/"
+ unassigned.getControllerId())).andDo(MockMvcResultPrinter.print()).andExpect(status().isOk());