]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-13936 Remove use of organizations in Permissions WS and DB
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 12 Oct 2020 15:00:17 +0000 (17:00 +0200)
committersonartech <sonartech@sonarsource.com>
Fri, 16 Oct 2020 20:07:40 +0000 (20:07 +0000)
* SONAR-13936 Remove organization parameters from permissions WS

* SONAR-13936 Remove organization_uuid column from user_roles table

* SONAR-13936 Fix developer ITs

* SONAR-13936 Remove organization_uuid column from group_roles table

* SONAR-13936 Remove organization_uuid column from permission_templates table

76 files changed:
server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionMapper.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateDto.java
server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMapper.xml
server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml
server/sonar-db-dao/src/main/resources/org/sonar/db/permission/UserPermissionMapper.xml
server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml
server/sonar-db-dao/src/schema/schema-sq.ddl
server/sonar-db-dao/src/test/java/org/sonar/db/permission/UserPermissionDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/component/ComponentDbTester.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/permission/template/PermissionTemplateDbTester.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/user/UserDbTester.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DbVersion86.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRoles.java [new file with mode: 0644]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplates.java [new file with mode: 0644]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRoles.java [new file with mode: 0644]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRolesTest.java [new file with mode: 0644]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplatesTest.java [new file with mode: 0644]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRolesTest.java [new file with mode: 0644]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRolesTest/schema.sql [new file with mode: 0644]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplatesTest/schema.sql [new file with mode: 0644]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRolesTest/schema.sql [new file with mode: 0644]
server/sonar-webserver-auth/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java
server/sonar-webserver-auth/src/main/java/org/sonar/server/permission/PermissionService.java
server/sonar-webserver-auth/src/main/java/org/sonar/server/permission/PermissionServiceImpl.java
server/sonar-webserver-auth/src/test/java/org/sonar/server/permission/PermissionServiceImplTest.java
server/sonar-webserver-core/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java
server/sonar-webserver-core/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/PermissionChange.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/PermissionTemplateService.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/UserPermissionChanger.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/AddUserAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/GroupsAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/PermissionWsSupport.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/RemoveUserAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/SearchGlobalPermissionsAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/UsersAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/WsParameters.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddUserToTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/CreateTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/RemoveProjectCreatorFromTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/RemoveUserFromTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/SetDefaultTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/user/ws/CurrentAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/user/ws/DeactivateAction.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/GroupPermissionChangerTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/UserPermissionChangerTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/BasePermissionWsTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveUserActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/UsersActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddUserToTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/BulkApplyTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveUserFromTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/SearchTemplatesActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/SetDefaultTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/TemplateUsersActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/UpdateTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/project/ws/UpdateVisibilityActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/user/ws/DeactivateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsParameters.java

