Organization.Builder toOrganization(OrganizationDto dto) { Organization.Builder builder = Organization.newBuilder(); builder .setName(dto.getName()) .setKey(dto.getKey()) .setGuarded(dto.isGuarded()); ofNullable(dto.getDescription()).ifPresent(builder::setDescription); ofNullable(dto.getUrl()).ifPresent(builder::setUrl); ofNullable(dto.getAvatarUrl()).ifPresent(builder::setAvatar); return builder; } }
@Test public void insert_persists_boolean_property_guarded_of_OrganizationDto() { insertOrganization(ORGANIZATION_DTO_2); Map<String, Object> row = selectSingleRow(); assertThat(row.get("guarded")).isEqualTo(toBool(ORGANIZATION_DTO_2.isGuarded())); }
private void verifyOrganization(OrganizationDto dto, OrganizationDto expected) { assertThat(dto.getUuid()).isEqualTo(expected.getUuid()); assertThat(dto.getKey()).isEqualTo(expected.getKey()); assertThat(dto.getName()).isEqualTo(expected.getName()); assertThat(dto.getDescription()).isEqualTo(expected.getDescription()); assertThat(dto.getUrl()).isEqualTo(expected.getUrl()); assertThat(dto.isGuarded()).isEqualTo(expected.isGuarded()); assertThat(dto.getAvatarUrl()).isEqualTo(expected.getAvatarUrl()); assertThat(dto.getSubscription()).isEqualTo(expected.getSubscription()); assertThat(dto.getCreatedAt()).isEqualTo(expected.getCreatedAt()); assertThat(dto.getUpdatedAt()).isEqualTo(expected.getUpdatedAt()); }
private void verifyOrganization1(OrganizationDto dto) { assertThat(dto.getUuid()).isEqualTo(ORGANIZATION_DTO_1.getUuid()); assertThat(dto.getKey()).isEqualTo(ORGANIZATION_DTO_1.getKey()); assertThat(dto.getName()).isEqualTo(ORGANIZATION_DTO_1.getName()); assertThat(dto.getDescription()).isEqualTo(ORGANIZATION_DTO_1.getDescription()); assertThat(dto.getUrl()).isEqualTo(ORGANIZATION_DTO_1.getUrl()); assertThat(dto.isGuarded()).isEqualTo(ORGANIZATION_DTO_1.isGuarded()); assertThat(dto.getAvatarUrl()).isEqualTo(ORGANIZATION_DTO_1.getAvatarUrl()); assertThat(dto.getCreatedAt()).isEqualTo(ORGANIZATION_DTO_1.getCreatedAt()); assertThat(dto.getUpdatedAt()).isEqualTo(ORGANIZATION_DTO_1.getUpdatedAt()); }
@Test public void insert_persists_properties_of_OrganizationDto() { OrganizationDto organization = newOrganizationDto(); insertOrganization(organization); Map<String, Object> row = selectSingleRow(); assertThat(row.get("uuid")).isEqualTo(organization.getUuid()); assertThat(row.get("key")).isEqualTo(organization.getKey()); assertThat(row.get("name")).isEqualTo(organization.getName()); assertThat(row.get("description")).isEqualTo(organization.getDescription()); assertThat(row.get("url")).isEqualTo(organization.getUrl()); assertThat(row.get("avatarUrl")).isEqualTo(organization.getAvatarUrl()); assertThat(row.get("createdAt")).isEqualTo(organization.getCreatedAt()); assertThat(row.get("updatedAt")).isEqualTo(organization.getUpdatedAt()); assertThat(row.get("guarded")).isEqualTo(toBool(organization.isGuarded())); assertThat(row.get("subscription")).isEqualTo(organization.getSubscription().name()); assertThat(row.get("defaultTemplate")).isNull(); assertThat(row.get("projectDefaultTemplate")).isNull(); assertThat(row.get("viewDefaultTemplate")).isNull(); }
@Test public void description_url_avatarUrl_and_userId_are_optional() { when(system2.now()).thenReturn(SOME_DATE); insertOrganization(copyOf(ORGANIZATION_DTO_1).setDescription(null).setUrl(null).setAvatarUrl(null)); Map<String, Object> row = selectSingleRow(); assertThat(row.get("uuid")).isEqualTo(ORGANIZATION_DTO_1.getUuid()); assertThat(row.get("key")).isEqualTo(ORGANIZATION_DTO_1.getKey()); assertThat(row.get("name")).isEqualTo(ORGANIZATION_DTO_1.getName()); assertThat(row.get("description")).isNull(); assertThat(row.get("url")).isNull(); assertThat(row.get("avatarUrl")).isNull(); assertThat(row.get("guarded")).isEqualTo(toBool(ORGANIZATION_DTO_1.isGuarded())); assertThat(row.get("userId")).isNull(); assertThat(row.get("createdAt")).isEqualTo(SOME_DATE); assertThat(row.get("updatedAt")).isEqualTo(SOME_DATE); assertThat(row.get("defaultTemplate")).isNull(); assertThat(row.get("projectDefaultTemplate")).isNull(); assertThat(row.get("viewDefaultTemplate")).isNull(); }
private static Organization.Builder toOrganization(Organization.Builder builder, OrganizationDto organization, @Nullable OrganizationAlmBindingDto organizationAlmBinding, boolean onlyMembershipOrganizations) { builder .setName(organization.getName()) .setKey(organization.getKey()) .setGuarded(organization.isGuarded()); ofNullable(organization.getDescription()).ifPresent(builder::setDescription); ofNullable(organization.getUrl()).ifPresent(builder::setUrl); ofNullable(organization.getAvatarUrl()).ifPresent(builder::setAvatar); if (onlyMembershipOrganizations && organizationAlmBinding != null) { builder.setAlm(Organization.Alm.newBuilder() .setKey(organizationAlmBinding.getAlm().getId()) .setUrl(organizationAlmBinding.getUrl())); } if (onlyMembershipOrganizations) { builder.setSubscription(Organizations.Subscription.valueOf(organization.getSubscription().name())); } return builder; }
private Organizations.SearchWsResponse buildOrganizations(List<OrganizationDto> organizations, Set<String> adminOrganizationUuids, Set<String> provisionOrganizationUuids, Map<String, OrganizationAlmBindingDto> organizationAlmBindingByOrgUuid, boolean onlyMembershipOrganizations, Paging paging) { Organizations.SearchWsResponse.Builder response = Organizations.SearchWsResponse.newBuilder(); response.setPaging(paging); Organization.Builder wsOrganization = Organization.newBuilder(); organizations .forEach(o -> { wsOrganization.clear(); boolean isAdmin = userSession.isRoot() || adminOrganizationUuids.contains(o.getUuid()); boolean canProvision = userSession.isRoot() || provisionOrganizationUuids.contains(o.getUuid()); wsOrganization.setActions(Organization.Actions.newBuilder() .setAdmin(isAdmin) .setProvision(canProvision) .setDelete(o.isGuarded() ? userSession.isRoot() : isAdmin)); response.addOrganizations(toOrganization(wsOrganization, o, organizationAlmBindingByOrgUuid.get(o.getUuid()), onlyMembershipOrganizations)); }); return response.build(); }
@Test public void create_creates_unguarded_organization_with_properties_from_NewOrganization_arg() 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(); assertThat(organization.getUuid()).isNotEmpty(); assertThat(organization.getKey()).isEqualTo(FULL_POPULATED_NEW_ORGANIZATION.getKey()); assertThat(organization.getName()).isEqualTo(FULL_POPULATED_NEW_ORGANIZATION.getName()); assertThat(organization.getDescription()).isEqualTo(FULL_POPULATED_NEW_ORGANIZATION.getDescription()); assertThat(organization.getUrl()).isEqualTo(FULL_POPULATED_NEW_ORGANIZATION.getUrl()); assertThat(organization.getAvatarUrl()).isEqualTo(FULL_POPULATED_NEW_ORGANIZATION.getAvatar()); assertThat(organization.isGuarded()).isFalse(); assertThat(organization.getSubscription()).isEqualTo(Subscription.FREE); assertThat(organization.getCreatedAt()).isEqualTo(A_DATE); assertThat(organization.getUpdatedAt()).isEqualTo(A_DATE); }
@Test public void createForUser_creates_guarded_organization_with_key_name_and_description_generated_from_user_login_and_name_and_associated_to_user() { UserDto user = db.users().insertUser(A_LOGIN); 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(); assertThat(organization.getUuid()).isNotEmpty(); assertThat(organization.getKey()).isEqualTo(SLUG_OF_A_LOGIN); assertThat(organization.getName()).isEqualTo(user.getName()); assertThat(organization.getDescription()).isEqualTo(user.getName() + "'s personal organization"); assertThat(organization.getUrl()).isNull(); assertThat(organization.getAvatarUrl()).isNull(); assertThat(organization.isGuarded()).isTrue(); assertThat(organization.getSubscription()).isEqualTo(Subscription.FREE); assertThat(organization.getCreatedAt()).isEqualTo(A_DATE); assertThat(organization.getUpdatedAt()).isEqualTo(A_DATE); assertThat(db.getDbClient().userDao().selectByUuid(dbSession, user.getUuid()).getOrganizationUuid()).isEqualTo(organization.getUuid()); }
@Test public void create_does_not_require_description_url_and_avatar_to_be_non_null() throws OrganizationUpdater.KeyConflictException { builtInQProfileRepositoryRule.initialize(); UserDto user = db.users().insertUser(); db.qualityGates().insertBuiltInQualityGate(); underTest.create(dbSession, user, newOrganizationBuilder() .setKey("key") .setName("name") .build(), EMPTY_ORGANIZATION_CONSUMER); OrganizationDto organization = dbClient.organizationDao().selectByKey(dbSession, "key").get(); assertThat(organization.getKey()).isEqualTo("key"); assertThat(organization.getName()).isEqualTo("name"); assertThat(organization.getDescription()).isNull(); assertThat(organization.getUrl()).isNull(); assertThat(organization.getAvatarUrl()).isNull(); assertThat(organization.isGuarded()).isFalse(); }
@Override public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn(); try (DbSession dbSession = dbClient.openSession(false)) { organizationFlags.checkEnabled(dbSession); String key = request.mandatoryParam(PARAM_ORGANIZATION); preventDeletionOfDefaultOrganization(key, defaultOrganizationProvider.get()); OrganizationDto organization = checkFoundWithOptional(dbClient.organizationDao().selectByKey(dbSession, key), "Organization with key '%s' not found", key); if (organization.isGuarded()) { userSession.checkIsSystemAdministrator(); } else { userSession.checkPermission(ADMINISTER, organization); } deleteProjects(dbSession, organization); deletePermissions(dbSession, organization); deleteGroups(dbSession, organization); deleteQualityProfiles(dbSession, organization); deleteQualityGates(dbSession, organization); deleteOrganizationAlmBinding(dbSession, organization); deleteOrganization(dbSession, organization); billingValidations.onDelete(new BillingValidations.Organization(organization.getKey(), organization.getUuid(), organization.getName())); response.noContent(); } }
Organization.Builder toOrganization(Organization.Builder builder, OrganizationDto dto) { builder .setName(dto.getName()) .setKey(dto.getKey()) .setGuarded(dto.isGuarded()); setNullable(dto.getDescription(), builder::setDescription); setNullable(dto.getUrl(), builder::setUrl); setNullable(dto.getAvatarUrl(), builder::setAvatar); return builder; } }
private void writeOrganization(JsonWriter json, OrganizationDto organization, boolean newProjectPrivate) { json.name("organization") .beginObject() .prop("canAdmin", userSession.hasPermission(ADMINISTER, organization)) .prop("canProvisionProjects", userSession.hasPermission(PROVISION_PROJECTS, organization)) .prop("canDelete", organization.isGuarded() ? userSession.isSystemAdministrator() : userSession.hasPermission(ADMINISTER, organization)) .prop("isDefault", organization.getKey().equals(defaultOrganizationProvider.get().getKey())) .prop("projectVisibility", Visibility.getLabel(newProjectPrivate)) .prop("canUpdateProjectsVisibilityToPrivate", userSession.hasPermission(ADMINISTER, organization) && billingValidations.canUpdateProjectVisibilityToPrivate(new BillingValidations.Organization(organization.getKey(), organization.getUuid()))); json.name("pages"); writePages(json, pageRepository.getOrganizationPages(false)); if (userSession.hasPermission(ADMINISTER, organization)) { json.name("adminPages"); writePages(json, pageRepository.getOrganizationPages(true)); } json.endObject(); }
@Override public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn(); try (DbSession dbSession = dbClient.openSession(false)) { organizationFlags.checkEnabled(dbSession); String key = request.mandatoryParam(PARAM_ORGANIZATION); preventDeletionOfDefaultOrganization(key, defaultOrganizationProvider.get()); OrganizationDto organization = checkFoundWithOptional(dbClient.organizationDao().selectByKey(dbSession, key), "Organization with key '%s' not found", key); if (organization.isGuarded()) { userSession.checkIsSystemAdministrator(); } else { userSession.checkPermission(ADMINISTER, organization); } deleteProjects(dbSession, organization); deletePermissions(dbSession, organization); deleteGroups(dbSession, organization); deleteQualityProfiles(dbSession, organization); deleteQualityGates(dbSession, organization); deleteOrganization(dbSession, organization); billingValidations.onDelete(new BillingValidations.Organization(organization.getKey(), organization.getUuid())); response.noContent(); } }