private List<GroupPermissionDto> findGroupPermissions(DbSession dbSession, OrganizationDto org, List<GroupDto> groups, Optional<ProjectId> project) { if (groups.isEmpty()) { return emptyList(); } List<Integer> ids = groups.stream().map(GroupDto::getId).collect(MoreCollectors.toList(groups.size())); return dbClient.groupPermissionDao().selectByGroupIds(dbSession, org.getUuid(), ids, project.isPresent() ? project.get().getId() : null); } }
static Components.Component.Builder componentDtoToWsComponent(ComponentDto dto, OrganizationDto organizationDto, Optional<SnapshotDto> lastAnalysis) { checkArgument( Objects.equals(dto.getOrganizationUuid(), organizationDto.getUuid()), "OrganizationUuid (%s) of ComponentDto to convert to Ws Component is not the same as the one (%s) of the specified OrganizationDto", dto.getOrganizationUuid(), organizationDto.getUuid()); return componentDtoToWsComponent(dto, organizationDto.getKey(), lastAnalysis); }
public void checkMembership(DbSession dbSession, OrganizationDto organization, UserId user) { checkArgument(dbClient.organizationMemberDao().select(dbSession, organization.getUuid(), user.getId()).isPresent(), "User '%s' is not member of organization '%s'", user.getLogin(), organization.getKey()); } }
private void deleteOrganization(DbSession dbSession, OrganizationDto organization) { Collection<String> uuids = dbClient.organizationMemberDao().selectUserUuidsByOrganizationUuid(dbSession, organization.getUuid()); dbClient.organizationMemberDao().deleteByOrganizationUuid(dbSession, organization.getUuid()); dbClient.organizationDao().deleteByUuid(dbSession, organization.getUuid()); dbClient.userDao().cleanHomepage(dbSession, organization); dbClient.webhookDao().selectByOrganizationUuid(dbSession, organization.getUuid()) .forEach(wh -> dbClient.webhookDeliveryDao().deleteByWebhook(dbSession, wh)); dbClient.webhookDao().deleteByOrganization(dbSession, organization); List<UserDto> users = dbClient.userDao().selectByUuids(dbSession, uuids); userIndexer.commitAndIndex(dbSession, users); }
private void insertOrganizationMember(DbSession dbSession, OrganizationDto organizationDto, int userId) { dbClient.organizationMemberDao().insert(dbSession, new OrganizationMemberDto() .setOrganizationUuid(organizationDto.getUuid()) .setUserId(userId)); } }
@Test public void execute_does_no_fail_when_organization_is_allowed_to_execute_analysis() { ArgumentCaptor<BillingValidations.Organization> orgCaptor = ArgumentCaptor.forClass(BillingValidations.Organization.class); VerifyBillingStep underTest = new VerifyBillingStep(analysisMetadata, validations); underTest.execute(new TestComputationStepContext()); verify(validations).checkBeforeProjectAnalysis(orgCaptor.capture()); BillingValidations.Organization calledOrg = orgCaptor.getValue(); assertThat(calledOrg.getKey()).isEqualTo(organization.getKey()); assertThat(calledOrg.getUuid()).isEqualTo(organization.getUuid()); assertThat(calledOrg.getName()).isEqualTo(organization.getName()); }
@Test public void update_personal_organization() { OrganizationDto organization = db.organizations().insert(o -> o.setKey("old login")); when(organizationValidation.generateKeyFrom("new_login")).thenReturn("new_login"); underTest.updateOrganizationKey(dbSession, organization, "new_login"); OrganizationDto organizationReloaded = dbClient.organizationDao().selectByUuid(dbSession, organization.getUuid()).get(); assertThat(organizationReloaded.getKey()).isEqualTo("new_login"); }
@Test public void does_not_update_personal_organization_when_generated_organization_key_does_not_change() { OrganizationDto organization = db.organizations().insert(o -> o.setKey("login")); when(organizationValidation.generateKeyFrom("Login")).thenReturn("login"); underTest.updateOrganizationKey(dbSession, organization, "Login"); OrganizationDto organizationReloaded = dbClient.organizationDao().selectByUuid(dbSession, organization.getUuid()).get(); assertThat(organizationReloaded.getKey()).isEqualTo("login"); }
@Test public void selectByKeys_populates_organizationUuid_even_when_organization_has_no_metadata() { OrganizationDto organization = db.organizations().insert(); RuleDefinitionDto rule = db.rules().insert(); assertThat(underTest.selectByKeys(db.getSession(), organization.getUuid(), singletonList(rule.getKey()))) .extracting(RuleDto::getOrganizationUuid) .containsExactly(organization.getUuid()); }
/** * Create a profile with random field values on the specified organization. */ public QProfileDto insert(OrganizationDto organization, Consumer<QProfileDto> consumer) { QProfileDto profile = QualityProfileTesting.newQualityProfileDto() .setOrganizationUuid(organization.getUuid()); consumer.accept(profile); dbClient.qualityProfileDao().insert(dbSession, profile); dbSession.commit(); return profile; }
@Test public void should_not_selectByLanguage_in_wrong_organization() { QProfileDto profile = QualityProfileTesting.newQualityProfileDto() .setOrganizationUuid(organization.getUuid()); underTest.insert(dbSession, profile); List<QProfileDto> results = underTest.selectByLanguage(dbSession, OrganizationTesting.newOrganizationDto(), profile.getLanguage()); assertThat(results).isEmpty(); }
private static ComponentQuery buildEsQuery(OrganizationDto organization, SearchRequest request) { return ComponentQuery.builder() .setQuery(request.getQuery()) .setOrganization(organization.getUuid()) .setLanguage(request.getLanguage()) .setQualifiers(request.getQualifiers()) .build(); }
@Test public void add_project_permission_to_user() { UserPermissionChange change = new UserPermissionChange(ADD, org1.getUuid(), ISSUE_ADMIN, new ProjectId(privateProject), UserId.from(user1), permissionService); apply(change); assertThat(db.users().selectPermissionsOfUser(user1, org1)).isEmpty(); assertThat(db.users().selectProjectPermissionsOfUser(user1, privateProject)).contains(ISSUE_ADMIN); assertThat(db.users().selectPermissionsOfUser(user2, org1)).isEmpty(); assertThat(db.users().selectProjectPermissionsOfUser(user2, privateProject)).isEmpty(); }
@Test public void apply_has_no_effect_when_adding_CODEVIEWER_permission_to_group_AnyOne_on_a_public_project() { GroupIdOrAnyone groupId = GroupIdOrAnyone.forAnyone(org.getUuid()); apply(new GroupPermissionChange(PermissionChange.Operation.ADD, UserRole.CODEVIEWER, new ProjectId(publicProject), groupId, permissionService)); assertThat(db.users().selectAnyonePermissions(org, publicProject)).isEmpty(); }
@Test public void do_not_fail_if_removing_a_project_permission_that_does_not_exist() { UserPermissionChange change = new UserPermissionChange(REMOVE, org1.getUuid(), ISSUE_ADMIN, new ProjectId(privateProject), UserId.from(user1), permissionService); apply(change); assertThat(db.users().selectProjectPermissionsOfUser(user1, privateProject)).isEmpty(); }
@Test public void createForUser_gives_all_permissions_for_new_organization_to_current_user() { 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(); assertThat(dbClient.userPermissionDao().selectGlobalPermissionsOfUser(dbSession, user.getId(), organization.getUuid())) .containsOnly(GlobalPermissions.ALL.toArray(new String[GlobalPermissions.ALL.size()])); }
@Test public void fail_to_add_project_permission_on_organization() { expectedException.expect(BadRequestException.class); expectedException.expectMessage("Invalid global permission 'issueadmin'. Valid values are [admin, gateadmin, profileadmin, provisioning, scan]"); UserPermissionChange change = new UserPermissionChange(ADD, org1.getUuid(), ISSUE_ADMIN, null, UserId.from(user1), permissionService); apply(change); }
@Test public void cleanWebhooksOfAnOrganization() { OrganizationDto organization = organizationDbTester.insert(); webhookDbTester.insertWebhook(organization); webhookDbTester.insertWebhook(organization); webhookDbTester.insertWebhook(organization); webhookDbTester.insertWebhook(organization); underTest.deleteByOrganization(dbSession, organization); Optional<WebhookDto> reloaded = underTest.selectByUuid(dbSession, organization.getUuid()); assertThat(reloaded).isEmpty(); }
@Test public void fail_to_add_global_permission_on_project() { expectedException.expect(BadRequestException.class); expectedException.expectMessage("Invalid project permission 'gateadmin'. Valid values are [" + StringUtils.join(permissionService.getAllProjectPermissions(), ", ") + "]"); UserPermissionChange change = new UserPermissionChange(ADD, org1.getUuid(), QUALITY_GATE_ADMIN, new ProjectId(privateProject), UserId.from(user1), permissionService); apply(change); }
@Test public void apply_fails_with_BadRequestException_when_removing_USER_permission_from_group_AnyOne_on_a_public_project() { GroupIdOrAnyone groupId = GroupIdOrAnyone.forAnyone(org.getUuid()); expectedException.expect(BadRequestException.class); expectedException.expectMessage("Permission user can't be removed from a public component"); apply(new GroupPermissionChange(PermissionChange.Operation.REMOVE, UserRole.USER, new ProjectId(publicProject), groupId, permissionService)); }