index 96856f31412eb445d28c3584fffade16964e36b7..efa3efc75950b95f5c8e07260184f4f5d34f3255 100644 (file)
@@ -80,9 +80,9 @@ public class UserPermissionDao implements Dao {
   }
 
   /**
-   * Gets all the global permissions granted to user for the specified organization.
+   * Gets all the global permissions granted to user
    *
-   * @return the global permissions. An empty list is returned if user or organization do not exist.
+   * @return the global permissions. An empty list is returned if user do not exist.
    */
   public List<String> selectGlobalPermissionsOfUser(DbSession dbSession, String userUuid) {
     return mapper(dbSession).selectGlobalPermissionsOfUser(userUuid);
@@ -101,8 +101,8 @@ public class UserPermissionDao implements Dao {
     return mapper(session).selectUserUuidsWithPermissionOnProjectBut(projectUuid, permission);
   }
 
-  public void insert(DbSession dbSession, UserPermissionDto dto, String defaultOrgUuid) {
-    mapper(dbSession).insert(dto, defaultOrgUuid);
+  public void insert(DbSession dbSession, UserPermissionDto dto) {
+    mapper(dbSession).insert(dto);
   }
 
   /**
index 5abbbc3e7deae98c23ab48bf3d80c83403218629..2c0b3a55c2dbd9c08d2403fdf46ce9570be7b963 100644 (file)
@@ -31,7 +31,7 @@ public interface UserPermissionMapper {
   List<String> selectUserUuidsByQuery(@Param("query") PermissionQuery query);
 
   /**
-   * Fetch user ids based on permission query and only in a specific scope (global permissions only, organization permissions only or project permissions only)
+   * Fetch user ids based on permission query and only in a specific scope (global permissions only or project permissions only)
    */
   List<String> selectUserUuidsByQueryAndScope(@Param("query") PermissionQuery query);
 
@@ -52,7 +52,7 @@ public interface UserPermissionMapper {
    */
   Set<String> selectUserUuidsWithPermissionOnProjectBut(@Param("projectUuid") String projectUuid, @Param("permission") String permission);
 
-  void insert(@Param("dto")UserPermissionDto dto, @Param("defaultOrgUuid") String defaultOrgUuid);
+  void insert(@Param("dto")UserPermissionDto dto);
 
   void deleteGlobalPermission(@Param("userUuid") String userUuid, @Param("permission") String permission);
 
index 43b101f95ae4a76db54f36a273b566e29ab560e0..e6094cb497dee68d2fc031c0277fb3d1e177cced 100644 (file)
@@ -24,7 +24,6 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 
 public class PermissionTemplateDto {
-  private String organizationUuid;
   private String name;
   private String uuid;
   private String description;
@@ -41,11 +40,6 @@ public class PermissionTemplateDto {
     return this;
   }
 
-  public PermissionTemplateDto setOrganizationUuid(String uuid) {
-    this.organizationUuid = uuid;
-    return this;
-  }
-
   /**
    * @since 5.2 the kee column is a proper uuid. Before that it was build on the name + timestamp
    */
index 449b2b73bc5f2acae41aea7905939e95c84c396f..cf9445386c2ea5e18c292666d188d701ef765c71 100644 (file)
     select
       <include refid="selectColumns"/>
     from organizations org
-    inner join user_roles ur on
-      ur.organization_uuid = org.uuid
-      and ur.user_uuid = #{userUuid,jdbcType=VARCHAR}
+    inner join user_roles ur on ur.user_uuid = #{userUuid,jdbcType=VARCHAR}
       and ur.component_uuid is null
       and ur.role = #{permission,jdbcType=VARCHAR}
     union
     select
       <include refid="selectColumns"/>
     from organizations org
-    inner join group_roles g on
-      g.organization_uuid = org.uuid
-      and g.component_uuid is null
+    inner join group_roles g on g.component_uuid is null
       and g.role = #{permission,jdbcType=VARCHAR}
     inner join groups_users gu on
       gu.group_uuid = g.group_uuid
index 163ffd078bdb71b58da04c5b8429dc8cf9986252..1ce169e2918cc459a8dc0e1459a72f79e69052d5 100644 (file)
 
   <insert id="insert" parameterType="GroupPermission">
     insert into group_roles (
-    organization_uuid,
     uuid,
     group_uuid,
     component_uuid,
     role
     ) values (
-    'asd',
     #{uuid,jdbcType=VARCHAR},
     #{groupUuid,jdbcType=VARCHAR},
     #{componentUuid,jdbcType=BIGINT},
index 5e3ffce7a057bad5377524a93856fcb6b9a84d61..c99065538eee87979439bd374c1fafa8cf47afe2 100644 (file)
 
   <insert id="insert" parameterType="org.sonar.db.permission.UserPermissionDto" useGeneratedKeys="false">
     insert into user_roles (
-    organization_uuid,
     uuid,
     user_uuid,
     component_uuid,
     role
     ) values (
-    #{defaultOrgUuid,jdbcType=VARCHAR},
     #{dto.uuid,jdbcType=VARCHAR},
     #{dto.userUuid,jdbcType=VARCHAR},
     #{dto.componentUuid,jdbcType=VARCHAR},
index b05f8bb8bb9dfc626d0b9f3790a71964455ab641..c67173c0a291dd407c7d86fde068df00b559afa5 100644 (file)
@@ -4,9 +4,8 @@
 <mapper namespace="org.sonar.db.permission.template.PermissionTemplateMapper">
 
   <insert id="insert" parameterType="PermissionTemplate" useGeneratedKeys="false">
-    INSERT INTO permission_templates (organization_uuid, name, uuid, description, key_pattern, created_at, updated_at)
+    INSERT INTO permission_templates (name, uuid, description, key_pattern, created_at, updated_at)
     VALUES (
-    #{organizationUuid,jdbcType=VARCHAR},
     #{name,jdbcType=VARCHAR},
     #{uuid,jdbcType=VARCHAR},
     #{description,jdbcType=VARCHAR},
index c0ed77595eaa4c284b5b024b6bc8c5ad6186fdf5..25052cb6ecc0cdc84cf4dcc7699b3c0e23f098a1 100644 (file)
@@ -315,7 +315,6 @@ CREATE INDEX "FILE_SOURCES_PROJECT_UUID" ON "FILE_SOURCES"("PROJECT_UUID");
 CREATE INDEX "FILE_SOURCES_UPDATED_AT" ON "FILE_SOURCES"("UPDATED_AT");
 
 CREATE TABLE "GROUP_ROLES"(
-    "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
     "ROLE" VARCHAR(64) NOT NULL,
     "COMPONENT_UUID" VARCHAR(40),
     "UUID" VARCHAR(40) NOT NULL,
@@ -323,7 +322,7 @@ CREATE TABLE "GROUP_ROLES"(
 );
 ALTER TABLE "GROUP_ROLES" ADD CONSTRAINT "PK_GROUP_ROLES" PRIMARY KEY("UUID");
 CREATE INDEX "GROUP_ROLES_COMPONENT_UUID" ON "GROUP_ROLES"("COMPONENT_UUID");
-CREATE UNIQUE INDEX "UNIQ_GROUP_ROLES" ON "GROUP_ROLES"("ORGANIZATION_UUID", "GROUP_UUID", "COMPONENT_UUID", "ROLE");
+CREATE UNIQUE INDEX "UNIQ_GROUP_ROLES" ON "GROUP_ROLES"("GROUP_UUID", "COMPONENT_UUID", "ROLE");
 
 CREATE TABLE "GROUPS"(
     "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
@@ -585,7 +584,6 @@ ALTER TABLE "PERM_TPL_CHARACTERISTICS" ADD CONSTRAINT "PK_PERM_TPL_CHARACTERISTI
 CREATE UNIQUE INDEX "UNIQ_PERM_TPL_CHARAC" ON "PERM_TPL_CHARACTERISTICS"("TEMPLATE_UUID", "PERMISSION_KEY");
 
 CREATE TABLE "PERMISSION_TEMPLATES"(
-    "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
     "NAME" VARCHAR(100) NOT NULL,
     "DESCRIPTION" VARCHAR(4000),
     "CREATED_AT" TIMESTAMP,
@@ -916,7 +914,6 @@ ALTER TABLE "USER_PROPERTIES" ADD CONSTRAINT "PK_USER_PROPERTIES" PRIMARY KEY("U
 CREATE UNIQUE INDEX "USER_PROPERTIES_USER_UUID_KEE" ON "USER_PROPERTIES"("USER_UUID", "KEE");
 
 CREATE TABLE "USER_ROLES"(
-    "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
     "ROLE" VARCHAR(64) NOT NULL,
     "COMPONENT_UUID" VARCHAR(40),
     "UUID" VARCHAR(40) NOT NULL,
index 87ce35d799c5a9e7322a3b8218233ea7ebad6991..674e132cd828e3fe752525bb1a4b4f325db4fb70 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.core.util.Uuids;
 import org.sonar.db.DbSession;
 import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.UserDto;
 
 import static java.util.Arrays.asList;
@@ -67,7 +66,6 @@ public class UserPermissionDaoTest {
 
   @Test
   public void select_global_permissions() {
-    OrganizationDto org2 = db.organizations().insert();
     UserDto user1 = insertUser(u -> u.setLogin("login1").setName("Marius").setEmail("email1@email.com"));
     UserDto user2 = insertUser(u -> u.setLogin("login2").setName("Marie").setEmail("email2@email.com"));
     UserDto user3 = insertUser(u -> u.setLogin("zanother").setName("Zoe").setEmail("zanother3@another.com"));
@@ -634,14 +632,14 @@ public class UserPermissionDaoTest {
 
   private UserPermissionDto addGlobalPermission(String permission, UserDto user) {
     UserPermissionDto dto = new UserPermissionDto(Uuids.create(), permission, user.getUuid(), null);
-    underTest.insert(dbSession, dto, db.getDefaultOrganization().getUuid());
+    underTest.insert(dbSession, dto);
     db.commit();
     return dto;
   }
 
   private UserPermissionDto addProjectPermission(String permission, UserDto user, ComponentDto project) {
     UserPermissionDto dto = new UserPermissionDto(Uuids.create(), permission, user.getUuid(), project.uuid());
-    underTest.insert(dbSession, dto, db.getDefaultOrganization().getUuid());
+    underTest.insert(dbSession, dto);
     db.commit();
     return dto;
   }
index 615b899e6c54482193c95dc196c540f120319218..f633cf55528ea2b313162809db47cff4a1a215c1 100644 (file)
@@ -74,7 +74,6 @@ public class PermissionTemplateDaoTest {
   @Test
   public void create_permission_template() {
     PermissionTemplateDto permissionTemplate = underTest.insert(db.getSession(), newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setUuid("ABCD")
       .setName("my template")
       .setDescription("my description")
index 8a7ca726cae6a2be7f055e8e815d931f4af7aeeb..b46a7eb5e3aec13607aaaaa1dfef7ae538b22bd5 100644 (file)
@@ -82,6 +82,10 @@ public class ComponentDbTester {
     return insertComponentAndBranchAndProject(componentDto, false);
   }
 
+  public ComponentDto insertPrivateProject(String uuid) {
+    return insertComponentAndBranchAndProject(ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization(), uuid), true);
+  }
+
   public final ComponentDto insertPrivateProject(Consumer<ComponentDto> dtoPopulator) {
     return insertComponentAndBranchAndProject(ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()), true, defaults(),
       dtoPopulator);
index 3d1b0c0d02443fb595dd6bf700e46b854c55f61e..eae6c1c8facf7e66597377876709ecd74e895319 100644 (file)
@@ -45,10 +45,8 @@ public class PermissionTemplateDbTester {
   }
 
   public PermissionTemplateDto insertTemplate(PermissionTemplateDto template) {
-    template.setOrganizationUuid(db.getDefaultOrganization().getUuid());
     PermissionTemplateDto templateInDb = dbClient.permissionTemplateDao().insert(dbSession, template);
     db.commit();
-
     return templateInDb;
   }
 
index 687177e13b2d781d06261373ef7fd34738aa91cc..7ee38344a1ede6ef72b600bfabb911179dd79417 100644 (file)
@@ -304,7 +304,7 @@ public class UserDbTester {
   @Deprecated
   public UserPermissionDto insertPermissionOnUser(UserDto user, String permission) {
     UserPermissionDto dto = new UserPermissionDto(Uuids.create(), permission, user.getUuid(), null);
-    db.getDbClient().userPermissionDao().insert(db.getSession(), dto, db.getDefaultOrganization().getUuid());
+    db.getDbClient().userPermissionDao().insert(db.getSession(), dto);
     db.commit();
     return dto;
   }
@@ -327,7 +327,7 @@ public class UserDbTester {
       "%s can't be granted on a public project", permission);
     checkArgument(project.getMainBranchProjectUuid() == null, "Permissions can't be granted on branches");
     UserPermissionDto dto = new UserPermissionDto(Uuids.create(), permission, user.getUuid(), project.uuid());
-    db.getDbClient().userPermissionDao().insert(db.getSession(), dto, db.getDefaultOrganization().getUuid());
+    db.getDbClient().userPermissionDao().insert(db.getSession(), dto);
     db.commit();
     return dto;
   }
index 660e864dfb7d714b0ecd286243ecd1bd39707aac..29ccb9dcefe7e30b4d157a7703464a74f175a76c 100644 (file)
@@ -35,6 +35,9 @@ public class DbVersion86 implements DbVersion {
       .add(4105, "Drop 'organization_uuid' in 'rules_metadata'", DropOrganizationInRulesMetadata.class)
       .add(4106, "Update 'change_data' column of 'qprofile_changes' table to use ruleUuid", UpdateChangeDataOfQProfileChanges.class)
       .add(4107, "Drop 'organization_uuid' in 'users'", DropOrganizationInUsers.class)
+      .add(4108, "Drop 'organization_uuid' in 'user_roles'", DropOrganizationInUserRoles.class)
+      .add(4109, "Drop 'organization_uuid' in 'group_roles'", DropOrganizationInGroupRoles.class)
+      .add(4110, "Drop 'organization_uuid' in 'permission_templates'", DropOrganizationInPermissionTemplates.class)
     ;
   }
 }
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRoles.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRoles.java
new file mode 100644 (file)
index 0000000..d627689
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.platform.db.migration.version.v86;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.server.platform.db.migration.sql.CreateIndexBuilder;
+import org.sonar.server.platform.db.migration.sql.DropColumnsBuilder;
+import org.sonar.server.platform.db.migration.sql.DropIndexBuilder;
+import org.sonar.server.platform.db.migration.step.DdlChange;
+
+public class DropOrganizationInGroupRoles extends DdlChange {
+
+  private static final String TABLE_NAME = "group_roles";
+
+  public DropOrganizationInGroupRoles(Database db) {
+    super(db);
+  }
+
+  @Override
+  public void execute(Context context) throws SQLException {
+    context.execute(
+      new DropIndexBuilder(getDialect())
+        .setTable(TABLE_NAME)
+        .setName("uniq_group_roles")
+        .build());
+    context.execute(new DropColumnsBuilder(getDialect(), TABLE_NAME, "organization_uuid").build());
+    context.execute(new CreateIndexBuilder()
+      .setTable(TABLE_NAME)
+      .setName("uniq_group_roles")
+      .addColumn("group_uuid")
+      .addColumn("component_uuid")
+      .addColumn("role")
+      .setUnique(true)
+      .build());
+  }
+}
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplates.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplates.java
new file mode 100644 (file)
index 0000000..868205e
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.platform.db.migration.version.v86;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.server.platform.db.migration.sql.DropColumnsBuilder;
+import org.sonar.server.platform.db.migration.step.DdlChange;
+
+public class DropOrganizationInPermissionTemplates extends DdlChange {
+
+  private static final String TABLE_NAME = "permission_templates";
+
+  public DropOrganizationInPermissionTemplates(Database db) {
+    super(db);
+  }
+
+  @Override
+  public void execute(Context context) throws SQLException {
+    context.execute(new DropColumnsBuilder(getDialect(), TABLE_NAME, "organization_uuid").build());
+  }
+}
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRoles.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRoles.java
new file mode 100644 (file)
index 0000000..7e02815
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.platform.db.migration.version.v86;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.server.platform.db.migration.sql.DropColumnsBuilder;
+import org.sonar.server.platform.db.migration.step.DdlChange;
+
+public class DropOrganizationInUserRoles extends DdlChange {
+
+  private static final String TABLE_NAME = "user_roles";
+
+  public DropOrganizationInUserRoles(Database db) {
+    super(db);
+  }
+
+  @Override
+  public void execute(Context context) throws SQLException {
+    context.execute(new DropColumnsBuilder(getDialect(), TABLE_NAME, "organization_uuid").build());
+  }
+}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRolesTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRolesTest.java
new file mode 100644 (file)
index 0000000..29f3551
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.platform.db.migration.version.v86;
+
+import java.sql.SQLException;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.db.CoreDbTester;
+import org.sonar.server.platform.db.migration.step.MigrationStep;
+
+public class DropOrganizationInGroupRolesTest {
+
+  @Rule
+  public CoreDbTester dbTester = CoreDbTester.createForSchema(DropOrganizationInGroupRolesTest.class, "schema.sql");
+
+  private MigrationStep underTest = new DropOrganizationInGroupRoles(dbTester.database());
+
+  @Test
+  public void column_has_been_dropped() throws SQLException {
+    underTest.execute();
+    dbTester.assertColumnDoesNotExist("group_roles", "organization_uuid");
+    dbTester.assertUniqueIndex("group_roles", "uniq_group_roles", "group_uuid", "component_uuid", "role");
+  }
+
+}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplatesTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplatesTest.java
new file mode 100644 (file)
index 0000000..9fd1f8d
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.platform.db.migration.version.v86;
+
+import java.sql.SQLException;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.db.CoreDbTester;
+import org.sonar.server.platform.db.migration.step.MigrationStep;
+
+public class DropOrganizationInPermissionTemplatesTest {
+
+  @Rule
+  public CoreDbTester dbTester = CoreDbTester.createForSchema(DropOrganizationInPermissionTemplatesTest.class, "schema.sql");
+
+  private MigrationStep underTest = new DropOrganizationInPermissionTemplates(dbTester.database());
+
+  @Test
+  public void column_has_been_dropped() throws SQLException {
+    underTest.execute();
+    dbTester.assertColumnDoesNotExist("permission_templates", "organization_uuid");
+  }
+
+}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRolesTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRolesTest.java
new file mode 100644 (file)
index 0000000..3eb971c
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.platform.db.migration.version.v86;
+
+import java.sql.SQLException;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.db.CoreDbTester;
+import org.sonar.server.platform.db.migration.step.MigrationStep;
+
+public class DropOrganizationInUserRolesTest {
+
+  @Rule
+  public CoreDbTester dbTester = CoreDbTester.createForSchema(DropOrganizationInUserRolesTest.class, "schema.sql");
+
+  private MigrationStep underTest = new DropOrganizationInUserRoles(dbTester.database());
+
+  @Test
+  public void column_has_been_dropped() throws SQLException {
+    underTest.execute();
+    dbTester.assertColumnDoesNotExist("user_roles", "organization_uuid");
+  }
+
+}
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRolesTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInGroupRolesTest/schema.sql
new file mode 100644 (file)
index 0000000..0a63c1e
--- /dev/null
@@ -0,0 +1,10 @@
+CREATE TABLE "GROUP_ROLES"(
+    "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
+    "ROLE" VARCHAR(64) NOT NULL,
+    "COMPONENT_UUID" VARCHAR(40),
+    "UUID" VARCHAR(40) NOT NULL,
+    "GROUP_UUID" VARCHAR(40)
+);
+ALTER TABLE "GROUP_ROLES" ADD CONSTRAINT "PK_GROUP_ROLES" PRIMARY KEY("UUID");
+CREATE INDEX "GROUP_ROLES_COMPONENT_UUID" ON "GROUP_ROLES"("COMPONENT_UUID");
+CREATE UNIQUE INDEX "UNIQ_GROUP_ROLES" ON "GROUP_ROLES"("ORGANIZATION_UUID", "GROUP_UUID", "COMPONENT_UUID", "ROLE");
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplatesTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInPermissionTemplatesTest/schema.sql
new file mode 100644 (file)
index 0000000..c9a2ab5
--- /dev/null
@@ -0,0 +1,10 @@
+CREATE TABLE "PERMISSION_TEMPLATES"(
+    "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
+    "NAME" VARCHAR(100) NOT NULL,
+    "DESCRIPTION" VARCHAR(4000),
+    "CREATED_AT" TIMESTAMP,
+    "UPDATED_AT" TIMESTAMP,
+    "KEY_PATTERN" VARCHAR(500),
+    "UUID" VARCHAR(40) NOT NULL
+);
+ALTER TABLE "PERMISSION_TEMPLATES" ADD CONSTRAINT "PK_PERMISSION_TEMPLATES" PRIMARY KEY("UUID");
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRolesTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v86/DropOrganizationInUserRolesTest/schema.sql
new file mode 100644 (file)
index 0000000..5acabc5
--- /dev/null
@@ -0,0 +1,10 @@
+CREATE TABLE "USER_ROLES"(
+    "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
+    "ROLE" VARCHAR(64) NOT NULL,
+    "COMPONENT_UUID" VARCHAR(40),
+    "UUID" VARCHAR(40) NOT NULL,
+    "USER_UUID" VARCHAR(255)
+);
+ALTER TABLE "USER_ROLES" ADD CONSTRAINT "PK_USER_ROLES" PRIMARY KEY("UUID");
+CREATE INDEX "USER_ROLES_COMPONENT_UUID" ON "USER_ROLES"("COMPONENT_UUID");
+CREATE INDEX "USER_ROLES_USER" ON "USER_ROLES"("USER_UUID");
index 8284ab6f4d119f6fd4182b9d87cf8ad65fe40b7e..5277ae591035643b4b79bdde365bf9be3b3ba635 100644 (file)
@@ -164,7 +164,6 @@ public class OrganizationUpdaterImpl implements OrganizationUpdater {
       new PermissionTemplateDto()
         .setUuid(uuidFactory.create())
         .setName(PERM_TEMPLATE_NAME)
-        .setOrganizationUuid(organizationDto.getUuid())
         .setDescription(format(PERM_TEMPLATE_DESCRIPTION_PATTERN, organizationDto.getName()))
         .setCreatedAt(now)
         .setUpdatedAt(now));
@@ -221,7 +220,7 @@ public class OrganizationUpdaterImpl implements OrganizationUpdater {
       .setUuid(uuidFactory.create())
       .setName(OWNERS_GROUP_NAME)
       .setDescription(OWNERS_GROUP_DESCRIPTION));
-    permissionService.getAllOrganizationPermissions().forEach(p -> addPermissionToGroup(dbSession, group, p));
+    permissionService.getGlobalPermissions().forEach(p -> addPermissionToGroup(dbSession, group, p));
     return group;
   }
 
index 75175dc492024095d3c000797a74f85957b7547f..93b5f65a82c5b83d21e853f2889f93db8c405a60 100644 (file)
@@ -24,7 +24,7 @@ import org.sonar.db.permission.OrganizationPermission;
 
 public interface PermissionService {
 
-  List<OrganizationPermission> getAllOrganizationPermissions();
+  List<OrganizationPermission> getGlobalPermissions();
   List<String> getAllProjectPermissions();
 
 }
index 9e6210915952d56b720745823ff40ab7ea391e5e..9f5b72da99b125d5ac7d03dbe852729f6e0382de 100644 (file)
@@ -55,7 +55,7 @@ public class PermissionServiceImpl implements PermissionService {
    * Return an immutable Set of all organization permissions
    */
   @Override
-  public List<OrganizationPermission> getAllOrganizationPermissions() {
+  public List<OrganizationPermission> getGlobalPermissions() {
     return globalPermissions;
   }
 
index e014b8b687d367df091d847069b14180eabb7037..44e92ab00516a5f970741adf4a89250ebfd9794a 100644 (file)
@@ -32,7 +32,7 @@ public class PermissionServiceImplTest {
 
   @Test
   public void organizationPermissions_must_be_ordered() {
-    assertThat(underTest.getAllOrganizationPermissions())
+    assertThat(underTest.getGlobalPermissions())
       .extracting(OrganizationPermission::getKey)
       .containsExactly("admin", "gateadmin", "profileadmin", "provisioning", "scan", "applicationcreator", "portfoliocreator");
   }
index a32c28e89e1f0264c2201f8b36e7b8e771170efe..ce495844b16c11309fc46ec2fbb19ba11df56844 100644 (file)
@@ -79,7 +79,6 @@ public class RegisterPermissionTemplates implements Startable {
     }
 
     PermissionTemplateDto template = new PermissionTemplateDto()
-      .setOrganizationUuid(defaultOrganizationProvider.get().getUuid())
       .setName("Default template")
       .setUuid(DEFAULT_TEMPLATE_UUID)
       .setDescription("This permission template will be used as default when no other permission configuration is available")
index 232a907ac329b2455bc9e2fbb58fd0773edec291..1c9d0879c117280cbcacd87f0a053e51195ee647 100644 (file)
@@ -156,9 +156,7 @@ public class RegisterPermissionTemplatesTest {
 
   @Test
   public void do_not_create_default_template_if_already_exists_but_register_when_it_is_not() {
-    db.permissionTemplates().insertTemplate(newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
-      .setUuid(DEFAULT_TEMPLATE_UUID));
+    db.permissionTemplates().insertTemplate(newPermissionTemplateDto().setUuid(DEFAULT_TEMPLATE_UUID));
 
     underTest.start();
 
@@ -168,7 +166,6 @@ public class RegisterPermissionTemplatesTest {
   @Test
   public void do_not_fail_if_default_template_exists_and_is_registered() {
     PermissionTemplateDto projectTemplate = db.permissionTemplates().insertTemplate(newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setUuid(DEFAULT_TEMPLATE_UUID));
     db.organizations().setDefaultTemplates(projectTemplate, null, null);
 
@@ -189,7 +186,7 @@ public class RegisterPermissionTemplatesTest {
     String expectedGroupName) {
     assertThat(
       groupPermissions.stream().anyMatch(gp -> gp.getPermission().equals(expectedPermission) && Objects.equals(gp.getGroupName(), expectedGroupName)))
-      .isTrue();
+        .isTrue();
   }
 
   private void verifyDefaultTemplates() {
index 8fab15c28aba29f9ce58c5c0face1c5b050ffbd8..db6dd0c36e56a92dad4eaa4c02d473d382cc01d9 100644 (file)
@@ -44,9 +44,9 @@ public abstract class PermissionChange {
     this.projectUuid = projectUuid;
     this.permissionService = permissionService;
     if (projectUuid == null) {
-      checkRequest(permissionService.getAllOrganizationPermissions().stream().anyMatch(p -> p.getKey().equals(permission)),
+      checkRequest(permissionService.getGlobalPermissions().stream().anyMatch(p -> p.getKey().equals(permission)),
         "Invalid global permission '%s'. Valid values are %s", permission,
-        permissionService.getAllOrganizationPermissions().stream().map(OrganizationPermission::getKey).collect(toList()));
+        permissionService.getGlobalPermissions().stream().map(OrganizationPermission::getKey).collect(toList()));
     } else {
       checkRequest(permissionService.getAllProjectPermissions().contains(permission), "Invalid project permission '%s'. Valid values are %s", permission,
         permissionService.getAllProjectPermissions());
index d445484df72853103a5eb766f8c51db26d63847e..cae41108bed1356d15a9b1199cce9dec0c9b9a39 100644 (file)
@@ -141,7 +141,7 @@ public class PermissionTemplateService {
       .filter(up -> permissionValidForProject(project, up.getPermission()))
       .forEach(up -> {
         UserPermissionDto dto = new UserPermissionDto(uuidFactory.create(), up.getPermission(), userDtoMap.get(up.getUserUuid()), project.uuid());
-        dbClient.userPermissionDao().insert(dbSession, dto, defaultOrganizationProvider.get().getUuid());
+        dbClient.userPermissionDao().insert(dbSession, dto);
       });
 
     List<PermissionTemplateGroupDto> groupsPermissions = dbClient.permissionTemplateDao().selectGroupPermissionsByTemplateUuid(dbSession, template.getUuid());
@@ -172,7 +172,7 @@ public class PermissionTemplateService {
         .filter(characteristic -> !permissionsForCurrentUserAlreadyInDb.contains(characteristic.getPermission()))
         .forEach(c -> {
           UserPermissionDto dto = new UserPermissionDto(uuidFactory.create(), c.getPermission(), userDto.getUuid(), project.uuid());
-          dbClient.userPermissionDao().insert(dbSession, dto, defaultOrganizationProvider.get().getUuid());
+          dbClient.userPermissionDao().insert(dbSession, dto);
         });
     }
   }
@@ -230,7 +230,7 @@ public class PermissionTemplateService {
   private static void checkAtMostOneMatchForComponentKey(String componentKey, List<PermissionTemplateDto> matchingTemplates) {
     if (matchingTemplates.size() > 1) {
       StringBuilder templatesNames = new StringBuilder();
-      for (Iterator<PermissionTemplateDto> it = matchingTemplates.iterator(); it.hasNext(); ) {
+      for (Iterator<PermissionTemplateDto> it = matchingTemplates.iterator(); it.hasNext();) {
         templatesNames.append("\"").append(it.next().getName()).append("\"");
         if (it.hasNext()) {
           templatesNames.append(", ");
index 3a20ac99524d4580bc403453c2e83dd22b9d5f61..de6eb0c12b0d43176452dcdf9b765668c3f30fed 100644 (file)
@@ -24,7 +24,6 @@ import org.sonar.core.util.UuidFactory;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.permission.UserPermissionDto;
-import org.sonar.server.organization.DefaultOrganizationProvider;
 
 import static org.sonar.api.web.UserRole.PUBLIC_PERMISSIONS;
 import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
@@ -39,12 +38,10 @@ public class UserPermissionChanger {
 
   private final DbClient dbClient;
   private final UuidFactory uuidFactory;
-  private final DefaultOrganizationProvider defaultOrganizationProvider;
 
-  public UserPermissionChanger(DbClient dbClient, UuidFactory uuidFactory, DefaultOrganizationProvider defaultOrganizationProvider) {
+  public UserPermissionChanger(DbClient dbClient, UuidFactory uuidFactory) {
     this.dbClient = dbClient;
     this.uuidFactory = uuidFactory;
-    this.defaultOrganizationProvider = defaultOrganizationProvider;
   }
 
   public boolean apply(DbSession dbSession, UserPermissionChange change) {
@@ -98,7 +95,7 @@ public class UserPermissionChanger {
     }
     UserPermissionDto dto = new UserPermissionDto(uuidFactory.create(), change.getPermission(), change.getUserId().getUuid(),
       change.getProjectUuid());
-    dbClient.userPermissionDao().insert(dbSession, dto, defaultOrganizationProvider.get().getUuid());
+    dbClient.userPermissionDao().insert(dbSession, dto);
     return true;
   }
 
index 040f55efb207b0fca8015fa5bf2ec3fec5db003a..e77f8629cf8c7e28a7804cc6dd11f7be1b4e7ae5 100644 (file)
@@ -38,7 +38,6 @@ import org.sonar.server.user.UserSession;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
 import static org.sonar.server.permission.ws.WsParameters.createGroupIdParameter;
 import static org.sonar.server.permission.ws.WsParameters.createGroupNameParameter;
-import static org.sonar.server.permission.ws.WsParameters.createOrganizationParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 
@@ -81,7 +80,6 @@ public class AddGroupAction implements PermissionsWsAction {
       .setHandler(this);
 
     wsParameters.createPermissionParameter(action, "The permission you would like to grant to the group.");
-    createOrganizationParameter(action).setSince("6.2");
     createGroupNameParameter(action);
     createGroupIdParameter(action);
     createProjectParameters(action);
index 9d8c767c9443a5027571d3bed6160d4e18b140ce..e0f0b34f2e6d6852057da4266494a89e992fabea 100644 (file)
@@ -37,7 +37,6 @@ import org.sonar.server.user.UserSession;
 
 import static java.util.Collections.singletonList;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
-import static org.sonar.server.permission.ws.WsParameters.createOrganizationParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonar.server.permission.ws.WsParameters.createUserLoginParameter;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -83,8 +82,6 @@ public class AddUserAction implements PermissionsWsAction {
     wsParameters.createPermissionParameter(action, "The permission you would like to grant to the user");
     createUserLoginParameter(action);
     createProjectParameters(action);
-    createOrganizationParameter(action)
-      .setSince("6.2");
   }
 
   @Override
index ffca086b2e2ef44e7d10e3e51dec74acbd92a697..24d1e64148a0892d2cd15df319e3829e66343bb9 100644 (file)
@@ -49,7 +49,6 @@ import static org.sonar.db.permission.PermissionQuery.DEFAULT_PAGE_SIZE;
 import static org.sonar.db.permission.PermissionQuery.RESULTS_MAX_SIZE;
 import static org.sonar.db.permission.PermissionQuery.SEARCH_QUERY_MIN_LENGTH;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
-import static org.sonar.server.permission.ws.WsParameters.createOrganizationParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -91,7 +90,6 @@ public class GroupsAction implements PermissionsWsAction {
       .setDescription("Limit search to group names that contain the supplied string.")
       .setMinimumLength(SEARCH_QUERY_MIN_LENGTH);
 
-    createOrganizationParameter(action).setSince("6.2");
     wsParameters.createPermissionParameter(action).setRequired(false);
     createProjectParameters(action);
   }
@@ -103,7 +101,6 @@ public class GroupsAction implements PermissionsWsAction {
       checkProjectAdmin(userSession, project);
 
       PermissionQuery query = buildPermissionQuery(request, project);
-      // TODO validatePermission(groupsRequest.getPermission(), wsProjectRef);
       List<GroupDto> groups = findGroups(dbSession, query);
       int total = dbClient.groupPermissionDao().countGroupsByQuery(dbSession, query);
       List<GroupPermissionDto> groupsWithPermission = findGroupPermissions(dbSession, groups, project);
index c2f23160ae2b8dc2e06c14f975f25e60132c5f5c..735cb6e46a46e986d76f31cbf89923adfd586b19 100644 (file)
@@ -24,7 +24,6 @@ import org.sonar.api.server.ws.Request;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.permission.template.PermissionTemplateDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.server.component.ComponentFinder;
@@ -36,11 +35,9 @@ import org.sonar.server.usergroups.ws.GroupWsRef;
 import org.sonar.server.usergroups.ws.GroupWsSupport;
 import org.sonarqube.ws.client.permission.PermissionsWsParameters;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static org.sonar.server.exceptions.NotFoundException.checkFound;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 
 public class PermissionWsSupport {
 
@@ -75,9 +72,8 @@ public class PermissionWsSupport {
 
   public GroupUuidOrAnyone findGroup(DbSession dbSession, Request request) {
     String groupUuid = request.param(PARAM_GROUP_ID);
-    String orgKey = request.param(PARAM_ORGANIZATION);
     String groupName = request.param(PARAM_GROUP_NAME);
-    GroupWsRef groupRef = GroupWsRef.create(groupUuid, orgKey, groupName);
+    GroupWsRef groupRef = GroupWsRef.create(groupUuid, null, groupName);
     return groupWsSupport.findGroupOrAnyone(dbSession, groupRef);
   }
 
@@ -99,8 +95,4 @@ public class PermissionWsSupport {
     }
   }
 
-  public void checkMembership(DbSession dbSession, OrganizationDto organization, UserId user) {
-    checkArgument(dbClient.organizationMemberDao().select(dbSession, organization.getUuid(), user.getUuid()).isPresent(),
-      "User '%s' is not member of organization '%s'", user.getLogin(), organization.getKey());
-  }
 }
index 4a3e4640aa4c74ec97f78b40c6493ab5c284e6be..efdfe5062debd5c49f70f2bb6217ef894be9995c 100644 (file)
@@ -38,7 +38,6 @@ import static java.util.Arrays.asList;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
 import static org.sonar.server.permission.ws.WsParameters.createGroupIdParameter;
 import static org.sonar.server.permission.ws.WsParameters.createGroupNameParameter;
-import static org.sonar.server.permission.ws.WsParameters.createOrganizationParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 
@@ -81,7 +80,6 @@ public class RemoveGroupAction implements PermissionsWsAction {
       .setHandler(this);
 
     wsParameters.createPermissionParameter(action, "The permission you would like to revoke from the group.");
-    createOrganizationParameter(action).setSince("6.2");
     createGroupNameParameter(action);
     createGroupIdParameter(action);
     createProjectParameters(action);
index dd8e71df2f702d16bdc8e563cfd4cc5c21a982b7..037f48a30ca25cf69f1d90715b17beaa43bbfacb 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.server.user.UserSession;
 
 import static java.util.Collections.singletonList;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
-import static org.sonar.server.permission.ws.WsParameters.createOrganizationParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonar.server.permission.ws.WsParameters.createUserLoginParameter;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -79,7 +78,6 @@ public class RemoveUserAction implements PermissionsWsAction {
     wsParameters.createPermissionParameter(action, "The permission you would like to revoke from the user.");
     createUserLoginParameter(action);
     createProjectParameters(action);
-    createOrganizationParameter(action).setSince("6.2");
   }
 
   @Override
index fabe89817bbb921fcf64b10a4439807ba9ef9b40..fa40ab81cf815b75112a528e3e4dadfa7ab8fa4d 100644 (file)
@@ -64,8 +64,6 @@ public class SearchGlobalPermissionsAction implements PermissionsWsAction {
       .setSince("5.2")
       .setDeprecatedSince("6.5")
       .setHandler(this);
-
-    WsParameters.createOrganizationParameter(action).setSince("6.2");
   }
 
   @Override
@@ -82,7 +80,7 @@ public class SearchGlobalPermissionsAction implements PermissionsWsAction {
     WsSearchGlobalPermissionsResponse.Builder response = WsSearchGlobalPermissionsResponse.newBuilder();
     Permission.Builder permission = newBuilder();
 
-    permissionService.getAllOrganizationPermissions().stream()
+    permissionService.getGlobalPermissions().stream()
       .map(OrganizationPermission::getKey)
       .forEach(permissionKey -> {
         PermissionQuery query = permissionQuery(permissionKey);
index 45a2e19c314e728ae77f9f19e693f49704c657ad..6def62e7aec57996ed0523d0088ce0108608585c 100644 (file)
@@ -51,7 +51,6 @@ import static org.sonar.db.permission.PermissionQuery.RESULTS_MAX_SIZE;
 import static org.sonar.db.permission.PermissionQuery.SEARCH_QUERY_MIN_LENGTH;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
 import static org.sonar.server.permission.RequestValidator.validateGlobalPermission;
-import static org.sonar.server.permission.ws.WsParameters.createOrganizationParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -99,7 +98,6 @@ public class UsersAction implements PermissionsWsAction {
       .setDescription("Limit search to user names that contain the supplied string. <br/>")
       .setExampleValue("eri");
 
-    createOrganizationParameter(action).setSince("6.2");
     wsParameters.createPermissionParameter(action).setRequired(false);
     createProjectParameters(action);
   }
index 6ec3ce3a7eb3dd7135db462fa59c6bd2bf7953a6..a375041da3da500791dd5653ede14a24345a7364 100644 (file)
@@ -30,7 +30,6 @@ import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_D
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY;
@@ -49,15 +48,15 @@ public class WsParameters {
     this.permissionService = permissionService;
     String allProjectsPermissionsOnOneLine = Joiner.on(", ").join(permissionService.getAllProjectPermissions());
     permissionParamDescription = String.format("<ul>" +
-        "<li>Possible values for global permissions: %s</li>" +
-        "<li>Possible values for project permissions %s</li>" +
-        "</ul>",
+      "<li>Possible values for global permissions: %s</li>" +
+      "<li>Possible values for project permissions %s</li>" +
+      "</ul>",
       GlobalPermissions.ALL_ON_ONE_LINE,
       allProjectsPermissionsOnOneLine);
     projectPermissionParamDescription = String.format("Permission" +
-        "<ul>" +
-        "<li>Possible values for project permissions %s</li>" +
-        "</ul>",
+      "<ul>" +
+      "<li>Possible values for project permissions %s</li>" +
+      "</ul>",
       allProjectsPermissionsOnOneLine);
   }
 
@@ -88,13 +87,6 @@ public class WsParameters {
       .setExampleValue("sonar-administrators");
   }
 
-  public static WebService.NewParam createOrganizationParameter(WebService.NewAction action) {
-    return action.createParam(PARAM_ORGANIZATION)
-      .setDescription("Key of organization, used when group name is set")
-      .setExampleValue("my-org")
-      .setInternal(true);
-  }
-
   public static void createGroupIdParameter(WebService.NewAction action) {
     action.createParam(PARAM_GROUP_ID)
       .setDescription("Group id, use 'name' param instead")
@@ -126,7 +118,6 @@ public class WsParameters {
     action.createParam(PARAM_TEMPLATE_ID)
       .setDescription("Template id")
       .setExampleValue(UUID_EXAMPLE_01);
-    createOrganizationParameter(action);
     action.createParam(PARAM_TEMPLATE_NAME)
       .setDescription("Template name")
       .setExampleValue("Default Permission Template for Projects");
index 40e461776cfea66939803b7140aa5e76acb75e82..7dab5449a1a0f10583c7c388a63d02cf747f6591 100644 (file)
@@ -40,7 +40,6 @@ import org.sonar.server.user.UserSession;
 import static java.util.Objects.requireNonNull;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
 import static org.sonar.server.permission.ws.WsParameters.createTemplateParameters;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
@@ -67,7 +66,6 @@ public class AddProjectCreatorToTemplateAction implements PermissionsWsAction {
     AddProjectCreatorToTemplateRequest wsRequest = AddProjectCreatorToTemplateRequest.builder()
       .setPermission(request.mandatoryParam(PARAM_PERMISSION))
       .setTemplateId(request.param(PARAM_TEMPLATE_ID))
-      .setOrganization(request.param(PARAM_ORGANIZATION))
       .setTemplateName(request.param(PARAM_TEMPLATE_NAME))
       .build();
     requestValidator.validateProjectPermission(wsRequest.getPermission());
index d23f8b20dc2a1aa6ee6c25dec8016e46af8cc5e7..869150df917fa0ed5c3544bd7f710b42a947c5ff 100644 (file)
@@ -40,7 +40,6 @@ import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobal
 import static org.sonar.server.permission.ws.WsParameters.createTemplateParameters;
 import static org.sonar.server.permission.ws.WsParameters.createUserLoginParameter;
 import static org.sonar.server.permission.ws.template.WsTemplateRef.newTemplateRef;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
@@ -64,7 +63,6 @@ public class AddUserToTemplateAction implements PermissionsWsAction {
       .setLogin(request.mandatoryParam(PARAM_USER_LOGIN))
       .setPermission(request.mandatoryParam(PARAM_PERMISSION))
       .setTemplateId(request.param(PARAM_TEMPLATE_ID))
-      .setOrganization(request.param(PARAM_ORGANIZATION))
       .setTemplateName(request.param(PARAM_TEMPLATE_NAME));
   }
 
index c39c6b6b9f63b57b2c3809c27c658edf3d87f5ec..babe83632ea431433bd3acb91764b83fa3d005a0 100644 (file)
@@ -56,7 +56,6 @@ import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
 import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_002;
 import static org.sonar.server.ws.WsParameterBuilder.createRootQualifiersParameter;
 import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_QUALIFIER;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
@@ -120,7 +119,7 @@ public class BulkApplyTemplateAction implements PermissionsWsAction {
 
     action.createParam(PARAM_VISIBILITY)
       .setDescription("Filter the projects that should be visible to everyone (%s), or only specific user/groups (%s).<br/>" +
-          "If no visibility is specified, the default project visibility of the organization will be used.",
+        "If no visibility is specified, the default project visibility of the organization will be used.",
         Visibility.PUBLIC.getLabel(), Visibility.PRIVATE.getLabel())
       .setRequired(false)
       .setInternal(true)
@@ -161,7 +160,6 @@ public class BulkApplyTemplateAction implements PermissionsWsAction {
 
   private static BulkApplyTemplateRequest toBulkApplyTemplateWsRequest(Request request) {
     return new BulkApplyTemplateRequest()
-      .setOrganization(request.param(PARAM_ORGANIZATION))
       .setTemplateId(request.param(PARAM_TEMPLATE_ID))
       .setTemplateName(request.param(PARAM_TEMPLATE_NAME))
       .setQualifiers(request.mandatoryParamAsStrings(PARAM_QUALIFIERS))
index f47618589ceaef80f4428f3487d750ec311a13c3..ae66f5e96568fcae9caf6028e793502db6ac9a29 100644 (file)
@@ -47,7 +47,6 @@ import static org.sonar.server.permission.ws.template.PermissionTemplateDtoToPer
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_NAME;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY_PATTERN;
 
 public class CreateTemplateAction implements PermissionsWsAction {
@@ -67,8 +66,7 @@ public class CreateTemplateAction implements PermissionsWsAction {
     return new CreateTemplateRequest()
       .setName(request.mandatoryParam(PARAM_NAME))
       .setDescription(request.param(PARAM_DESCRIPTION))
-      .setProjectKeyPattern(request.param(PARAM_PROJECT_KEY_PATTERN))
-      .setOrganization(request.param(PARAM_ORGANIZATION));
+      .setProjectKeyPattern(request.param(PARAM_PROJECT_KEY_PATTERN));
   }
 
   private static CreateTemplateWsResponse buildResponse(PermissionTemplateDto permissionTemplateDto) {
@@ -93,7 +91,6 @@ public class CreateTemplateAction implements PermissionsWsAction {
 
     WsParameters.createTemplateProjectKeyPatternParameter(action);
     WsParameters.createTemplateDescriptionParameter(action);
-    WsParameters.createOrganizationParameter(action).setSince("6.2");
   }
 
   @Override
@@ -124,7 +121,6 @@ public class CreateTemplateAction implements PermissionsWsAction {
   private PermissionTemplateDto insertTemplate(DbSession dbSession, CreateTemplateRequest request) {
     Date now = new Date(system.now());
     PermissionTemplateDto template = dbClient.permissionTemplateDao().insert(dbSession, new PermissionTemplateDto()
-      .setOrganizationUuid(defaultOrganizationProvider.get().getUuid())
       .setUuid(Uuids.create())
       .setName(request.getName())
       .setDescription(request.getDescription())
index 48384b0c0d8c18db9dcccae26ebc5b43ff58d150..189dee54538e9a879b33bc51d49fea73517c164e 100644 (file)
@@ -39,7 +39,6 @@ import org.sonar.server.user.UserSession;
 import static java.util.Objects.requireNonNull;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
 import static org.sonar.server.permission.ws.WsParameters.createTemplateParameters;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
@@ -66,7 +65,6 @@ public class RemoveProjectCreatorFromTemplateAction implements PermissionsWsActi
     RemoveProjectCreatorFromTemplateRequest wsRequest = RemoveProjectCreatorFromTemplateRequest.builder()
       .setPermission(request.mandatoryParam(PARAM_PERMISSION))
       .setTemplateId(request.param(PARAM_TEMPLATE_ID))
-      .setOrganization(request.param(PARAM_ORGANIZATION))
       .setTemplateName(request.param(PARAM_TEMPLATE_NAME))
       .build();
     requestValidator.validateProjectPermission(wsRequest.getPermission());
index 30138acddf79c22fa9187c2db0a13ba6bb053e60..6ebd6630fa9f812b68a25233e2556a28d8fb311e 100644 (file)
@@ -38,7 +38,6 @@ import static java.util.Objects.requireNonNull;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
 import static org.sonar.server.permission.ws.WsParameters.createTemplateParameters;
 import static org.sonar.server.permission.ws.WsParameters.createUserLoginParameter;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
@@ -64,7 +63,6 @@ public class RemoveUserFromTemplateAction implements PermissionsWsAction {
       .setPermission(request.mandatoryParam(PARAM_PERMISSION))
       .setLogin(request.mandatoryParam(PARAM_USER_LOGIN))
       .setTemplateId(request.param(PARAM_TEMPLATE_ID))
-      .setOrganization(request.param(PARAM_ORGANIZATION))
       .setTemplateName(request.param(PARAM_TEMPLATE_NAME));
   }
 
index 5ea6d245b0fbc3e9a01fcf1a54e7aecdd0719352..1f056a7849de40ef9541b347352f21aabbc9434d 100644 (file)
@@ -43,7 +43,6 @@ import org.sonar.server.permission.DefaultTemplatesResolver;
 import org.sonar.server.permission.DefaultTemplatesResolver.ResolvedDefaultTemplates;
 import org.sonar.server.permission.PermissionService;
 import org.sonar.server.permission.ws.PermissionsWsAction;
-import org.sonar.server.permission.ws.WsParameters;
 import org.sonar.server.user.UserSession;
 import org.sonarqube.ws.Permissions;
 import org.sonarqube.ws.Permissions.Permission;
@@ -88,8 +87,6 @@ public class SearchTemplatesAction implements PermissionsWsAction {
       .setSince("5.2")
       .addSearchQuery("defau", "permission template names")
       .setHandler(this);
-
-    WsParameters.createOrganizationParameter(action).setSince("6.2");
   }
 
   @Override
index 1cc3f6ceba65dcaa82ba171381e1e6fbd60b1dfe..35407297c16ee42818b34ed6cd54316e19a20e0b 100644 (file)
@@ -42,9 +42,8 @@ import org.sonar.server.user.UserSession;
 import static org.sonar.server.exceptions.NotFoundException.checkFoundWithOptional;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
 import static org.sonar.server.permission.ws.template.WsTemplateRef.newTemplateRef;
-import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext;
 import static org.sonar.server.ws.WsParameterBuilder.createDefaultTemplateQualifierParameter;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
+import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_QUALIFIER;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
@@ -71,7 +70,6 @@ public class SetDefaultTemplateAction implements PermissionsWsAction {
     return new SetDefaultTemplateRequest()
       .setQualifier(request.param(PARAM_QUALIFIER))
       .setTemplateId(request.param(PARAM_TEMPLATE_ID))
-      .setOrganization(request.param(PARAM_ORGANIZATION))
       .setTemplateName(request.param(PARAM_TEMPLATE_NAME));
   }
 
index ac54a067ec365c9015d15efa967c70f4233fb5fe..4496bdec69bcf70903caac8367b5477102f6fe71 100644 (file)
@@ -39,7 +39,6 @@ import org.sonar.db.permission.UserPermissionDto;
 import org.sonar.server.component.ComponentFinder;
 import org.sonar.server.es.ProjectIndexer;
 import org.sonar.server.es.ProjectIndexers;
-import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonar.server.project.Visibility;
 import org.sonar.server.user.UserSession;
 import org.sonarqube.ws.client.project.ProjectsWsParameters;
@@ -61,17 +60,15 @@ public class UpdateVisibilityAction implements ProjectsWsAction {
   private final ProjectIndexers projectIndexers;
   private final ProjectsWsSupport projectsWsSupport;
   private final UuidFactory uuidFactory;
-  private final DefaultOrganizationProvider defaultOrganizationProvider;
 
   public UpdateVisibilityAction(DbClient dbClient, ComponentFinder componentFinder, UserSession userSession,
-    ProjectIndexers projectIndexers, ProjectsWsSupport projectsWsSupport, UuidFactory uuidFactory, DefaultOrganizationProvider defaultOrganizationProvider) {
+    ProjectIndexers projectIndexers, ProjectsWsSupport projectsWsSupport, UuidFactory uuidFactory) {
     this.dbClient = dbClient;
     this.componentFinder = componentFinder;
     this.userSession = userSession;
     this.projectIndexers = projectIndexers;
     this.projectsWsSupport = projectsWsSupport;
     this.uuidFactory = uuidFactory;
-    this.defaultOrganizationProvider = defaultOrganizationProvider;
   }
 
   public void define(WebService.NewController context) {
@@ -155,7 +152,7 @@ public class UpdateVisibilityAction implements ProjectsWsAction {
   }
 
   private void insertProjectPermissionOnUser(DbSession dbSession, ComponentDto component, String permission, String userUuid) {
-    dbClient.userPermissionDao().insert(dbSession, new UserPermissionDto(Uuids.create(), permission, userUuid, component.uuid()), defaultOrganizationProvider.get().getUuid());
+    dbClient.userPermissionDao().insert(dbSession, new UserPermissionDto(Uuids.create(), permission, userUuid, component.uuid()));
   }
 
   private void insertProjectPermissionOnGroup(DbSession dbSession, ComponentDto component, String permission, String groupUuid) {
index 29dae521f9d5d76d19368553f61e75031d77c163..00efadbc94b40eab4169acf3fab0b268843201a0 100644 (file)
@@ -133,7 +133,7 @@ public class CurrentAction implements UsersWsAction {
 
   private List<String> getGlobalPermissions() {
     String defaultOrganizationUuid = defaultOrganizationProvider.get().getUuid();
-    return permissionService.getAllOrganizationPermissions().stream()
+    return permissionService.getGlobalPermissions().stream()
       .filter(permission -> userSession.hasPermission(permission))
       .map(OrganizationPermission::getKey)
       .collect(toList());
index 62c5d2f1b01fd15c8861e02c19080f5ea04335ee..57db06a7ce01e182f72727585b758965c38caf7b 100644 (file)
@@ -20,9 +20,7 @@
 package org.sonar.server.user.ws;
 
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
-import java.util.stream.Collectors;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
@@ -30,18 +28,14 @@ import org.sonar.api.server.ws.WebService.NewAction;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
-import org.sonar.db.organization.OrganizationDto;
-import org.sonar.db.organization.OrganizationHelper;
 import org.sonar.db.property.PropertyQuery;
 import org.sonar.db.user.UserDto;
-import org.sonar.server.exceptions.BadRequestException;
-import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonar.server.user.UserSession;
 import org.sonar.server.user.index.UserIndexer;
 
-import static java.lang.String.format;
 import static java.util.Collections.singletonList;
 import static org.sonar.api.CoreProperties.DEFAULT_ISSUE_ASSIGNEE;
+import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
 import static org.sonar.server.exceptions.BadRequestException.checkRequest;
 import static org.sonar.server.exceptions.NotFoundException.checkFound;
 
@@ -53,15 +47,12 @@ public class DeactivateAction implements UsersWsAction {
   private final UserIndexer userIndexer;
   private final UserSession userSession;
   private final UserJsonWriter userWriter;
-  private final DefaultOrganizationProvider defaultOrganizationProvider;
 
-  public DeactivateAction(DbClient dbClient, UserIndexer userIndexer, UserSession userSession, UserJsonWriter userWriter,
-    DefaultOrganizationProvider defaultOrganizationProvider) {
+  public DeactivateAction(DbClient dbClient, UserIndexer userIndexer, UserSession userSession, UserJsonWriter userWriter) {
     this.dbClient = dbClient;
     this.userIndexer = userIndexer;
     this.userSession = userSession;
     this.userWriter = userWriter;
-    this.defaultOrganizationProvider = defaultOrganizationProvider;
   }
 
   @Override
@@ -131,19 +122,8 @@ public class DeactivateAction implements UsersWsAction {
   }
 
   private void ensureNotLastAdministrator(DbSession dbSession, UserDto user) {
-    //TODO can this be removed?
-    List<OrganizationDto> problematicOrgs = new OrganizationHelper(dbClient).selectOrganizationsWithLastAdmin(dbSession, user.getUuid());
-    if (problematicOrgs.isEmpty()) {
-      return;
-    }
-    checkRequest(problematicOrgs.size() != 1 || !defaultOrganizationProvider.get().getUuid().equals(problematicOrgs.get(0).getUuid()),
-      "User is last administrator, and cannot be deactivated");
-    String keys = problematicOrgs
-      .stream()
-      .map(OrganizationDto::getKey)
-      .sorted()
-      .collect(Collectors.joining(", "));
-    throw BadRequestException.create(format("User '%s' is last administrator of organizations [%s], and cannot be deactivated", user.getLogin(), keys));
+    boolean isLastAdmin = dbClient.authorizationDao().countUsersWithGlobalPermissionExcludingUser(dbSession, ADMINISTER.getKey(), user.getUuid()) == 0;
+    checkRequest(!isLastAdmin, "User is last administrator, and cannot be deactivated");
   }
 
 }
index f6968a37568e78507a0db18b8fcd7a5c8947518d..c8573b469366cce080143932d44dd9a633faaa14 100644 (file)
@@ -34,7 +34,6 @@ import org.sonar.core.util.Uuids;
 import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.permission.GroupPermissionDto;
 import org.sonar.db.permission.OrganizationPermission;
 import org.sonar.db.user.GroupDto;
@@ -57,21 +56,19 @@ public class GroupPermissionChangerTest {
   private ResourceTypes resourceTypes = new ResourceTypesRule().setRootQualifiers(Qualifiers.PROJECT);
   private PermissionService permissionService = new PermissionServiceImpl(resourceTypes);
   private GroupPermissionChanger underTest = new GroupPermissionChanger(db.getDbClient(), new SequenceUuidFactory());
-  private OrganizationDto org;
   private GroupDto group;
   private ComponentDto privateProject;
   private ComponentDto publicProject;
 
   @Before
   public void setUp() {
-    org = db.organizations().insert();
     group = db.users().insertGroup("a-group");
-    privateProject = db.components().insertPrivateProject(org);
-    publicProject = db.components().insertPublicProject(org);
+    privateProject = db.components().insertPrivateProject();
+    publicProject = db.components().insertPublicProject();
   }
 
   @Test
-  public void apply_adds_organization_permission_to_group() {
+  public void apply_adds_global_permission_to_group() {
     GroupUuidOrAnyone groupUuid = GroupUuidOrAnyone.from(group);
 
     apply(new GroupPermissionChange(PermissionChange.Operation.ADD, GlobalPermissions.QUALITY_GATE_ADMIN, null, groupUuid, permissionService));
@@ -80,7 +77,7 @@ public class GroupPermissionChangerTest {
   }
 
   @Test
-  public void apply_adds_organization_permission_to_group_AnyOne() {
+  public void apply_adds_global_permission_to_group_AnyOne() {
     GroupUuidOrAnyone groupUuid = GroupUuidOrAnyone.forAnyone();
 
     apply(new GroupPermissionChange(PermissionChange.Operation.ADD, GlobalPermissions.QUALITY_GATE_ADMIN, null, groupUuid, permissionService));
@@ -318,7 +315,7 @@ public class GroupPermissionChangerTest {
   public void fail_to_add_global_permission_but_SCAN_and_ADMIN_on_private_project() {
     GroupUuidOrAnyone groupUuid = GroupUuidOrAnyone.from(group);
 
-    permissionService.getAllOrganizationPermissions().stream()
+    permissionService.getGlobalPermissions().stream()
       .map(OrganizationPermission::getKey)
       .filter(perm -> !UserRole.ADMIN.equals(perm) && !GlobalPermissions.SCAN_EXECUTION.equals(perm))
       .forEach(perm -> {
@@ -336,7 +333,7 @@ public class GroupPermissionChangerTest {
   public void fail_to_add_global_permission_but_SCAN_and_ADMIN_on_public_project() {
     GroupUuidOrAnyone groupUuid = GroupUuidOrAnyone.from(group);
 
-    permissionService.getAllOrganizationPermissions().stream()
+    permissionService.getGlobalPermissions().stream()
       .map(OrganizationPermission::getKey)
       .filter(perm -> !UserRole.ADMIN.equals(perm) && !GlobalPermissions.SCAN_EXECUTION.equals(perm))
       .forEach(perm -> {
index 55a66dc3a4a85d401e46ee09a661339fbb6a77d6..56100e169069e1bba24e82628308bf5ef5176a52 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.db.permission.OrganizationPermission;
 import org.sonar.db.user.GroupDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.server.exceptions.BadRequestException;
-import org.sonar.server.organization.TestDefaultOrganizationProvider;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.sonar.api.web.UserRole.ADMIN;
@@ -60,7 +59,7 @@ public class UserPermissionChangerTest {
 
   private ResourceTypes resourceTypes = new ResourceTypesRule().setRootQualifiers(Qualifiers.PROJECT);
   private PermissionService permissionService = new PermissionServiceImpl(resourceTypes);
-  private UserPermissionChanger underTest = new UserPermissionChanger(db.getDbClient(), new SequenceUuidFactory(), TestDefaultOrganizationProvider.from(db));
+  private UserPermissionChanger underTest = new UserPermissionChanger(db.getDbClient(), new SequenceUuidFactory());
   private UserDto user1;
   private UserDto user2;
   private ComponentDto privateProject;
@@ -75,8 +74,8 @@ public class UserPermissionChangerTest {
   }
 
   @Test
-  public void apply_adds_any_organization_permission_to_user() {
-    permissionService.getAllOrganizationPermissions().stream()
+  public void apply_adds_any_global_permission_to_user() {
+    permissionService.getGlobalPermissions().stream()
       .forEach(perm -> {
         UserPermissionChange change = new UserPermissionChange(ADD, perm.getKey(), null, UserId.from(user1), permissionService);
 
@@ -90,12 +89,12 @@ public class UserPermissionChangerTest {
   public void apply_removes_any_organization_permission_to_user() {
     // give ADMIN perm to user2 so that user1 is not the only one with this permission and it can be removed from user1
     db.users().insertPermissionOnUser(user2, OrganizationPermission.ADMINISTER);
-    permissionService.getAllOrganizationPermissions().stream()
+    permissionService.getGlobalPermissions().stream()
       .forEach(perm -> db.users().insertPermissionOnUser(user1, perm));
     assertThat(db.users().selectPermissionsOfUser(user1))
-      .containsOnly(permissionService.getAllOrganizationPermissions().toArray(new OrganizationPermission[0]));
+      .containsOnly(permissionService.getGlobalPermissions().toArray(new OrganizationPermission[0]));
 
-    permissionService.getAllOrganizationPermissions().stream()
+    permissionService.getGlobalPermissions().stream()
       .forEach(perm -> {
         UserPermissionChange change = new UserPermissionChange(REMOVE, perm.getKey(), null, UserId.from(user1), permissionService);
 
index 00ff421a1d2c044fafb96a3156893f6b22279670..a94d2248a65607183f62e98cf4b98893286c47a2 100644 (file)
@@ -28,7 +28,6 @@ import org.sonar.api.web.UserRole;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.GroupDto;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
@@ -51,7 +50,6 @@ import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.component.ComponentTesting.newModuleDto;
 import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
 import static org.sonar.db.component.ComponentTesting.newSubView;
-import static org.sonar.db.component.ComponentTesting.newView;
 import static org.sonar.db.permission.OrganizationPermission.SCAN;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
@@ -98,7 +96,7 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
   }
 
   @Test
-  public void reference_group_by_its_name_in_organization() {
+  public void reference_group_by_its_name() {
     GroupDto group = db.users().insertGroup("the-group");
     loginAsAdmin();
 
@@ -156,20 +154,19 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
   }
 
   @Test
-  public void add_with_view_uuid() {
-    OrganizationDto organizationDto = db.getDefaultOrganization();
+  public void add_with_portfolio_uuid() {
     GroupDto group = db.users().insertGroup("sonar-administrators");
-    ComponentDto view = db.components().insertComponent(newView(organizationDto, "view-uuid").setDbKey("view-key"));
+    ComponentDto portfolio = db.components().insertPrivatePortfolio();
     loginAsAdmin();
 
     newRequest()
       .setParam(PARAM_GROUP_NAME, group.getName())
-      .setParam(PARAM_PROJECT_ID, view.uuid())
+      .setParam(PARAM_PROJECT_ID, portfolio.uuid())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
       .execute();
 
     assertThat(db.users().selectGroupPermissions(group, null)).isEmpty();
-    assertThat(db.users().selectGroupPermissions(group, view)).containsOnly(SYSTEM_ADMIN);
+    assertThat(db.users().selectGroupPermissions(group, portfolio)).containsOnly(SYSTEM_ADMIN);
   }
 
   @Test
@@ -187,28 +184,32 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void fail_when_component_is_a_module() {
-    ComponentDto module = db.components().insertComponent(newModuleDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert())));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto module = db.components().insertComponent(newModuleDto(project));
 
     failIfComponentIsNotAProjectOrView(module);
   }
 
   @Test
   public void fail_when_component_is_a_directory() {
-    ComponentDto file = db.components().insertComponent(newDirectory(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), "A/B"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newDirectory(project, "A/B"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_file() {
-    ComponentDto file = db.components().insertComponent(newFileDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), null, "file-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newFileDto(project, null, "file-uuid"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_subview() {
-    ComponentDto file = db.components().insertComponent(newSubView(ComponentTesting.newView(db.organizations().insert())));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newSubView(project));
 
     failIfComponentIsNotAProjectOrView(file);
   }
@@ -239,9 +240,8 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void adding_a_project_permission_fails_if_component_is_not_a_project() {
-    OrganizationDto organizationDto = db.getDefaultOrganization();
     GroupDto group = db.users().insertGroup("sonar-administrators");
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organizationDto, A_PROJECT_UUID).setDbKey(A_PROJECT_KEY));
+    ComponentDto project = db.components().insertPrivateProject();
     ComponentDto file = db.components().insertComponent(ComponentTesting.newFileDto(project, null, "file-uuid"));
     loginAsAdmin();
 
@@ -292,7 +292,7 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
   }
 
   @Test
-  public void fail_if_not_administrator_of_organization() {
+  public void fail_if_not_global_administrator() {
     GroupDto group = db.users().insertGroup();
     loginAsAdmin();
 
@@ -306,7 +306,7 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
   @Test
   public void fail_when_project_uuid_and_project_key_are_provided() {
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(db.organizations().insert()));
+    ComponentDto project = db.components().insertPrivateProject();
     loginAsAdmin();
 
     expectedException.expect(BadRequestException.class);
@@ -388,8 +388,7 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void no_effect_when_adding_USER_permission_to_group_AnyOne_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     newRequest()
@@ -403,8 +402,7 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void no_effect_when_adding_CODEVIEWER_permission_to_group_AnyOne_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     newRequest()
@@ -418,9 +416,8 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void no_effect_when_adding_USER_permission_to_group_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     newRequest()
@@ -434,9 +431,8 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void no_effect_when_adding_CODEVIEWER_permission_to_group_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     newRequest()
@@ -450,9 +446,8 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void fail_when_using_branch_db_key() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
@@ -468,9 +463,8 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
 
   @Test
   public void fail_when_using_branch_uuid() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
index 2c40e685cf14672b8aec2d4a885d4b3cc78a5f89..436a0f5c1308ce7e799846e902242940258cde8a 100644 (file)
@@ -25,9 +25,7 @@ import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.ResourceTypes;
 import org.sonar.api.web.UserRole;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
@@ -45,11 +43,9 @@ import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.db.component.ComponentTesting.newDirectory;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.component.ComponentTesting.newModuleDto;
-import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
 import static org.sonar.db.component.ComponentTesting.newSubView;
 import static org.sonar.db.component.ComponentTesting.newView;
 import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY;
@@ -65,7 +61,6 @@ public class AddUserActionTest extends BasePermissionWsTest<AddUserAction> {
   @Before
   public void setUp() {
     user = db.users().insertUser("ray.bradbury");
-    db.organizations().addMember(db.getDefaultOrganization(), user);
   }
 
   @Override
@@ -145,28 +140,32 @@ public class AddUserActionTest extends BasePermissionWsTest<AddUserAction> {
 
   @Test
   public void fail_when_component_is_a_module() {
-    ComponentDto module = db.components().insertComponent(newModuleDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert())));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto module = db.components().insertComponent(newModuleDto(project));
 
     failIfComponentIsNotAProjectOrView(module);
   }
 
   @Test
   public void fail_when_component_is_a_directory() {
-    ComponentDto file = db.components().insertComponent(newDirectory(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), "A/B"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newDirectory(project, "A/B"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_file() {
-    ComponentDto file = db.components().insertComponent(newFileDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), null, "file-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newFileDto(project, null, "file-uuid"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_subview() {
-    ComponentDto file = db.components().insertComponent(newSubView(ComponentTesting.newView(db.organizations().insert())));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newSubView(project));
 
     failIfComponentIsNotAProjectOrView(file);
   }
@@ -198,7 +197,8 @@ public class AddUserActionTest extends BasePermissionWsTest<AddUserAction> {
 
   @Test
   public void fail_when_component_is_not_a_project() {
-    db.components().insertComponent(newFileDto(newPrivateProjectDto(db.organizations().insert(), "project-uuid"), null, "file-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
+    db.components().insertComponent(newFileDto(project, null, "file-uuid"));
     loginAsAdmin();
 
     expectedException.expect(BadRequestException.class);
@@ -262,7 +262,7 @@ public class AddUserActionTest extends BasePermissionWsTest<AddUserAction> {
   }
 
   @Test
-  public void adding_global_permission_fails_if_not_administrator_of_organization() {
+  public void adding_global_permission_fails_if_not_system_administrator() {
     userSession.logIn();
 
     expectedException.expect(ForbiddenException.class);
@@ -351,8 +351,7 @@ public class AddUserActionTest extends BasePermissionWsTest<AddUserAction> {
 
   @Test
   public void fail_when_using_branch_uuid() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
@@ -360,7 +359,6 @@ public class AddUserActionTest extends BasePermissionWsTest<AddUserAction> {
     expectedException.expectMessage(format("Project id '%s' not found", branch.uuid()));
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_PROJECT_ID, branch.uuid())
       .setParam(PARAM_USER_LOGIN, user.getLogin())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
index 9440ddca00418568be2e078fa468e4cd43307f40..588fab45048b673ead0d9086604c56e2f338082f 100644 (file)
@@ -85,7 +85,7 @@ public abstract class BasePermissionWsTest<A extends PermissionsWsAction> {
   protected PermissionUpdater newPermissionUpdater() {
     return new PermissionUpdater(
       new ProjectIndexersImpl(new PermissionIndexer(db.getDbClient(), es.client())),
-      new UserPermissionChanger(db.getDbClient(), new SequenceUuidFactory(), defaultOrganizationProvider),
+      new UserPermissionChanger(db.getDbClient(), new SequenceUuidFactory()),
       new GroupPermissionChanger(db.getDbClient(), new SequenceUuidFactory()));
   }
 
@@ -103,7 +103,6 @@ public abstract class BasePermissionWsTest<A extends PermissionsWsAction> {
 
   protected PermissionTemplateDto addTemplate() {
     PermissionTemplateDto dto = newPermissionTemplateDto();
-    dto.setOrganizationUuid(db.getDefaultOrganization().getUuid());
     db.getDbClient().permissionTemplateDao().insert(db.getSession(), dto);
     db.commit();
     return dto;
index 70f085484ba863cc384af1d37ad56e53bc5e9f6e..6ebcbe040378f8dc8d4bde87200b4685fcc9e851 100644 (file)
@@ -27,9 +27,7 @@ import org.sonar.api.security.DefaultGroups;
 import org.sonar.api.server.ws.Change;
 import org.sonar.api.server.ws.WebService.Action;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.GroupDto;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
@@ -178,12 +176,11 @@ public class GroupsActionTest extends BasePermissionWsTest<GroupsAction> {
 
   @Test
   public void search_groups_with_project_permissions() {
-    OrganizationDto organizationDto = db.getDefaultOrganization();
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organizationDto, "project-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
     GroupDto group = db.users().insertGroup("project-group-name");
     db.users().insertProjectPermissionOnGroup(group, ISSUE_ADMIN, project);
 
-    ComponentDto anotherProject = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(organizationDto));
+    ComponentDto anotherProject = db.components().insertPrivateProject();
     GroupDto anotherGroup = db.users().insertGroup("another-project-group-name");
     db.users().insertProjectPermissionOnGroup(anotherGroup, ISSUE_ADMIN, anotherProject);
 
@@ -192,7 +189,7 @@ public class GroupsActionTest extends BasePermissionWsTest<GroupsAction> {
     userSession.logIn().addProjectPermission(ADMIN, project);
     String result = newRequest()
       .setParam(PARAM_PERMISSION, ISSUE_ADMIN)
-      .setParam(PARAM_PROJECT_ID, "project-uuid")
+      .setParam(PARAM_PROJECT_ID, project.uuid())
       .execute()
       .getInput();
 
@@ -203,8 +200,7 @@ public class GroupsActionTest extends BasePermissionWsTest<GroupsAction> {
 
   @Test
   public void return_also_groups_without_permission_when_search_query() {
-    OrganizationDto organizationDto = db.getDefaultOrganization();
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organizationDto, "project-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
     GroupDto group = db.users().insertGroup("group-with-permission");
     db.users().insertProjectPermissionOnGroup(group, ISSUE_ADMIN, project);
 
@@ -214,7 +210,7 @@ public class GroupsActionTest extends BasePermissionWsTest<GroupsAction> {
     loginAsAdmin();
     String result = newRequest()
       .setParam(PARAM_PERMISSION, ISSUE_ADMIN)
-      .setParam(PARAM_PROJECT_ID, "project-uuid")
+      .setParam(PARAM_PROJECT_ID, project.uuid())
       .setParam(TEXT_QUERY, "group-with")
       .execute()
       .getInput();
@@ -245,8 +241,7 @@ public class GroupsActionTest extends BasePermissionWsTest<GroupsAction> {
 
   @Test
   public void return_anyone_group_when_search_query_and_no_param_permission() {
-    OrganizationDto organizationDto = db.organizations().insert();
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organizationDto, "project-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
     GroupDto group = db.users().insertGroup("group-with-permission");
     db.users().insertProjectPermissionOnGroup(group, ISSUE_ADMIN, project);
 
@@ -301,15 +296,15 @@ public class GroupsActionTest extends BasePermissionWsTest<GroupsAction> {
 
   @Test
   public void fail_if_project_uuid_and_project_key_are_provided() {
-    db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), "project-uuid").setDbKey("project-key"));
+    ComponentDto project = db.components().insertPrivateProject();
 
     expectedException.expect(BadRequestException.class);
 
     loginAsAdmin();
     newRequest()
       .setParam(PARAM_PERMISSION, SCAN_EXECUTION)
-      .setParam(PARAM_PROJECT_ID, "project-uuid")
-      .setParam(PARAM_PROJECT_KEY, "project-key")
+      .setParam(PARAM_PROJECT_ID, project.uuid())
+      .setParam(PARAM_PROJECT_KEY, project.getKey())
       .execute();
   }
 
index ba566bcaada1b022c417e0633445146ddc0ad369..692e35080c20423505bf67287dd1a0b6bb354c14 100644 (file)
@@ -28,9 +28,7 @@ import org.sonar.api.server.ws.WebService.Action;
 import org.sonar.api.web.UserRole;
 import org.sonar.core.util.Uuids;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.permission.GroupPermissionDto;
 import org.sonar.db.user.GroupDto;
 import org.sonar.server.exceptions.BadRequestException;
@@ -56,7 +54,6 @@ import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
 import static org.sonar.db.permission.OrganizationPermission.PROVISION_PROJECTS;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY;
@@ -209,28 +206,32 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
 
   @Test
   public void fail_when_component_is_a_module() {
-    ComponentDto module = db.components().insertComponent(newModuleDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert())));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto module = db.components().insertComponent(newModuleDto(project));
 
     failIfComponentIsNotAProjectOrView(module);
   }
 
   @Test
   public void fail_when_component_is_a_directory() {
-    ComponentDto file = db.components().insertComponent(newDirectory(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), "A/B"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newDirectory(project, "A/B"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_file() {
-    ComponentDto file = db.components().insertComponent(newFileDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), null, "file-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newFileDto(project, null, "file-uuid"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_subview() {
-    ComponentDto file = db.components().insertComponent(newSubView(ComponentTesting.newView(db.organizations().insert())));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newSubView(project));
 
     failIfComponentIsNotAProjectOrView(file);
   }
@@ -308,16 +309,8 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
       .execute();
   }
 
-  private void executeRequest(GroupDto groupDto, OrganizationDto organizationDto, String permission) {
-    newRequest()
-      .setParam(PARAM_GROUP_NAME, groupDto.getName())
-      .setParam(PARAM_PERMISSION, permission)
-      .setParam(PARAM_ORGANIZATION, organizationDto.getKey())
-      .execute();
-  }
-
   @Test
-  public void removing_global_permission_fails_if_not_administrator_of_organization() {
+  public void removing_global_permission_fails_if_not_system_administrator() {
     userSession.logIn();
 
     expectedException.expect(ForbiddenException.class);
@@ -382,8 +375,7 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
 
   @Test
   public void fail_when_removing_USER_permission_from_group_AnyOne_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     expectedException.expect(BadRequestException.class);
@@ -398,8 +390,7 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
 
   @Test
   public void fail_when_removing_CODEVIEWER_permission_from_group_AnyOne_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     expectedException.expect(BadRequestException.class);
@@ -414,16 +405,14 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
 
   @Test
   public void fail_when_removing_USER_permission_from_group_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     expectedException.expect(BadRequestException.class);
     expectedException.expectMessage("Permission user can't be removed from a public component");
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(PARAM_PROJECT_ID, project.uuid())
       .setParam(PARAM_PERMISSION, USER)
@@ -432,16 +421,14 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
 
   @Test
   public void fail_when_removing_CODEVIEWER_permission_from_group_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     expectedException.expect(BadRequestException.class);
     expectedException.expectMessage("Permission codeviewer can't be removed from a public component");
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(PARAM_PROJECT_ID, project.uuid())
       .setParam(PARAM_PERMISSION, CODEVIEWER)
@@ -450,9 +437,8 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
 
   @Test
   public void fail_when_using_branch_db_key() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
@@ -460,7 +446,6 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
     expectedException.expectMessage(format("Project key '%s' not found", branch.getDbKey()));
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_PROJECT_KEY, branch.getDbKey())
       .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
@@ -469,9 +454,8 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
 
   @Test
   public void fail_when_using_branch_uuid() {
-    OrganizationDto organization = db.organizations().insert();
     GroupDto group = db.users().insertGroup();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
@@ -479,7 +463,6 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
     expectedException.expectMessage(format("Project id '%s' not found", branch.uuid()));
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_PROJECT_ID, branch.uuid())
       .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
index 19015834a5903328c95c07cb80c465c0de522354..7596ae64cb3fe7ac7e27d11428c6a66604d4f04b 100644 (file)
@@ -25,9 +25,7 @@ import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.ResourceTypes;
 import org.sonar.api.web.UserRole;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
@@ -48,13 +46,10 @@ import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.db.component.ComponentTesting.newDirectory;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.component.ComponentTesting.newModuleDto;
-import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
 import static org.sonar.db.component.ComponentTesting.newSubView;
-import static org.sonar.db.component.ComponentTesting.newView;
 import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
 import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_GATES;
 import static org.sonar.db.permission.OrganizationPermission.PROVISION_PROJECTS;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY;
@@ -111,7 +106,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void remove_permission_from_project() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), A_PROJECT_UUID).setDbKey(A_PROJECT_KEY));
+    ComponentDto project = db.components().insertPrivateProject();
     db.users().insertProjectPermissionOnUser(user, CODEVIEWER, project);
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
     loginAsAdmin();
@@ -127,7 +122,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void remove_with_project_key() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), A_PROJECT_UUID).setDbKey(A_PROJECT_KEY));
+    ComponentDto project = db.components().insertPrivateProject();
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
     db.users().insertProjectPermissionOnUser(user, CODEVIEWER, project);
     loginAsAdmin();
@@ -143,7 +138,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void remove_with_view_uuid() {
-    ComponentDto view = db.components().insertComponent(newView(db.organizations().insert(), "view-uuid").setDbKey("view-key"));
+    ComponentDto view = db.components().insertView();
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, view);
     db.users().insertProjectPermissionOnUser(user, ADMIN, view);
     loginAsAdmin();
@@ -184,28 +179,32 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void fail_when_component_is_a_module() {
-    ComponentDto module = db.components().insertComponent(newModuleDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert())));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto module = db.components().insertComponent(newModuleDto(project));
 
     failIfComponentIsNotAProjectOrView(module);
   }
 
   @Test
   public void fail_when_component_is_a_directory() {
-    ComponentDto file = db.components().insertComponent(newDirectory(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), "A/B"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newDirectory(project, "A/B"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_file() {
-    ComponentDto file = db.components().insertComponent(newFileDto(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), null, "file-uuid"));
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto file = db.components().insertComponent(newFileDto(project, null, "file-uuid"));
 
     failIfComponentIsNotAProjectOrView(file);
   }
 
   @Test
   public void fail_when_component_is_a_subview() {
-    ComponentDto file = db.components().insertComponent(newSubView(ComponentTesting.newView(db.organizations().insert())));
+    ComponentDto portfolio = db.components().insertPrivatePortfolio();
+    ComponentDto file = db.components().insertComponent(newSubView(portfolio));
 
     failIfComponentIsNotAProjectOrView(file);
   }
@@ -260,7 +259,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void fail_when_project_uuid_and_project_key_are_provided() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), A_PROJECT_UUID).setDbKey(A_PROJECT_KEY));
+    ComponentDto project = db.components().insertPrivateProject();
     loginAsAdmin();
 
     expectedException.expect(BadRequestException.class);
@@ -275,7 +274,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
   }
 
   @Test
-  public void removing_global_permission_fails_if_not_administrator_of_organization() {
+  public void removing_global_permission_fails_if_not_system_administrator() {
     userSession.logIn();
 
     expectedException.expect(ForbiddenException.class);
@@ -321,8 +320,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void fail_when_removing_USER_permission_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     expectedException.expect(BadRequestException.class);
@@ -337,8 +335,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void fail_when_removing_CODEVIEWER_permission_on_a_public_project() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
 
     expectedException.expect(BadRequestException.class);
@@ -353,8 +350,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void fail_when_using_branch_db_key() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
@@ -362,7 +358,6 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
     expectedException.expectMessage(format("Project key '%s' not found", branch.getDbKey()));
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_PROJECT_KEY, branch.getDbKey())
       .setParam(PARAM_USER_LOGIN, user.getLogin())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
@@ -371,8 +366,7 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
 
   @Test
   public void fail_when_using_branch_uuid() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
@@ -380,7 +374,6 @@ public class RemoveUserActionTest extends BasePermissionWsTest<RemoveUserAction>
     expectedException.expectMessage(format("Project id '%s' not found", branch.uuid()));
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_PROJECT_ID, branch.uuid())
       .setParam(PARAM_USER_LOGIN, user.getLogin())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
index ea0d5b814eda90c7e02cdc375f02eddb8bc684b8..82832d8f0a170985f88d19809c83475c49faef19 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.server.permission.ws;
 
+import java.util.stream.IntStream;
 import org.junit.Before;
 import org.junit.Test;
 import org.sonar.api.resources.Qualifiers;
@@ -28,7 +29,6 @@ import org.sonar.db.component.ComponentDbTester;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.GroupDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.server.exceptions.ForbiddenException;
@@ -188,11 +188,7 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest<Sea
 
   @Test
   public void has_projects_ordered_by_name() {
-    OrganizationDto organizationDto = db.organizations().insert();
-    for (int i = 9; i >= 1; i--) {
-      db.components().insertComponent(ComponentTesting.newPrivateProjectDto(organizationDto)
-        .setName("project-name-" + i));
-    }
+    IntStream.rangeClosed(1, 9).forEach(i -> db.components().insertPrivateProject(p -> p.setName("project-name-" + i)));
 
     String result = newRequest()
       .setParam(PAGE, "1")
@@ -206,8 +202,8 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest<Sea
 
   @Test
   public void search_by_query_on_name() {
-    componentDb.insertProjectAndSnapshot(ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()).setName("project-name"));
-    componentDb.insertProjectAndSnapshot(ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()).setName("another-name"));
+    db.components().insertPrivateProject(p -> p.setName("project-name"));
+    db.components().insertPrivateProject(p -> p.setName("another-name"));
 
     String result = newRequest()
       .setParam(TEXT_QUERY, "project")
@@ -219,9 +215,8 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest<Sea
 
   @Test
   public void search_by_query_on_key_must_match_exactly() {
-    OrganizationDto organizationDto = db.organizations().insert();
-    componentDb.insertProjectAndSnapshot(ComponentTesting.newPrivateProjectDto(organizationDto).setDbKey("project-key"));
-    componentDb.insertProjectAndSnapshot(ComponentTesting.newPrivateProjectDto(organizationDto).setDbKey("another-key"));
+    db.components().insertPrivateProject(p -> p.setDbKey("project-key"));
+    db.components().insertPrivateProject(p -> p.setDbKey("another-key"));
 
     String result = newRequest()
       .setParam(TEXT_QUERY, "project-key")
@@ -234,9 +229,9 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest<Sea
 
   @Test
   public void handle_more_than_1000_projects() {
-    for (int i = 1; i <= 1001; i++) {
-      componentDb.insertProjectAndSnapshot(newPrivateProjectDto(db.getDefaultOrganization(), "project-uuid-" + i));
-    }
+    IntStream.rangeClosed(1, 1001).forEach(i -> {
+      db.components().insertPrivateProject("project-uuid-" + i);
+    });
 
     String result = newRequest()
       .setParam(TEXT_QUERY, "project")
@@ -249,9 +244,8 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest<Sea
 
   @Test
   public void filter_by_qualifier() {
-    OrganizationDto organizationDto = db.organizations().insert();
-    db.components().insertComponent(newView(organizationDto, "view-uuid"));
-    db.components().insertComponent(newPrivateProjectDto(organizationDto, "project-uuid"));
+    ComponentDto portfolio = db.components().insertPrivatePortfolio();
+    ComponentDto project = db.components().insertPrivateProject();
 
     Permissions.SearchProjectPermissionsWsResponse result = newRequest()
       .setParam(PARAM_QUALIFIER, Qualifiers.PROJECT)
@@ -259,8 +253,8 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest<Sea
 
     assertThat(result.getProjectsList())
       .extracting("id")
-      .contains("project-uuid")
-      .doesNotContain("view-uuid");
+      .contains(project.uuid())
+      .doesNotContain(portfolio.uuid());
   }
 
   @Test
index 35bc922546a321a6a74891898ccd0b318cc62cc5..fbde66d63b2a36887ececb39762872a702a59bf3 100644 (file)
@@ -26,9 +26,7 @@ import org.sonar.api.server.ws.WebService.Param;
 import org.sonar.api.server.ws.WebService.SelectionMode;
 import org.sonar.api.web.UserRole;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
@@ -47,7 +45,6 @@ import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
 import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
 import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
 import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
-import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
 import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
 import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_GATES;
 import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
@@ -55,7 +52,6 @@ import static org.sonar.db.permission.OrganizationPermission.PROVISION_PROJECTS;
 import static org.sonar.db.permission.OrganizationPermission.SCAN;
 import static org.sonar.db.user.UserTesting.newUserDto;
 import static org.sonar.test.JsonAssert.assertJson;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY;
@@ -76,11 +72,8 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
   @Test
   public void search_for_users_with_response_example() {
     UserDto user1 = db.users().insertUser(newUserDto().setLogin("admin").setName("Administrator").setEmail("admin@admin.com"));
-    db.organizations().addMember(db.getDefaultOrganization(), user1);
     UserDto user2 = db.users().insertUser(newUserDto().setLogin("adam.west").setName("Adam West").setEmail("adamwest@adamwest.com"));
-    db.organizations().addMember(db.getDefaultOrganization(), user2);
     UserDto user3 = db.users().insertUser(newUserDto().setLogin("george.orwell").setName("George Orwell").setEmail("george.orwell@1984.net"));
-    db.organizations().addMember(db.getDefaultOrganization(), user3);
     db.users().insertPermissionOnUser(user1, ADMINISTER_QUALITY_PROFILES);
     db.users().insertPermissionOnUser(user1, ADMINISTER);
     db.users().insertPermissionOnUser(user1, ADMINISTER_QUALITY_GATES);
@@ -105,20 +98,17 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
   @Test
   public void search_for_users_with_permission_on_project() {
     // User has permission on project
-    ComponentDto project = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()));
+    ComponentDto project = db.components().insertPrivateProject();
     UserDto user = db.users().insertUser(newUserDto());
-    db.organizations().addMember(db.getDefaultOrganization(), user);
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
 
     // User has permission on another project
-    ComponentDto anotherProject = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()));
+    ComponentDto anotherProject = db.components().insertPrivateProject();
     UserDto userHavePermissionOnAnotherProject = db.users().insertUser(newUserDto());
-    db.organizations().addMember(db.getDefaultOrganization(), userHavePermissionOnAnotherProject);
     db.users().insertProjectPermissionOnUser(userHavePermissionOnAnotherProject, ISSUE_ADMIN, anotherProject);
 
     // User has no permission
     UserDto withoutPermission = db.users().insertUser(newUserDto());
-    db.organizations().addMember(db.getDefaultOrganization(), withoutPermission);
 
     userSession.logIn().addProjectPermission(SYSTEM_ADMIN, project);
     String result = newRequest()
@@ -135,16 +125,13 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
   @Test
   public void search_also_for_users_without_permission_when_filtering_name() {
     // User with permission on project
-    ComponentDto project = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(db.organizations().insert()));
+    ComponentDto project = db.components().insertPrivateProject();
     UserDto user = db.users().insertUser(newUserDto("with-permission-login", "with-permission-name", "with-permission-email"));
-    db.organizations().addMember(db.getDefaultOrganization(), user);
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
 
     // User without permission
     UserDto withoutPermission = db.users().insertUser(newUserDto("without-permission-login", "without-permission-name", "without-permission-email"));
-    db.organizations().addMember(db.getDefaultOrganization(), withoutPermission);
     UserDto anotherUser = db.users().insertUser(newUserDto("another-user", "another-user", "another-user"));
-    db.organizations().addMember(db.getDefaultOrganization(), anotherUser);
 
     loginAsAdmin();
     String result = newRequest()
@@ -159,16 +146,13 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
   @Test
   public void search_also_for_users_without_permission_when_filtering_email() {
     // User with permission on project
-    ComponentDto project = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(db.organizations().insert()));
+    ComponentDto project = db.components().insertPrivateProject();
     UserDto user = db.users().insertUser(newUserDto("with-permission-login", "with-permission-name", "with-permission-email"));
-    db.organizations().addMember(db.getDefaultOrganization(), user);
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
 
     // User without permission
     UserDto withoutPermission = db.users().insertUser(newUserDto("without-permission-login", "without-permission-name", "without-permission-email"));
-    db.organizations().addMember(db.getDefaultOrganization(), withoutPermission);
     UserDto anotherUser = db.users().insertUser(newUserDto("another-user", "another-user", "another-user"));
-    db.organizations().addMember(db.getDefaultOrganization(), anotherUser);
 
     loginAsAdmin();
     String result = newRequest().setParam(PARAM_PROJECT_ID, project.uuid()).setParam(TEXT_QUERY, "email").execute().getInput();
@@ -179,16 +163,13 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
   @Test
   public void search_also_for_users_without_permission_when_filtering_login() {
     // User with permission on project
-    ComponentDto project = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(db.organizations().insert()));
+    ComponentDto project = db.components().insertPrivateProject();
     UserDto user = db.users().insertUser(newUserDto("with-permission-login", "with-permission-name", "with-permission-email"));
-    db.organizations().addMember(db.getDefaultOrganization(), user);
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
 
     // User without permission
     UserDto withoutPermission = db.users().insertUser(newUserDto("without-permission-login", "without-permission-name", "without-permission-email"));
-    db.organizations().addMember(db.getDefaultOrganization(), withoutPermission);
     UserDto anotherUser = db.users().insertUser(newUserDto("another-user", "another-user", "another-user"));
-    db.organizations().addMember(db.getDefaultOrganization(), anotherUser);
 
     loginAsAdmin();
     String result = newRequest().setParam(PARAM_PROJECT_ID, project.uuid()).setParam(TEXT_QUERY, "login").execute().getInput();
@@ -228,7 +209,6 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
   public void search_for_users_is_paginated() {
     for (int i = 9; i >= 0; i--) {
       UserDto user = db.users().insertUser(newUserDto().setName("user-" + i));
-      db.organizations().addMember(db.getDefaultOrganization(), user);
       db.users().insertPermissionOnUser(user, ADMINISTER);
       db.users().insertPermissionOnUser(user, ADMINISTER_QUALITY_GATES);
     }
@@ -271,7 +251,6 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
     loginAsAdmin();
     for (int i = 0; i < 30; i++) {
       UserDto user = db.users().insertUser(newUserDto().setLogin("user-" + i));
-      db.organizations().addMember(db.getDefaultOrganization(), user);
       db.users().insertPermissionOnUser(user, SCAN);
       db.users().insertPermissionOnUser(user, PROVISION_PROJECTS);
     }
@@ -320,7 +299,7 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
 
   @Test
   public void fail_if_project_uuid_and_project_key_are_provided() {
-    db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), "project-uuid").setDbKey("project-key"));
+    ComponentDto project = db.components().insertPrivateProject();
     loginAsAdmin();
 
     expectedException.expect(BadRequestException.class);
@@ -328,8 +307,8 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
 
     newRequest()
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
-      .setParam(PARAM_PROJECT_ID, "project-uuid")
-      .setParam(PARAM_PROJECT_KEY, "project-key")
+      .setParam(PARAM_PROJECT_ID, project.uuid())
+      .setParam(PARAM_PROJECT_KEY, project.getKey())
       .execute();
   }
 
@@ -345,9 +324,8 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
 
   @Test
   public void fail_when_using_branch_db_key() throws Exception {
-    OrganizationDto organization = db.organizations().insert();
     UserDto user = db.users().insertUser(newUserDto());
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     ComponentDto branch = db.components().insertProjectBranch(project);
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
@@ -356,7 +334,6 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
     expectedException.expectMessage(format("Project key '%s' not found", branch.getDbKey()));
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_PROJECT_KEY, branch.getDbKey())
       .setParam(PARAM_USER_LOGIN, user.getLogin())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
@@ -365,9 +342,8 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
 
   @Test
   public void fail_when_using_branch_uuid() {
-    OrganizationDto organization = db.organizations().insert();
     UserDto user = db.users().insertUser(newUserDto());
-    ComponentDto project = db.components().insertPublicProject(organization);
+    ComponentDto project = db.components().insertPublicProject();
     ComponentDto branch = db.components().insertProjectBranch(project);
     db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project);
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
@@ -376,7 +352,6 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
     expectedException.expectMessage(format("Project id '%s' not found", branch.uuid()));
 
     newRequest()
-      .setParam(PARAM_ORGANIZATION, organization.getKey())
       .setParam(PARAM_PROJECT_ID, branch.uuid())
       .setParam(PARAM_USER_LOGIN, user.getLogin())
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
@@ -385,11 +360,8 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
 
   private void insertUsersHavingGlobalPermissions() {
     UserDto user1 = db.users().insertUser(newUserDto("login-1", "name-1", "email-1"));
-    db.organizations().addMember(db.getDefaultOrganization(), user1);
     UserDto user2 = db.users().insertUser(newUserDto("login-2", "name-2", "email-2"));
-    db.organizations().addMember(db.getDefaultOrganization(), user2);
     UserDto user3 = db.users().insertUser(newUserDto("login-3", "name-3", "email-3"));
-    db.organizations().addMember(db.getDefaultOrganization(), user3);
     db.users().insertPermissionOnUser(user1, SCAN);
     db.users().insertPermissionOnUser(user2, SCAN);
     db.users().insertPermissionOnUser(user3, ADMINISTER);
index 542e3f59c97023caa16834a91a9f617926d5c59b..b7f21d221f612f2222946e175ac7771b90335bfb 100644 (file)
@@ -158,7 +158,7 @@ public class AddGroupToTemplateActionTest extends BasePermissionWsTest<AddGroupT
   }
 
   @Test
-  public void fail_if_not_admin_of_default_organization() {
+  public void fail_if_not_admin() {
     userSession.logIn();
 
     expectedException.expect(ForbiddenException.class);
index 5ef18f187707fcbbf1caeab345447e7f091ca694..0eb21c83a3c72439180cf574b123e4d962eae417 100644 (file)
@@ -129,7 +129,7 @@ public class AddProjectCreatorToTemplateActionTest extends BasePermissionWsTest<
   }
 
   @Test
-  public void fail_if_not_admin_of_default_organization() {
+  public void fail_if_not_admin() {
     userSession.logIn().addPermission(ADMINISTER_QUALITY_GATES);
 
     expectedException.expect(ForbiddenException.class);
index a04d0fc49bd03cd46d3a42430c41d68221c381be..0ecfd3cbe5423b12e5bd6588cd68b0ae108c964c 100644 (file)
@@ -27,7 +27,6 @@ import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.ResourceTypes;
 import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.db.component.ResourceTypesRule;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.permission.PermissionQuery;
 import org.sonar.db.permission.template.PermissionTemplateDto;
 import org.sonar.db.user.UserDto;
@@ -44,8 +43,8 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.sonar.api.web.UserRole.CODEVIEWER;
 import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
 import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
+import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_USER_LOGIN;
 
@@ -65,7 +64,6 @@ public class AddUserToTemplateActionTest extends BasePermissionWsTest<AddUserToT
   @Before
   public void setUp() {
     user = db.users().insertUser("user-login");
-    db.organizations().addMember(db.getDefaultOrganization(), user);
     permissionTemplate = db.permissionTemplates().insertTemplate();
   }
 
@@ -91,22 +89,6 @@ public class AddUserToTemplateActionTest extends BasePermissionWsTest<AddUserToT
     assertThat(getLoginsInTemplateAndPermission(permissionTemplate, CODEVIEWER)).containsExactly(user.getLogin());
   }
 
-  @Test
-  public void add_user_to_template_by_name_and_organization() {
-    OrganizationDto organizationDto = db.organizations().insert();
-    PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate();
-    loginAsAdmin();
-
-    newRequest()
-      .setParam(PARAM_USER_LOGIN, user.getLogin())
-      .setParam(PARAM_PERMISSION, CODEVIEWER)
-      .setParam(PARAM_TEMPLATE_NAME, permissionTemplate.getName().toUpperCase())
-      .setParam(PARAM_ORGANIZATION, organizationDto.getKey())
-      .execute();
-
-    assertThat(getLoginsInTemplateAndPermission(permissionTemplate, CODEVIEWER)).containsExactly(user.getLogin());
-  }
-
   @Test
   public void does_not_add_a_user_twice() {
     loginAsAdmin();
@@ -127,7 +109,7 @@ public class AddUserToTemplateActionTest extends BasePermissionWsTest<AddUserToT
   }
 
   @Test
-  public void fail_if_not_admin_of_default_organization() {
+  public void fail_if_not_admin() {
     userSession.logIn().addPermission(ADMINISTER_QUALITY_PROFILES);
 
     expectedException.expect(ForbiddenException.class);
@@ -188,7 +170,7 @@ public class AddUserToTemplateActionTest extends BasePermissionWsTest<AddUserToT
       request.setParam(PARAM_USER_LOGIN, userLogin);
     }
     if (templateKey != null) {
-      request.setParam(org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID, templateKey);
+      request.setParam(PARAM_TEMPLATE_ID, templateKey);
     }
     if (permission != null) {
       request.setParam(PARAM_PERMISSION, permission);
@@ -203,7 +185,4 @@ public class AddUserToTemplateActionTest extends BasePermissionWsTest<AddUserToT
       .selectUserLoginsByQueryAndTemplate(db.getSession(), permissionQuery, template.getUuid());
   }
 
-  private void addUserAsMemberOfOrganization(OrganizationDto organization) {
-    db.organizations().addMember(organization, user);
-  }
 }
index 590216ceb4c7dd445c33f78edeec109b6791f3b4..0db7a368c4b56eca2e4e7851d671333afe287a68 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.server.es.TestProjectIndexers;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
-import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.permission.DefaultTemplatesResolverRule;
 import org.sonar.server.permission.PermissionTemplateService;
 import org.sonar.server.permission.ws.BasePermissionWsTest;
@@ -71,9 +70,7 @@ public class ApplyTemplateActionTest extends BasePermissionWsTest<ApplyTemplateA
   @Before
   public void setUp() {
     user1 = db.users().insertUser();
-    db.organizations().addMember(db.getDefaultOrganization(), user1);
     user2 = db.users().insertUser();
-    db.organizations().addMember(db.getDefaultOrganization(), user2);
     group1 = db.users().insertGroup();
     group2 = db.users().insertGroup();
 
index 1d367d43e2c518e4ac0e2cc0085e3e1593a3be1c..1c8834300cecac1b6c904f9299dbbd3fb2d74ab2 100644 (file)
@@ -30,7 +30,6 @@ import org.sonar.api.web.UserRole;
 import org.sonar.core.util.SequenceUuidFactory;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTesting;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.permission.PermissionQuery;
 import org.sonar.db.permission.template.PermissionTemplateDto;
 import org.sonar.db.user.GroupDto;
@@ -101,8 +100,7 @@ public class BulkApplyTemplateActionTest extends BasePermissionWsTest<BulkApplyT
   @Test
   public void bulk_apply_template_by_template_uuid() {
     // this project should not be applied the template
-    OrganizationDto otherOrganization = db.organizations().insert();
-    db.components().insertPrivateProject(otherOrganization);
+    db.components().insertPrivateProject();
 
     ComponentDto privateProject = db.components().insertPrivateProject();
     ComponentDto publicProject = db.components().insertPublicProject();
index 9cc1134ec4a2a08ca377cd2f18aef8c4a3558d38..81ae31701e564425c318e02c59a2aef5b101a52d 100644 (file)
@@ -45,6 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.sonar.api.web.UserRole.CODEVIEWER;
 import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
+import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_USER_LOGIN;
 
@@ -67,7 +68,6 @@ public class RemoveUserFromTemplateActionTest extends BasePermissionWsTest<Remov
   @Before
   public void setUp() {
     user = db.users().insertUser("user-login");
-    db.organizations().addMember(db.getDefaultOrganization(), user);
     template = db.permissionTemplates().insertTemplate();
     addUserToTemplate(user, template, DEFAULT_PERMISSION);
   }
@@ -115,7 +115,6 @@ public class RemoveUserFromTemplateActionTest extends BasePermissionWsTest<Remov
   @Test
   public void keep_other_users_when_one_user_removed() {
     UserDto newUser = db.users().insertUser("new-login");
-    db.organizations().addMember(db.getDefaultOrganization(), newUser);
     addUserToTemplate(newUser, template, DEFAULT_PERMISSION);
 
     loginAsAdmin();
@@ -204,7 +203,7 @@ public class RemoveUserFromTemplateActionTest extends BasePermissionWsTest<Remov
       request.setParam(PARAM_USER_LOGIN, userLogin);
     }
     if (templateKey != null) {
-      request.setParam(org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID, templateKey);
+      request.setParam(PARAM_TEMPLATE_ID, templateKey);
     }
     if (permission != null) {
       request.setParam(PARAM_PERMISSION, permission);
index bbd6d1d9719b3877baf2cc31f06d355bcb133411..f4d7b62abde356b16a93ca3c0c6bf9f799aca039 100644 (file)
@@ -316,7 +316,6 @@ public class SearchTemplatesActionTest extends BasePermissionWsTest<SearchTempla
 
   private PermissionTemplateDto insertProjectTemplate(String uuid) {
     return insertTemplate(newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setUuid(uuid)
       .setName("Default template for Projects")
       .setDescription("Template for new projects")
@@ -327,7 +326,6 @@ public class SearchTemplatesActionTest extends BasePermissionWsTest<SearchTempla
 
   private PermissionTemplateDto insertPortfoliosTemplate() {
     return insertTemplate(newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setUuid(UUID_EXAMPLE_02)
       .setName("Default template for Portfolios")
       .setDescription("Template for new portfolios")
@@ -338,7 +336,6 @@ public class SearchTemplatesActionTest extends BasePermissionWsTest<SearchTempla
 
   private PermissionTemplateDto insertApplicationsTemplate() {
     return insertTemplate(newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setUuid(UUID_EXAMPLE_10)
       .setName("Default template for Applications")
       .setDescription("Template for new applications")
index 267c012ab12b0aad6705aba5755543cb35864858..39d27aaa82ad27c4868126d1eeec3b2560b1ce59 100644 (file)
@@ -189,7 +189,6 @@ public class SetDefaultTemplateActionTest extends BasePermissionWsTest<SetDefaul
 
   private PermissionTemplateDto insertTemplate() {
     PermissionTemplateDto res = dbClient.permissionTemplateDao().insert(db.getSession(), PermissionTemplateTesting.newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setUuid("permission-template-uuid"));
     db.commit();
     return res;
index 31855594a3f2acf6b7f8eac4681ab3436661e43b..afba21ddc2a900972aa3cee5a01083010e180e5f 100644 (file)
@@ -224,7 +224,6 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
     PermissionTemplateDto otherTemplate = db.permissionTemplates().insertTemplate();
     IntStream.rangeClosed(1, DEFAULT_PAGE_SIZE + 1).forEach(i -> {
       UserDto user = db.users().insertUser("User-" + i);
-      db.organizations().addMember(db.getDefaultOrganization(), user);
       db.permissionTemplates().addUserToTemplate(otherTemplate, user, UserRole.USER);
     });
     String lastLogin = "User-" + (DEFAULT_PAGE_SIZE + 1);
@@ -306,7 +305,6 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   private UserDto insertUser(UserDto userDto) {
     db.users().insertUser(userDto);
-    db.organizations().addMember(db.getDefaultOrganization(), userDto);
     return userDto;
   }
 
index 6890b258b319e88a1e24bf628e46a88f08393813..8105b6f7b2c68d1ff4c4fae0e80f3aec2e4d9a64 100644 (file)
@@ -35,8 +35,8 @@ import org.sonar.server.ws.TestRequest;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
-import static org.sonar.db.permission.template.PermissionTemplateTesting.newPermissionTemplateDto;
 import static org.sonar.db.permission.OrganizationPermission.SCAN;
+import static org.sonar.db.permission.template.PermissionTemplateTesting.newPermissionTemplateDto;
 import static org.sonar.test.JsonAssert.assertJson;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID;
@@ -57,7 +57,6 @@ public class UpdateTemplateActionTest extends BasePermissionWsTest<UpdateTemplat
   public void setUp() {
     when(system.now()).thenReturn(1_440_512_328_743L);
     template = db.getDbClient().permissionTemplateDao().insert(db.getSession(), newPermissionTemplateDto()
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setName("Permission Template Name")
       .setDescription("Permission Template Description")
       .setKeyPattern(".*\\.pattern\\..*")
index 75b65ae79b2f265aa7d860f2eeb89e8237a39dc4..24608118dde6be267fd448b29ddbcd3689441dc1 100644 (file)
@@ -109,7 +109,7 @@ public class UpdateVisibilityActionTest {
 
   private ProjectsWsSupport wsSupport = new ProjectsWsSupport(dbClient, TestDefaultOrganizationProvider.from(dbTester), billingValidations);
   private UpdateVisibilityAction underTest = new UpdateVisibilityAction(dbClient, TestComponentFinder.from(dbTester),
-    userSessionRule, projectIndexers, wsSupport, new SequenceUuidFactory(), TestDefaultOrganizationProvider.from(dbTester));
+    userSessionRule, projectIndexers, wsSupport, new SequenceUuidFactory());
   private WsActionTester ws = new WsActionTester(underTest);
 
   private final Random random = new Random();
@@ -677,7 +677,7 @@ public class UpdateVisibilityActionTest {
 
   private void unsafeInsertProjectPermissionOnUser(ComponentDto component, UserDto user, String permission) {
     UserPermissionDto dto = new UserPermissionDto(Uuids.create(), permission, user.getUuid(), component.uuid());
-    dbTester.getDbClient().userPermissionDao().insert(dbTester.getSession(), dto, dbTester.getDefaultOrganization().getUuid());
+    dbTester.getDbClient().userPermissionDao().insert(dbTester.getSession(), dto);
     dbTester.commit();
   }
 
index 5f72c2345d579d6d95d5991789e2bea93f08bde0..8b70ff2e065dccf55429311615d36acdece1da3e 100644 (file)
@@ -48,8 +48,6 @@ import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.exceptions.UnauthorizedException;
-import org.sonar.server.organization.DefaultOrganizationProvider;
-import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.tester.UserSessionRule;
 import org.sonar.server.user.index.UserIndexDefinition;
 import org.sonar.server.user.index.UserIndexer;
@@ -77,25 +75,21 @@ public class DeactivateActionTest {
 
   @Rule
   public ExpectedException expectedException = ExpectedException.none();
-
   @Rule
   public DbTester db = DbTester.create(system2);
-
   @Rule
   public EsTester es = EsTester.create();
-
   @Rule
   public UserSessionRule userSession = UserSessionRule.standalone();
 
-  private final DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
   private final DbClient dbClient = db.getDbClient();
   private final UserIndexer userIndexer = new UserIndexer(dbClient, es.client());
   private final DbSession dbSession = db.getSession();
-  private final WsActionTester ws = new WsActionTester(new DeactivateAction(dbClient, userIndexer, userSession,
-    new UserJsonWriter(userSession), defaultOrganizationProvider));
+  private final WsActionTester ws = new WsActionTester(new DeactivateAction(dbClient, userIndexer, userSession, new UserJsonWriter(userSession)));
 
   @Test
   public void deactivate_user_and_delete_his_related_data() {
+    createAdminUser();
     UserDto user = db.users().insertUser(u -> u
       .setLogin("ada.lovelace")
       .setEmail("ada.lovelace@noteg.com")
@@ -115,6 +109,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_group_membership() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     GroupDto group1 = db.users().insertGroup();
@@ -128,6 +123,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_tokens() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     db.users().insertToken(user);
@@ -141,6 +137,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_properties() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     ComponentDto project = db.components().insertPrivateProject();
@@ -156,6 +153,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_permissions() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     ComponentDto project = db.components().insertPrivateProject();
@@ -172,6 +170,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_permission_templates() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     PermissionTemplateDto template = db.permissionTemplates().insertTemplate();
@@ -189,6 +188,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_qprofiles_permissions() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     QProfileDto profile = db.qualityProfiles().insert();
@@ -201,6 +201,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_default_assignee_settings() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     ComponentDto project = db.components().insertPrivateProject();
@@ -217,6 +218,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_organization_membership() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     OrganizationDto organization = db.organizations().insert();
@@ -232,6 +234,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_user_settings() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     db.users().insertUserSetting(user);
@@ -247,10 +250,9 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_alm_pat() {
+    createAdminUser();
     logInAsSystemAdministrator();
-
     AlmSettingDto almSettingDto = db.almSettings().insertBitbucketAlmSetting();
-
     UserDto user = db.users().insertUser();
     db.almPats().insert(p -> p.setUserUuid(user.getUuid()), p -> p.setAlmSettingUuid(almSettingDto.getUuid()));
     UserDto anotherUser = db.users().insertUser();
@@ -264,6 +266,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_session_tokens() {
+    createAdminUser();
     logInAsSystemAdministrator();
     UserDto user = db.users().insertUser();
     SessionTokenDto sessionToken1 = db.users().insertSessionToken(user);
@@ -280,6 +283,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivate_user_deletes_his_dismissed_messages() {
+    createAdminUser();
     logInAsSystemAdministrator();
     ProjectDto project1 = db.components().insertPrivateProjectDto();
     ProjectDto project2 = db.components().insertPrivateProjectDto();
@@ -301,6 +305,7 @@ public class DeactivateActionTest {
 
   @Test
   public void user_cannot_deactivate_itself_on_sonarqube() {
+    createAdminUser();
     UserDto user = db.users().insertUser();
     userSession.logIn(user.getLogin()).setSystemAdministrator();
 
@@ -314,6 +319,8 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivation_requires_to_be_logged_in() {
+    createAdminUser();
+
     expectedException.expect(UnauthorizedException.class);
     expectedException.expectMessage("Authentication is required");
 
@@ -322,6 +329,7 @@ public class DeactivateActionTest {
 
   @Test
   public void deactivation_requires_administrator_permission_on_sonarqube() {
+    createAdminUser();
     userSession.logIn();
 
     expectedException.expect(ForbiddenException.class);
@@ -332,6 +340,7 @@ public class DeactivateActionTest {
 
   @Test
   public void fail_if_user_does_not_exist() {
+    createAdminUser();
     logInAsSystemAdministrator();
 
     expectedException.expect(NotFoundException.class);
@@ -342,6 +351,7 @@ public class DeactivateActionTest {
 
   @Test
   public void fail_if_login_is_blank() {
+    createAdminUser();
     logInAsSystemAdministrator();
 
     expectedException.expect(IllegalArgumentException.class);
@@ -352,6 +362,7 @@ public class DeactivateActionTest {
 
   @Test
   public void fail_if_login_is_missing() {
+    createAdminUser();
     logInAsSystemAdministrator();
 
     expectedException.expect(IllegalArgumentException.class);
@@ -374,11 +385,8 @@ public class DeactivateActionTest {
 
   @Test
   public void administrators_can_be_deactivated_if_there_are_still_other_administrators() {
-    UserDto admin = db.users().insertUser();
-    UserDto anotherAdmin = db.users().insertUser();
-    db.users().insertPermissionOnUser(admin, ADMINISTER);
-    db.users().insertPermissionOnUser(anotherAdmin, ADMINISTER);
-    db.commit();
+    UserDto admin = createAdminUser();;
+    UserDto anotherAdmin = createAdminUser();
     logInAsSystemAdministrator();
 
     deactivate(admin.getLogin());
@@ -396,6 +404,7 @@ public class DeactivateActionTest {
 
   @Test
   public void test_example() {
+    createAdminUser();
     UserDto user = db.users().insertUser(u -> u
       .setLogin("ada.lovelace")
       .setEmail("ada.lovelace@noteg.com")
@@ -436,4 +445,11 @@ public class DeactivateActionTest {
     assertThat(user.get().getScmAccountsAsList()).isEmpty();
   }
 
+  private UserDto createAdminUser() {
+    UserDto admin = db.users().insertUser();
+    db.users().insertPermissionOnUser(admin, ADMINISTER);
+    db.commit();
+    return admin;
+  }
+
 }
index cb5825763d233a0ec7db48606389ac74a391f8ff..360ebffa3aba1c6076039765e6e8263b8daa0b04 100644 (file)
@@ -154,7 +154,7 @@ public class DeleteActionTest {
     insertDefaultGroup();
     GroupDto group = db.users().insertGroup();
     PermissionTemplateDto template = db.getDbClient().permissionTemplateDao().insert(db.getSession(),
-      PermissionTemplateTesting.newPermissionTemplateDto().setOrganizationUuid(db.getDefaultOrganization().getUuid()));
+      PermissionTemplateTesting.newPermissionTemplateDto());
     db.getDbClient().permissionTemplateDao().insertGroupPermission(db.getSession(), template.getUuid(), group.getUuid(), "perm");
     db.commit();
     loginAsAdmin();
index 45a268e1a34270c77126236050fa8f3f2f81800b..7d60d835600c16d7b00b3328a7557d13dc2ef451 100644 (file)
@@ -23,7 +23,6 @@ public class PermissionsWsParameters {
   public static final String CONTROLLER = "api/permissions";
 
   public static final String PARAM_PERMISSION = "permission";
-  public static final String PARAM_ORGANIZATION = "organization";
   public static final String PARAM_GROUP_NAME = "groupName";
   public static final String PARAM_GROUP_ID = "groupId";
   public static final String PARAM_PROJECT_ID = "projectId";