package jnpf.dmsController.permission; import jnpf.base.ActionResult; import jnpf.dmsController.DmsControllerTestSupport; import jnpf.dmsEntity.permission.form.PermissionBatchDecisionForm; import jnpf.dmsEntity.permission.form.PermissionDecisionForm; import jnpf.dmsEntity.permission.vo.DmsAdminCapabilitiesVO; import jnpf.dmsEntity.permission.vo.DmsPermissionDecisionVO; import jnpf.dmsPermission.DmsCurrentIdentity; import jnpf.dmsService.DmsPermissionDecisionService; import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class PermissionDecisionControllerTest extends DmsControllerTestSupport { private final DmsPermissionDecisionService decisionService = mock(DmsPermissionDecisionService.class); private final DmsCurrentIdentity currentIdentity = mock(DmsCurrentIdentity.class); private final PermissionDecisionController controller = new PermissionDecisionController(decisionService, currentIdentity); @Test void delegatesSingleAndBatchDecisionsWithoutChangingRequests() { PermissionDecisionForm request = mock(PermissionDecisionForm.class); DmsPermissionDecisionVO decision = mock(DmsPermissionDecisionVO.class); when(decisionService.evaluate(request)).thenReturn(decision); ActionResult singleResult = controller.evaluate(request); assertSame(decision, singleResult.getData()); verify(decisionService).evaluate(request); List requests = Collections.singletonList(request); List decisions = Collections.singletonList(decision); PermissionBatchDecisionForm batch = mock(PermissionBatchDecisionForm.class); when(batch.getRequests()).thenReturn(requests); when(decisionService.evaluate(requests)).thenReturn(decisions); ActionResult> batchResult = controller.batchEvaluate(batch); assertSame(decisions, batchResult.getData()); verify(decisionService).evaluate(requests); } @Test void exposesCurrentPermissionAdministratorCapability() { when(currentIdentity.isPermissionAdministrator()).thenReturn(true); ActionResult result = controller.capabilities(); assertTrue(result.getData().isPermissionAdministrator()); verify(currentIdentity).isPermissionAdministrator(); } }