add method to get a single action by externalRef (#942)

* add method to get a single action by externalRef
* adding junit test for ControllerManagement::getActionByExternalRef
* fixing sonarQube findings
* improve assert statement

Signed-off-by: Ravindranath Sandeep <Sandeep.Ravindranath@bosch-si.com>
This commit is contained in:
Sandeep Ravindranath
2020-03-19 10:16:30 +01:00
committed by GitHub
parent 46ce3b632a
commit cf7add7aaa
4 changed files with 48 additions and 0 deletions

View File

@@ -481,6 +481,16 @@ public interface ControllerManagement {
@PreAuthorize(SpringEvalExpressions.IS_CONTROLLER)
List<Action> getActiveActionsByExternalRef(@NotNull List<String> externalRefs);
/**
* Retrieves an {@link Action} using {@link Action#getExternalRef()}
*
* @param externalRef
* of the action. See {@link Action#getExternalRef()}
* @return {@link Action} or {@code null} if it does not exist
*/
@PreAuthorize(SpringEvalExpressions.IS_CONTROLLER)
Optional<Action> getActionByExternalRef(@NotEmpty String externalRef);
/**
* Delete a single target.
*

View File

@@ -264,6 +264,16 @@ public interface ActionRepository extends BaseEntityRepository<JpaAction, Long>,
List<Action> findByExternalRefInAndActive(@Param("externalRefs") List<String> externalRefs,
@Param("active") boolean active);
/**
* Retrieves an {@link Action} that matches the queried externalRef.
*
* @param externalRef
* of the action. See {@link Action#getExternalRef()}
* @return the found {@link Action}
*/
Optional<Action> findByExternalRef(@Param("externalRef") String externalRef);
/**
* Switches the status of actions from one specific status into another for
* given actions IDs, active flag and current status

View File

@@ -1050,6 +1050,11 @@ public class JpaControllerManagement extends JpaActionManagement implements Cont
actionRepository.updateExternalRef(actionId, externalRef);
}
@Override
public Optional<Action> getActionByExternalRef(@NotEmpty final String externalRef) {
return actionRepository.findByExternalRef(externalRef);
}
private void cancelAssignDistributionSetEvent(final JpaTarget target, final Long actionId) {
afterCommit.afterCommit(() -> eventPublisherHolder.getEventPublisher().publishEvent(
new CancelTargetAssignmentEvent(target, actionId, eventPublisherHolder.getApplicationId())));

View File

@@ -1365,6 +1365,29 @@ public class ControllerManagementTest extends AbstractJpaIntegrationTest {
}
}
@Test
@Description("Verify that getting a single action using externalRef works")
public void getActionUsingSingleExternalRef() {
final String knownControllerId = "controllerId";
final String knownExternalRef = "externalRefId";
final DistributionSet knownDistributionSet = testdataFactory.createDistributionSet();
// GIVEN
testdataFactory.createTarget(knownControllerId);
final DistributionSetAssignmentResult assignmentResult = assignDistributionSet(knownDistributionSet.getId(),
knownControllerId);
final Long actionId = getFirstAssignedActionId(assignmentResult);
controllerManagement.updateActionExternalRef(actionId, knownExternalRef);
// WHEN
final Optional<Action> foundAction = controllerManagement.getActionByExternalRef(knownExternalRef);
// THEN
assertThat(foundAction).isPresent();
assertThat(foundAction.get().getId()).isEqualTo(actionId);
}
@Test
@Description("Verify that a null externalRef cannot be assigned to an action")
public void externalRefCannotBeNull() {