From bc96c24983fe22d8f540081e787fc7236441838f Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Thu, 9 Oct 2025 12:29:28 +0300 Subject: [PATCH] Add RolloutManagement ACM test (#2732) Signed-off-by: Avgustin Marinov --- .../jpa/acm/RolloutManagementTest.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/RolloutManagementTest.java diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/RolloutManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/RolloutManagementTest.java new file mode 100644 index 000000000..2c09cab19 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/RolloutManagementTest.java @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2025 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.hawkbit.repository.jpa.acm; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.hawkbit.im.authentication.SpPermission.READ_ROLLOUT; +import static org.eclipse.hawkbit.im.authentication.SpPermission.READ_TARGET; +import static org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status.NOTSTARTED; +import static org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status.RUNNING; +import static org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status.SCHEDULED; +import static org.eclipse.hawkbit.repository.test.util.SecurityContextSwitch.runAs; + +import java.util.List; + +import org.assertj.core.api.Assertions; +import org.eclipse.hawkbit.repository.Identifiable; +import org.eclipse.hawkbit.repository.model.Rollout; +import org.eclipse.hawkbit.repository.model.Target; +import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; +import org.junit.jupiter.api.Test; + +class RolloutManagementTest extends AbstractAccessControllerTest { + + /** + * Test is verifying that rollout details are showing details without restrictions + */ + @Test + void verifyRolloutDetailsAreShowingRealCount() { + final Rollout rollout = testdataFactory.createRolloutByVariables(randomString(16), "description", 4, "id==*", ds2Type2, "50", "80"); + rolloutManagement.start(rollout.getId()); + rolloutHandler.handleAll(); + + runAs(withAuthorities(READ_TARGET + "/type.id==" + targetType1.getId(), READ_ROLLOUT), + () -> { + assertThat(targetManagement.findAll(UNPAGED).stream().map(Identifiable::getId).toList()) + .as("Only readable targets should be returned") + .containsExactly(target1Type1.getId()); + assertThat(rolloutManagement.getWithDetailedStatus(rollout.getId())).satisfies(rolloutWithDetails -> { + assertThat(rolloutWithDetails.getTotalTargets()).as("All targets shall be returned").isEqualTo(3); + assertThat(rolloutWithDetails.getRolloutGroupsCreated()).isEqualTo(rollout.getRolloutGroupsCreated()); + assertThat(rolloutWithDetails.getTotalTargetCountStatus().getFinishedPercent()).isZero(); + assertThat(rolloutWithDetails.getTotalTargetCountStatus().getTotalTargetCountByStatus(RUNNING)).isEqualTo(1); + assertThat(rolloutWithDetails.getTotalTargetCountStatus().getTotalTargetCountByStatus(SCHEDULED)).isEqualTo(2); + assertThat(rolloutWithDetails.getTotalTargetCountStatus().getTotalTargetCountByStatus(NOTSTARTED)).isZero(); + }); + }); + } +} \ No newline at end of file