private boolean isNotDeletable(ComponentDto project) { ResourceType resourceType = resourceTypes.get(project.qualifier()); return resourceType == null || !resourceType.getBooleanProperty("deletable"); } }
private static Set<String> getAllQualifiers(ResourceTypes resourceTypes) { return resourceTypes.getAll().stream() .map(ResourceType::getQualifier) .collect(Collectors.toCollection(TreeSet::new)); }
@CheckForNull private List<String> childrenQualifiers(Request request, String baseQualifier) { List<String> requestQualifiers = request.getQualifiers(); List<String> childrenQualifiers = null; if (LEAVES_STRATEGY.equals(request.getStrategy())) { childrenQualifiers = resourceTypes.getLeavesQualifiers(baseQualifier); } if (requestQualifiers == null) { return childrenQualifiers; } if (childrenQualifiers == null) { return requestQualifiers; } Sets.SetView<String> qualifiersIntersection = Sets.intersection(new HashSet<>(childrenQualifiers), new HashSet<>(requestQualifiers)); return new ArrayList<>(qualifiersIntersection); }
public SearchProjectPermissionsAction(DbClient dbClient, UserSession userSession, I18n i18n, ResourceTypes resourceTypes, PermissionWsSupport wsSupport, PermissionService permissionService) { this.dbClient = dbClient; this.userSession = userSession; this.i18n = i18n; this.resourceTypes = resourceTypes; this.wsSupport = wsSupport; this.rootQualifiers = Collections2.transform(resourceTypes.getRoots(), ResourceType::getQualifier).toArray(new String[resourceTypes.getRoots().size()]); this.permissionService = permissionService; }
public List<String> getLeavesQualifiers(String qualifier) { ResourceTypeTree tree = getTree(qualifier); if (tree != null) { return tree.getLeaves(); } return Collections.emptyList(); }
public PermissionServiceImpl(ResourceTypes resourceTypes) { globalPermissions = ImmutableList.copyOf(ALL_GLOBAL_PERMISSIONS.stream() .filter(s -> !s.equals(OrganizationPermission.APPLICATION_CREATOR) || resourceTypes.isQualifierPresent(Qualifiers.APP)) .filter(s -> !s.equals(OrganizationPermission.PORTFOLIO_CREATOR) || resourceTypes.isQualifierPresent(Qualifiers.VIEW)) .collect(toList())); projectPermissions = ImmutableList.copyOf(ALL_PROJECT_PERMISSIONS.stream() .filter(s -> !s.equals(OrganizationPermission.APPLICATION_CREATOR.getKey()) || resourceTypes.isQualifierPresent(Qualifiers.APP)) .filter(s -> !s.equals(OrganizationPermission.PORTFOLIO_CREATOR.getKey()) || resourceTypes.isQualifierPresent(Qualifiers.VIEW)) .collect(toList())); }
private void init(org.sonar.api.web.page.Page[] pages, ResourceTypeTree[] resourceTypeTrees) { when(dbClient.getDatabase().getDialect()).thenReturn(new H2()); when(server.getVersion()).thenReturn("6.42"); PluginRepository pluginRepository = mock(PluginRepository.class); when(pluginRepository.hasPlugin(any())).thenReturn(true); when(pluginRepository.getPluginInfo(any())).thenReturn(new PluginInfo("unused").setVersion(Version.create("1.0"))); CoreExtensionRepository coreExtensionRepository = mock(CoreExtensionRepository.class); when(coreExtensionRepository.isInstalled(any())).thenReturn(false); PageRepository pageRepository = new PageRepository(pluginRepository, coreExtensionRepository, new PageDefinition[] {context -> { for (Page page : pages) { context.addPage(page); } }}); pageRepository.start(); GlobalAction wsAction = new GlobalAction(pageRepository, settings.asConfig(), new ResourceTypes(resourceTypeTrees), server, webServer, dbClient, organizationFlags, defaultOrganizationProvider, branchFeature, userSession, editionProvider); ws = new WsActionTester(wsAction); wsAction.start(); }
private static boolean isViewsEnabled(ResourceTypes resourceTypes) { return resourceTypes.getRoots() .stream() .map(ResourceType::getQualifier) .anyMatch(Qualifiers.VIEW::equals); }
public List<String> getChildrenQualifiers(String qualifier) { ResourceTypeTree tree = getTree(qualifier); if (tree != null) { return tree.getChildren(qualifier); } return Collections.emptyList(); }
@Test public void isQualifierPresent() { assertThat(types.isQualifierPresent(Qualifiers.APP)).isTrue(); assertThat(types.isQualifierPresent(Qualifiers.VIEW)).isTrue(); assertThat(types.isQualifierPresent("XXXX")).isFalse(); }
@Test(expected = IllegalStateException.class) public void fail_on_duplicated_qualifier() { ResourceTypeTree tree1 = ResourceTypeTree.builder() .addType(ResourceType.builder("foo").build()) .build(); ResourceTypeTree tree2 = ResourceTypeTree.builder() .addType(ResourceType.builder("foo").build()) .build(); new ResourceTypes(new ResourceTypeTree[] {tree1, tree2}); }
private boolean componentTypeHasProperty(ComponentDto component, String resourceTypeProperty) { ResourceType resourceType = resourceTypes.get(component.qualifier()); return resourceType != null && resourceType.getBooleanProperty(resourceTypeProperty); }
private static Set<String> getRootQualifiers(ResourceTypes resourceTypes) { return resourceTypes.getRoots().stream() .map(ResourceType::getQualifier) .collect(Collectors.toCollection(TreeSet::new)); }
public List<String> getLeavesQualifiers(String qualifier) { ResourceTypeTree tree = getTree(qualifier); if (tree != null) { return tree.getLeaves(); } return Collections.emptyList(); }
private List<String> getQualifiers(@Nullable String more) { Set<String> availableQualifiers = resourceTypes.getAll().stream() .map(ResourceType::getQualifier) .filter(q -> !q.equals(Qualifiers.MODULE)) .collect(MoreCollectors.toSet()); if (more == null) { return stream(SuggestionCategory.values()) .map(SuggestionCategory::getQualifier) .filter(availableQualifiers::contains) .collect(Collectors.toList()); } String qualifier = SuggestionCategory.getByName(more).getQualifier(); return availableQualifiers.contains(qualifier) ? singletonList(qualifier) : emptyList(); }
@CheckForNull private List<String> childrenQualifiers(ComponentTreeRequest request, String baseQualifier) { List<String> requestQualifiers = request.getQualifiers(); List<String> childrenQualifiers = null; if (LEAVES_STRATEGY.equals(request.getStrategy())) { childrenQualifiers = resourceTypes.getLeavesQualifiers(baseQualifier); } if (requestQualifiers == null) { return childrenQualifiers; } if (childrenQualifiers == null) { return requestQualifiers; } Sets.SetView<String> qualifiersIntersection = Sets.intersection(new HashSet<>(childrenQualifiers), new HashSet<Object>(requestQualifiers)); return new ArrayList<>(qualifiersIntersection); }
@Test public void insert_default_permission_template_if_fresh_install_with_governance() { GroupDto defaultGroup = createAndSetDefaultGroup(); db.users().insertGroup(db.getDefaultOrganization(), DefaultGroups.ADMINISTRATORS); when(resourceTypes.isQualifierPresent(eq(Qualifiers.APP))).thenReturn(true); when(resourceTypes.isQualifierPresent(eq(Qualifiers.VIEW))).thenReturn(true); underTest.start(); PermissionTemplateDto defaultTemplate = selectTemplate(); assertThat(defaultTemplate.getName()).isEqualTo("Default template"); List<PermissionTemplateGroupDto> groupPermissions = selectGroupPermissions(defaultTemplate); assertThat(groupPermissions).hasSize(7); expectGroupPermission(groupPermissions, UserRole.ADMIN, DefaultGroups.ADMINISTRATORS); expectGroupPermission(groupPermissions, UserRole.ISSUE_ADMIN, DefaultGroups.ADMINISTRATORS); expectGroupPermission(groupPermissions, UserRole.SECURITYHOTSPOT_ADMIN, DefaultGroups.ADMINISTRATORS); expectGroupPermission(groupPermissions, OrganizationPermission.APPLICATION_CREATOR.getKey(), DefaultGroups.ADMINISTRATORS); expectGroupPermission(groupPermissions, OrganizationPermission.PORTFOLIO_CREATOR.getKey(), DefaultGroups.ADMINISTRATORS); expectGroupPermission(groupPermissions, UserRole.CODEVIEWER, defaultGroup.getName()); expectGroupPermission(groupPermissions, UserRole.USER, defaultGroup.getName()); verifyDefaultTemplates(); assertThat(logTester.logs(LoggerLevel.ERROR)).isEmpty(); }
private void mockResourceTypeAsValidProject() { ResourceType resourceType = mock(ResourceType.class); when(resourceType.getBooleanProperty(anyString())).thenReturn(true); when(mockResourceTypes.get(anyString())).thenReturn(resourceType); }
private static Set<String> getDefaultTemplateQualifiers(ResourceTypes resourceTypes) { return resourceTypes.getRoots().stream() .map(ResourceType::getQualifier) .collect(Collectors.toCollection(TreeSet::new)); }
public List<String> getLeavesQualifiers(String qualifier) { ResourceTypeTree tree = getTree(qualifier); if (tree != null) { return tree.getLeaves(); } return Collections.emptyList(); }