private Optional<OrganizationDto> getPersonalOrganization(DbSession dbSession, UserDto user) { String personalOrganizationUuid = user.getOrganizationUuid(); if (personalOrganizationUuid == null) { return Optional.empty(); } return Optional.of(dbClient.organizationDao().selectByUuid(dbSession, personalOrganizationUuid) .orElseThrow(() -> new IllegalStateException(format("Organization uuid '%s' does not exist", personalOrganizationUuid)))); }
public GroupDto findDefaultGroup(DbSession dbSession, String organizationUuid) { int defaultGroupId = dbClient.organizationDao().getDefaultGroupId(dbSession, organizationUuid) .orElseThrow(() -> new IllegalStateException(format("Default group cannot be found on organization '%s'", organizationUuid))); return requireNonNull(dbClient.groupDao().selectById(dbSession, defaultGroupId), format("Group '%s' cannot be found", defaultGroupId)); }
private void verifyGetDefaultTemplates(OrganizationDto organizationDto, @Nullable String expectedProject, @Nullable String expectedView) { Optional<DefaultTemplates> optional = underTest.getDefaultTemplates(dbSession, organizationDto.getUuid()); assertThat(optional).isNotEmpty(); DefaultTemplates defaultTemplates = optional.get(); assertThat(defaultTemplates.getProjectUuid()).isEqualTo(expectedProject); assertThat(defaultTemplates.getApplicationsUuid()).isEqualTo(expectedView); }
private void setDefaultTemplateUuid(DbSession dbSession, PermissionTemplateDto permissionTemplateDto, String qualifier) { String organizationUuid = permissionTemplateDto.getOrganizationUuid(); OrganizationDao organizationDao = dbClient.organizationDao(); DefaultTemplates defaultTemplates = checkFoundWithOptional( organizationDao.getDefaultTemplates(dbSession, organizationUuid), "No Default templates for organization with uuid '%s'", organizationUuid); if (Qualifiers.PROJECT.equals(qualifier)) { defaultTemplates.setProjectUuid(permissionTemplateDto.getUuid()); } else if (Qualifiers.VIEW.equals(qualifier)) { defaultTemplates.setPortfoliosUuid(permissionTemplateDto.getUuid()); } else if (Qualifiers.APP.equals(qualifier)) { defaultTemplates.setApplicationsUuid(permissionTemplateDto.getUuid()); } organizationDao.setDefaultTemplates(dbSession, organizationUuid, defaultTemplates); }
@Test public void deleteByUuid_deletes_row_with_specified_uuid() { insertOrganization(ORGANIZATION_DTO_1); String anotherUuid = "uuid"; insertOrganization(copyOf(ORGANIZATION_DTO_1).setUuid(anotherUuid).setKey("key")); assertThat(db.countRowsOfTable("organizations")).isEqualTo(2); assertThat(underTest.deleteByUuid(dbSession, anotherUuid)).isEqualTo(1); dbSession.commit(); assertThat(underTest.selectByUuid(dbSession, anotherUuid)).isEmpty(); assertThat(underTest.selectByUuid(dbSession, ORGANIZATION_DTO_1.getUuid())).isNotEmpty(); assertThat(db.countRowsOfTable("organizations")).isEqualTo(1); assertThat(underTest.deleteByUuid(dbSession, anotherUuid)).isEqualTo(0); assertThat(underTest.deleteByUuid(dbSession, ORGANIZATION_DTO_1.getUuid())).isEqualTo(1); dbSession.commit(); assertThat(underTest.selectByUuid(dbSession, ORGANIZATION_DTO_1.getUuid())).isEmpty(); assertThat(db.countRowsOfTable("organizations")).isEqualTo(0); }
@Test public void createForUser_creates_default_template_for_new_organization() { UserDto user = db.users().insertUser(dto -> dto.setLogin(A_LOGIN).setName(A_NAME)); when(organizationValidation.generateKeyFrom(A_LOGIN)).thenReturn(SLUG_OF_A_LOGIN); enableCreatePersonalOrg(true); builtInQProfileRepositoryRule.initialize(); db.qualityGates().insertBuiltInQualityGate(); underTest.createForUser(dbSession, user); OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, SLUG_OF_A_LOGIN).get(); int defaultGroupId = dbClient.organizationDao().getDefaultGroupId(dbSession, organization.getUuid()).get(); PermissionTemplateDto defaultTemplate = dbClient.permissionTemplateDao().selectByName(dbSession, organization.getUuid(), "default template"); assertThat(defaultTemplate.getName()).isEqualTo("Default template"); assertThat(defaultTemplate.getDescription()).isEqualTo("Default permission template of organization " + A_NAME); DefaultTemplates defaultTemplates = dbClient.organizationDao().getDefaultTemplates(dbSession, organization.getUuid()).get(); assertThat(defaultTemplates.getProjectUuid()).isEqualTo(defaultTemplate.getUuid()); assertThat(defaultTemplates.getApplicationsUuid()).isNull(); assertThat(dbClient.permissionTemplateDao().selectGroupPermissionsByTemplateId(dbSession, defaultTemplate.getId())) .extracting(PermissionTemplateGroupDto::getGroupId, PermissionTemplateGroupDto::getPermission) .containsOnly( tuple(defaultGroupId, UserRole.USER), tuple(defaultGroupId, UserRole.CODEVIEWER)); assertThat(dbClient.permissionTemplateCharacteristicDao().selectByTemplateIds(dbSession, Collections.singletonList(defaultTemplate.getId()))) .extracting(PermissionTemplateCharacteristicDto::getWithProjectCreator, PermissionTemplateCharacteristicDto::getPermission) .containsOnly( tuple(true, UserRole.ADMIN), tuple(true, UserRole.ISSUE_ADMIN), tuple(true, UserRole.SECURITYHOTSPOT_ADMIN), tuple(true, GlobalPermissions.SCAN_EXECUTION)); }
@CheckForNull private String convertOrganizationKeyToUuid(DbSession dbSession, @Nullable String organizationKey) { if (organizationKey == null) { return null; } Optional<OrganizationDto> organization = dbClient.organizationDao().selectByKey(dbSession, organizationKey); return organization.map(OrganizationDto::getUuid).orElse(UNKNOWN); }
private void insertOrganization(OrganizationDto dto) { underTest.insert(dbSession, dto, false); dbSession.commit(); }
@Test public void getDefaultGroupId_returns_data_when_default_group_id_is_not_null() { when(system2.now()).thenReturn(DATE_3); insertOrganization(ORGANIZATION_DTO_1); underTest.setDefaultGroupId(dbSession, ORGANIZATION_DTO_1.getUuid(), GroupTesting.newGroupDto().setId(10)); Optional<Integer> optional = underTest.getDefaultGroupId(dbSession, ORGANIZATION_DTO_1.getUuid()); assertThat(optional).isNotEmpty(); assertThat(optional.get()).isEqualTo(10); verifyOrganizationUpdatedAt(ORGANIZATION_DTO_1.getUuid(), DATE_3); }
@Override public void handle(Request request, Response response) throws Exception { String organizationKey = request.mandatoryParam(PARAM_ORGANIZATION); try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = checkFoundWithOptional( dbClient.organizationDao().selectByKey(dbSession, organizationKey), "No organization with key '%s'", organizationKey); if (organization.getSubscription() == PAID) { // If the organization is PAID without any public project then // the organization is only visible to members ComponentQuery query = ComponentQuery.builder() .setQualifiers(Qualifiers.PROJECT) .setPrivate(false) .build(); if (dbClient.componentDao().countByQuery(dbSession, organization.getUuid(), query) == 0) { userSession.checkMembership(organization); } } boolean newProjectPrivate = dbClient.organizationDao().getNewProjectPrivate(dbSession, organization); JsonWriter json = response.newJsonWriter(); json.beginObject(); writeOrganization(json, organization, dbClient.organizationAlmBindingDao().selectByOrganization(dbSession, organization), newProjectPrivate); json.endObject() .close(); } }
public GroupDto create(DbSession dbSession, String organizationUuid) { Optional<GroupDto> existingMembersGroup = dbClient.groupDao().selectByName(dbSession, organizationUuid, DEFAULT_GROUP_NAME); checkArgument(!existingMembersGroup.isPresent(), "The group '%s' already exist on organization '%s'", DEFAULT_GROUP_NAME, organizationUuid); GroupDto defaultGroup = new GroupDto() .setName(DEFAULT_GROUP_NAME) .setDescription("All members of the organization") .setOrganizationUuid(organizationUuid); dbClient.groupDao().insert(dbSession, defaultGroup); dbClient.organizationDao().setDefaultGroupId(dbSession, organizationUuid, defaultGroup); return defaultGroup; }
public boolean getNewProjectPrivate(OrganizationDto organization) { return dbTester.getDbClient().organizationDao().getNewProjectPrivate(dbTester.getSession(), organization); } }
@Test public void request_creates_default_template_for_owner_group() { UserDto user = db.users().insertUser(); userSession.logIn(user).setSystemAdministrator(); db.qualityGates().insertBuiltInQualityGate(); executeRequest("orgFoo"); OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, "orgfoo").get(); GroupDto ownersGroup = dbClient.groupDao().selectByName(dbSession, organization.getUuid(), "Owners").get(); GroupDto defaultGroup = dbClient.groupDao().selectByName(dbSession, organization.getUuid(), "Members").get(); PermissionTemplateDto defaultTemplate = dbClient.permissionTemplateDao().selectByName(dbSession, organization.getUuid(), "default template"); assertThat(defaultTemplate.getName()).isEqualTo("Default template"); assertThat(defaultTemplate.getDescription()).isEqualTo("Default permission template of organization orgFoo"); DefaultTemplates defaultTemplates = dbClient.organizationDao().getDefaultTemplates(dbSession, organization.getUuid()).get(); assertThat(defaultTemplates.getProjectUuid()).isEqualTo(defaultTemplate.getUuid()); assertThat(defaultTemplates.getApplicationsUuid()).isNull(); assertThat(dbClient.permissionTemplateDao().selectGroupPermissionsByTemplateId(dbSession, defaultTemplate.getId())) .extracting(PermissionTemplateGroupDto::getGroupId, PermissionTemplateGroupDto::getPermission) .containsOnly( tuple(ownersGroup.getId(), UserRole.ADMIN), tuple(ownersGroup.getId(), UserRole.ISSUE_ADMIN), tuple(ownersGroup.getId(), UserRole.SECURITYHOTSPOT_ADMIN), tuple(ownersGroup.getId(), GlobalPermissions.SCAN_EXECUTION), tuple(defaultGroup.getId(), UserRole.USER), tuple(defaultGroup.getId(), UserRole.CODEVIEWER)); }
private Set<String> searchOrganizationWithAdminPermission(DbSession dbSession) { Integer userId = userSession.getUserId(); return userId == null ? emptySet() : dbClient.organizationDao().selectByPermission(dbSession, userId, ADMINISTER.getKey()).stream().map(OrganizationDto::getUuid).collect(toSet()); }
@Override public void handle(Request request, Response response) throws Exception { boolean onlyMembershipOrganizations = request.mandatoryParamAsBoolean(PARAM_MEMBER); if (onlyMembershipOrganizations) { userSession.checkLoggedIn(); } try (DbSession dbSession = dbClient.openSession(false)) { OrganizationQuery dbQuery = buildDbQuery(request); int total = dbClient.organizationDao().countByQuery(dbSession, dbQuery); Paging paging = buildWsPaging(request, total); List<OrganizationDto> organizations = dbClient.organizationDao().selectByQuery(dbSession, dbQuery, forPage(paging.getPageIndex()).andSize(paging.getPageSize())); Set<String> adminOrganizationUuids = searchOrganizationWithAdminPermission(dbSession); Set<String> provisionOrganizationUuids = searchOrganizationWithProvisionPermission(dbSession); Map<String, OrganizationAlmBindingDto> organizationAlmBindingByOrgUuid = dbClient.organizationAlmBindingDao().selectByOrganizations(dbSession, organizations) .stream().collect(MoreCollectors.uniqueIndex(OrganizationAlmBindingDto::getOrganizationUuid)); Organizations.SearchWsResponse wsResponse = buildOrganizations(organizations, adminOrganizationUuids, provisionOrganizationUuids, organizationAlmBindingByOrgUuid, onlyMembershipOrganizations, paging); writeProtobuf(wsResponse, request, response); } }
@Test public void deleteByUuid_does_not_fail_on_empty_table() { assertThat(underTest.deleteByUuid(dbSession, "uuid")).isEqualTo(0); dbSession.commit(); }
@Test public void countByQuery() { insertOrganization(copyOf(ORGANIZATION_DTO_1).setUuid("uuid3").setKey("key-3")); insertOrganization(copyOf(ORGANIZATION_DTO_1).setUuid("uuid1").setKey("key-1")); insertOrganization(copyOf(ORGANIZATION_DTO_1).setUuid("uuid2").setKey("key-2")); insertOrganization(copyOf(ORGANIZATION_DTO_1).setUuid("uuid5").setKey("key-5")); insertOrganization(copyOf(ORGANIZATION_DTO_1).setUuid("uuid4").setKey("key-4")); assertThat(underTest.countByQuery(dbSession, returnAll())).isEqualTo(5); assertThat(underTest.countByQuery(dbSession, newQueryWithKeys("key-1", "key-2"))).isEqualTo(2); assertThat(underTest.countByQuery(dbSession, newQueryWithKeys("unknown"))).isZero(); }
@Test public void create_creates_default_template_for_new_organization() throws OrganizationUpdater.KeyConflictException { builtInQProfileRepositoryRule.initialize(); UserDto user = db.users().insertUser(); db.qualityGates().insertBuiltInQualityGate(); underTest.create(dbSession, user, FULL_POPULATED_NEW_ORGANIZATION, EMPTY_ORGANIZATION_CONSUMER); OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, FULL_POPULATED_NEW_ORGANIZATION.getKey()).get(); GroupDto ownersGroup = dbClient.groupDao().selectByName(dbSession, organization.getUuid(), "Owners").get(); int defaultGroupId = dbClient.organizationDao().getDefaultGroupId(dbSession, organization.getUuid()).get(); PermissionTemplateDto defaultTemplate = dbClient.permissionTemplateDao().selectByName(dbSession, organization.getUuid(), "default template"); assertThat(defaultTemplate.getName()).isEqualTo("Default template"); assertThat(defaultTemplate.getDescription()).isEqualTo("Default permission template of organization " + FULL_POPULATED_NEW_ORGANIZATION.getName()); DefaultTemplates defaultTemplates = dbClient.organizationDao().getDefaultTemplates(dbSession, organization.getUuid()).get(); assertThat(defaultTemplates.getProjectUuid()).isEqualTo(defaultTemplate.getUuid()); assertThat(defaultTemplates.getApplicationsUuid()).isNull(); assertThat(dbClient.permissionTemplateDao().selectGroupPermissionsByTemplateId(dbSession, defaultTemplate.getId())) .extracting(PermissionTemplateGroupDto::getGroupId, PermissionTemplateGroupDto::getPermission) .containsOnly( tuple(ownersGroup.getId(), UserRole.ADMIN), tuple(ownersGroup.getId(), UserRole.ISSUE_ADMIN), tuple(ownersGroup.getId(), UserRole.SECURITYHOTSPOT_ADMIN), tuple(ownersGroup.getId(), GlobalPermissions.SCAN_EXECUTION), tuple(defaultGroupId, UserRole.USER), tuple(defaultGroupId, UserRole.CODEVIEWER)); }
private OrganizationDto getDto(DbSession dbSession, String key) { Optional<OrganizationDto> organizationDto = dbClient.organizationDao().selectByKey(dbSession, key); if (!organizationDto.isPresent()) { throw new NotFoundException(format("Organization not found for key '%s'", (Object) key)); } return organizationDto.get(); }
public void start() { Profiler profiler = Profiler.create(Loggers.get(getClass())).startInfo("Register permission templates"); try (DbSession dbSession = dbClient.openSession(false)) { String defaultOrganizationUuid = defaultOrganizationProvider.get().getUuid(); Optional<DefaultTemplates> defaultTemplates = dbClient.organizationDao().getDefaultTemplates(dbSession, defaultOrganizationUuid); if (!defaultTemplates.isPresent()) { PermissionTemplateDto defaultTemplate = getOrInsertDefaultTemplate(dbSession, defaultOrganizationUuid); dbClient.organizationDao().setDefaultTemplates(dbSession, defaultOrganizationUuid, new DefaultTemplates().setProjectUuid(defaultTemplate.getUuid())); dbSession.commit(); } } profiler.stopDebug(); }