@Override public void loadChildren(PermissionNode parent, LoadOptions options, LoadCallback callback) { Collection<String> resourceIds = options.getResourceIds(); int maxNodes = options.getMaxNodes(); if (searchService != null) { if (resourceIds != null) { searchService.call((Collection<Project> projects) -> { List<PermissionNode> children = buildPermissionNodes(projects); callback.afterLoad(children); }).searchById(resourceIds); } else { String namePattern = options.getNodeNamePattern(); searchService.call((Collection<Project> projects) -> { List<PermissionNode> children = buildPermissionNodes(projects); callback.afterLoad(children); }).searchByName(namePattern, maxNodes, false); } } else { callback.afterLoad(Collections.emptyList()); } }
@Before public void setup() { permissionManager = new DefaultPermissionManager(); treeProvider = new ProjectTreeProvider(permissionManager, new CallerMock<>(searchService)); rootNode = treeProvider.buildRootNode(); rootNode.setPermissionTree(permissionTree); when(project1.getIdentifier()).thenReturn("p1"); when(project2.getIdentifier()).thenReturn("p2"); when(project1.getProjectName()).thenReturn("p1"); when(project2.getProjectName()).thenReturn("p2"); when(project1.getResourceType()).thenReturn(Project.RESOURCE_TYPE); when(project2.getResourceType()).thenReturn(Project.RESOURCE_TYPE); when(permissionTree.getChildrenResourceIds(any())).thenReturn(null); when(searchService.searchByName(anyString(), anyInt(), anyBoolean())).thenReturn(Arrays.asList(project1, project2)); }
@Test public void testChildrenNodes() { rootNode.expand(children -> { verify(searchService).searchByName(anyString(), anyInt(), anyBoolean()); for (PermissionNode child : children) { List<Permission> permissionList = child.getPermissionList(); assertEquals(permissionList.size(), 4); checkDependencies(child); List<String> permissionNames = permissionList.stream() .map(Permission::getName) .collect(Collectors.toList()); assertTrue(permissionNames.contains("project.read." + child.getNodeName())); assertTrue(permissionNames.contains("project.update." + child.getNodeName())); assertTrue(permissionNames.contains("project.delete." + child.getNodeName())); assertTrue(permissionNames.contains("project.build." + child.getNodeName())); } }); }