package jnpf.dmsController.permission; import com.fasterxml.jackson.databind.ObjectMapper; import jnpf.dmsController.DmsControllerTestSupport; import jnpf.dmsEntity.permission.form.PermissionGrantBatchForm; import jnpf.dmsEntity.permission.form.PermissionRevokeForm; import jnpf.dmsEntity.permission.form.UserFolderPermissionTreeForm; import jnpf.dmsEntity.permission.vo.DmsCursorPageVO; import jnpf.dmsEntity.permission.vo.DmsPermissionGrantVO; import jnpf.dmsEntity.permission.vo.DmsPrincipalOptionVO; import jnpf.dmsEntity.permission.vo.DmsPermissionUsageVO; import jnpf.dmsEntity.permission.vo.DmsUserFolderPermissionTreeNodeVO; import jnpf.dmsService.DmsPermissionAdminQueryService; import jnpf.dmsService.DmsPermissionGrantService; import jnpf.dmsService.DmsUserFolderPermissionTreeService; import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.List; import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertSame; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class PermissionGrantControllerTest extends DmsControllerTestSupport { private final DmsPermissionGrantService grantService = mock(DmsPermissionGrantService.class); private final DmsPermissionAdminQueryService queryService = mock(DmsPermissionAdminQueryService.class); private final DmsUserFolderPermissionTreeService userFolderPermissionTreeService = mock(DmsUserFolderPermissionTreeService.class); private final PermissionGrantController controller = new PermissionGrantController( grantService, queryService, userFolderPermissionTreeService); @Test void delegatesEveryGrantManagementApiWithUnchangedArguments() { UUID resourceId = UUID.randomUUID(); UUID permissionId = UUID.randomUUID(); PermissionGrantBatchForm grantForm = mock(PermissionGrantBatchForm.class); PermissionRevokeForm revokeForm = mock(PermissionRevokeForm.class); UserFolderPermissionTreeForm treeForm = mock(UserFolderPermissionTreeForm.class); List grants = Collections.singletonList(mock(DmsPermissionGrantVO.class)); DmsCursorPageVO page = new DmsCursorPageVO<>(); DmsCursorPageVO treePage = new DmsCursorPageVO<>(); DmsPermissionGrantVO grant = mock(DmsPermissionGrantVO.class); List usages = Collections.singletonList(mock(DmsPermissionUsageVO.class)); List groups = Collections.singletonList(mock(DmsPrincipalOptionVO.class)); when(grantService.grant(grantForm)).thenReturn(grants); when(queryService.grants(resourceId, "USER", "user-1", "cursor-1", 25)).thenReturn(page); when(queryService.grant(permissionId)).thenReturn(grant); when(grantService.revoke(revokeForm)).thenReturn(grants); when(queryService.grants(null, "GROUP", "group-1", "cursor-2", 20)).thenReturn(page); when(queryService.usages(permissionId, 15)).thenReturn(usages); when(queryService.permissionGroups("quality", 10)).thenReturn(groups); when(userFolderPermissionTreeService.tree(treeForm)).thenReturn(treePage); assertSame(grants, controller.grant(grantForm).getData()); assertSame(page, controller.grants(resourceId, "USER", "user-1", "cursor-1", 25).getData()); assertSame(grant, controller.grant(permissionId).getData()); assertSame(grants, controller.revoke(revokeForm).getData()); assertSame(page, controller.principalGrants("GROUP", "group-1", "cursor-2", 20).getData()); assertSame(usages, controller.usages(permissionId, 15).getData()); assertSame(groups, controller.permissionGroups("quality", 10).getData()); assertSame(treePage, controller.userFolderPermissionTree(treeForm).getData()); verify(grantService).grant(grantForm); verify(queryService).grants(resourceId, "USER", "user-1", "cursor-1", 25); verify(queryService).grant(permissionId); verify(grantService).revoke(revokeForm); verify(queryService).grants(null, "GROUP", "group-1", "cursor-2", 20); verify(queryService).usages(permissionId, 15); verify(queryService).permissionGroups("quality", 10); verify(userFolderPermissionTreeService).tree(treeForm); } @Test void bindsBizSignFromGrantRequestBody() throws Exception { PermissionGrantBatchForm form = new ObjectMapper().readValue( "{\"biz_sign\":\"sign-1\"}", PermissionGrantBatchForm.class); assertEquals("sign-1", form.getBizSign()); } @Test void bindsBizSignFromRevokeRequestBody() throws Exception { PermissionRevokeForm form = new ObjectMapper().readValue( "{\"biz_sign\":\"sign-1\"}", PermissionRevokeForm.class); assertEquals("sign-1", form.getBizSign()); } }