]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-13999 drop organization from Components WS
authorJacek <jacek.poreda@sonarsource.com>
Wed, 9 Dec 2020 09:48:20 +0000 (10:48 +0100)
committersonartech <sonartech@sonarsource.com>
Tue, 22 Dec 2020 20:09:35 +0000 (20:09 +0000)
48 files changed:
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/component/ComponentDbTester.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/component/ComponentTesting.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/qualitygate/QualityGateDbTester.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/ce/queue/ReportSubmitter.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ComponentFinder.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ComponentUpdater.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/NewComponent.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/SearchAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/ShowAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/SuggestionsAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/TreeAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/project/ws/CreateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/ui/ws/ComponentAction.java
server/sonar-webserver-webapi/src/main/resources/org/sonar/server/component/ws/search-components-example.json
server/sonar-webserver-webapi/src/main/resources/org/sonar/server/component/ws/search_projects-example.json
server/sonar-webserver-webapi/src/main/resources/org/sonar/server/component/ws/show-example.json
server/sonar-webserver-webapi/src/main/resources/org/sonar/server/component/ws/suggestions-example.json
server/sonar-webserver-webapi/src/main/resources/org/sonar/server/component/ws/tree-example.json
server/sonar-webserver-webapi/src/main/resources/org/sonar/server/ui/ws/component-example.json
server/sonar-webserver-webapi/src/test/java/org/sonar/server/ce/queue/ReportSubmitterTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentFinderTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentServiceTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentServiceUpdateKeyTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentUpdaterTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/NewComponentTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/AppActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/ComponentDtoToWsComponentTest.java [deleted file]
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/FilterParserTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/SearchActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/ShowActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/SuggestionsActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/TreeActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/project/ws/CreateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/ui/ws/ComponentActionTest.java
server/sonar-webserver-webapi/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_bread_crumbs_on_several_levels.json
server/sonar-webserver-webapi/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_anonymous_no_snapshot.json
server/sonar-webserver-webapi/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_file_on_branch.json
server/sonar-webserver-webapi/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_file_on_master.json
server/sonar-webserver-webapi/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_snapshot.json
server/sonar-webserver-webapi/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_with_favourite.json
server/sonar-webserver-webapi/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_configuration_with_all_properties.json
sonar-ws/src/main/java/org/sonarqube/ws/client/component/ComponentsWsParameters.java
sonar-ws/src/main/protobuf/ws-components.proto

index 03954390f6476c94a0b4003cdcf9e9398f9875a4..5e8134243d701473491256a4cd4f8a1f9c07ddc6 100644 (file)
@@ -52,6 +52,10 @@ public class ComponentDbTester {
   }
 
   public SnapshotDto insertViewAndSnapshot(ComponentDto component) {
+    if (component.getOrganizationUuid() == null) {
+      component.setOrganizationUuid(db.getDefaultOrganization().getUuid());
+    }
+
     dbClient.componentDao().insert(dbSession, component);
     return insertSnapshot(component);
   }
@@ -101,6 +105,11 @@ public class ComponentDbTester {
       dtoPopulator);
   }
 
+  public final ComponentDto insertPublicProject(Consumer<ComponentDto> componentDtoPopulator, Consumer<ProjectDto> projectDtoPopulator) {
+    return insertComponentAndBranchAndProject(ComponentTesting.newPublicProjectDto(db.getDefaultOrganization()), false, defaults(), componentDtoPopulator,
+      projectDtoPopulator);
+  }
+
   public final ComponentDto insertPrivateProject(OrganizationDto organizationDto, Consumer<ComponentDto> componentDtoPopulator) {
     return insertPrivateProject(organizationDto, componentDtoPopulator, defaults());
   }
@@ -168,6 +177,10 @@ public class ComponentDbTester {
     return getProjectDto(componentDto);
   }
 
+  public final ComponentDto insertPrivateProject(String uuid, Consumer<ComponentDto> dtoPopulator) {
+    return insertPrivateProject(db.getDefaultOrganization(), uuid, dtoPopulator);
+  }
+
   public ProjectDto insertPrivateProjectDto(OrganizationDto organization, Consumer<BranchDto> branchConsumer) {
     ComponentDto componentDto = insertPrivateProjectWithCustomBranch(organization, branchConsumer, defaults());
     return getProjectDto(componentDto);
@@ -267,18 +280,28 @@ public class ComponentDbTester {
     return insertPrivatePortfolio(organization, defaults());
   }
 
+  public final ComponentDto insertPrivatePortfolio(Consumer<ComponentDto> dtoPopulator) {
+    return insertComponentImpl(ComponentTesting.newView(db.getDefaultOrganization()).setPrivate(true), true, dtoPopulator);
+  }
+
   public final ComponentDto insertPrivatePortfolio(OrganizationDto organization, Consumer<ComponentDto> dtoPopulator) {
     return insertComponentImpl(ComponentTesting.newView(organization).setPrivate(true), true, dtoPopulator);
   }
 
   public final ComponentDto insertPublicApplication() {
-    return insertPublicApplication(db.getDefaultOrganization());
+    return insertPublicApplication(db.getDefaultOrganization(), defaults());
   }
 
+  public final ComponentDto insertPublicApplication(Consumer<ComponentDto> dtoPopulator) {
+    return insertPublicApplication(db.getDefaultOrganization(), dtoPopulator);
+  }
+
+  @Deprecated
   public final ComponentDto insertPublicApplication(OrganizationDto organization) {
     return insertPublicApplication(organization, defaults());
   }
 
+  @Deprecated
   public final ComponentDto insertPublicApplication(OrganizationDto organization, Consumer<ComponentDto> dtoPopulator) {
     return insertComponentAndBranchAndProject(ComponentTesting.newApplication(organization).setPrivate(false), false, defaults(), dtoPopulator);
   }
index 070891812f07463d6b22760862c876828ba3573e..ebf02698f0499ed574c25a9bbb96d0bef83f5b06 100644 (file)
@@ -147,6 +147,11 @@ public class ComponentTesting {
     return newProjectDto(organizationDto.getUuid(), uuid, true);
   }
 
+
+  public static ComponentDto newPublicProjectDto() {
+    return newProjectDto(Uuids.createFast(), false);
+  }
+
   // TODO remove
   @Deprecated
   public static ComponentDto newPublicProjectDto(OrganizationDto organizationDto) {
@@ -211,10 +216,24 @@ public class ComponentTesting {
       .setPrivate(isPrivate);
   }
 
+  public static ComponentDto newView() {
+    return newView(Uuids.createFast());
+  }
+
+  public static ComponentDto newView(String uuid) {
+    return newPrivateProjectDto(uuid)
+        .setUuid(uuid)
+        .setScope(Scopes.PROJECT)
+        .setQualifier(Qualifiers.VIEW)
+        .setPrivate(false);
+  }
+
+  @Deprecated
   public static ComponentDto newView(OrganizationDto organizationDto) {
     return newView(organizationDto.getUuid(), Uuids.createFast());
   }
 
+  @Deprecated
   public static ComponentDto newView(OrganizationDto organizationDto, String uuid) {
     return newPrivateProjectDto(organizationDto, uuid)
       .setUuid(uuid)
index 7008054b1e188646446cf0914633a915a3fadbe8..5d6f40a579972dd8856b911b292ba09e71a7b269 100644 (file)
@@ -56,6 +56,12 @@ public class QualityGateDbTester {
     return builtin;
   }
 
+  @SafeVarargs
+  public final QGateWithOrgDto insertQualityGate(Consumer<QualityGateDto>... dtoPopulators) {
+    return insertQualityGate(db.getDefaultOrganization(), dtoPopulators);
+  }
+
+  @Deprecated
   @SafeVarargs
   public final QGateWithOrgDto insertQualityGate(OrganizationDto organization, Consumer<QualityGateDto>... dtoPopulators) {
     QualityGateDto qualityGate = new QualityGateDto()
@@ -80,6 +86,12 @@ public class QualityGateDbTester {
   }
 
   @SafeVarargs
+  public final QualityGateDto createDefaultQualityGate(Consumer<QualityGateDto>... dtoPopulators) {
+    return createDefaultQualityGate(db.getDefaultOrganization(), dtoPopulators);
+  }
+
+  @SafeVarargs
+  @Deprecated
   public final QualityGateDto createDefaultQualityGate(OrganizationDto organization, Consumer<QualityGateDto>... dtoPopulators) {
     QualityGateDto defaultQGate = insertQualityGate(organization, dtoPopulators);
     setDefaultQualityGate(organization, defaultQGate);
index 24dacf4411e1337f2ef84122f2cb50ab6f03dfea..027fbd8564f4caff9a82df164b14c668a023bb85 100644 (file)
@@ -164,7 +164,6 @@ public class ReportSubmitter {
     boolean newProjectPrivate = dbClient.organizationDao().getNewProjectPrivate(dbSession, defaultOrgUuid);
 
     NewComponent newProject = newComponentBuilder()
-      .setOrganizationUuid(defaultOrgUuid)
       .setKey(componentKey.getKey())
       .setName(defaultIfBlank(projectName, componentKey.getKey()))
       .setQualifier(Qualifiers.PROJECT)
index 8b2973f0de0003198f498a07435529c4224c0bfe..4c0bb4a223d164186e50424a887dcb039fdbb9cc 100644 (file)
@@ -32,14 +32,12 @@ import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.component.BranchDto;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.server.exceptions.NotFoundException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.lang.String.format;
 import static org.sonar.server.exceptions.BadRequestException.checkRequest;
-import static org.sonar.server.exceptions.NotFoundException.checkFoundWithOptional;
 
 public class ComponentFinder {
   private static final String MSG_COMPONENT_ID_OR_KEY_TEMPLATE = "Either '%s' or '%s' must be provided";
@@ -178,12 +176,6 @@ public class ComponentFinder {
       .collect(MoreCollectors.toSet(rootTypes.size()));
   }
 
-  public OrganizationDto getOrganization(DbSession dbSession, ComponentDto component) {
-    String organizationUuid = component.getOrganizationUuid();
-    Optional<OrganizationDto> organizationDto = dbClient.organizationDao().selectByUuid(dbSession, organizationUuid);
-    return checkFoundWithOptional(organizationDto, "Organization with uuid '%s' not found", organizationUuid);
-  }
-
   public ComponentDto getByKeyAndBranch(DbSession dbSession, String key, String branch) {
     Optional<ComponentDto> componentDto = dbClient.componentDao().selectByKeyAndBranch(dbSession, key, branch);
     if (componentDto.isPresent() && componentDto.get().isEnabled()) {
index dc0fce4b712cbce52484c0291fd73a3302823e48..0e8c9ced2fdbcc7f149a9e40c63823358c24740b 100644 (file)
@@ -39,6 +39,7 @@ import org.sonar.db.project.ProjectDto;
 import org.sonar.server.es.ProjectIndexer.Cause;
 import org.sonar.server.es.ProjectIndexers;
 import org.sonar.server.favorite.FavoriteUpdater;
+import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonar.server.permission.PermissionTemplateService;
 
 import static java.util.Collections.singletonList;
@@ -58,10 +59,12 @@ public class ComponentUpdater {
   private final FavoriteUpdater favoriteUpdater;
   private final ProjectIndexers projectIndexers;
   private final UuidFactory uuidFactory;
+  private final DefaultOrganizationProvider defaultOrganizationProvider;
 
   public ComponentUpdater(DbClient dbClient, I18n i18n, System2 system2,
     PermissionTemplateService permissionTemplateService, FavoriteUpdater favoriteUpdater,
-    ProjectIndexers projectIndexers, UuidFactory uuidFactory) {
+    ProjectIndexers projectIndexers, UuidFactory uuidFactory,
+    DefaultOrganizationProvider defaultOrganizationProvider) {
     this.dbClient = dbClient;
     this.i18n = i18n;
     this.system2 = system2;
@@ -69,6 +72,7 @@ public class ComponentUpdater {
     this.favoriteUpdater = favoriteUpdater;
     this.projectIndexers = projectIndexers;
     this.uuidFactory = uuidFactory;
+    this.defaultOrganizationProvider = defaultOrganizationProvider;
   }
 
   /**
@@ -108,8 +112,10 @@ public class ComponentUpdater {
 
     long now = system2.now();
     String uuid = uuidFactory.create();
+
+    // TODO:: remove setOrganizationUuid once column dropped
     ComponentDto component = new ComponentDto()
-      .setOrganizationUuid(newComponent.getOrganizationUuid())
+      .setOrganizationUuid(defaultOrganizationProvider.get().getUuid())
       .setUuid(uuid)
       .setUuidPath(ComponentDto.UUID_PATH_OF_ROOT)
       .setRootUuid(uuid)
@@ -142,7 +148,7 @@ public class ComponentUpdater {
       .setQualifier(component.qualifier())
       .setName(component.name())
       .setPrivate(component.isPrivate())
-      .setOrganizationUuid(component.getOrganizationUuid())
+      .setOrganizationUuid(component.getOrganizationUuid()) // TODO:: remove once column dropped
       .setDescription(component.description())
       .setUpdatedAt(now)
       .setCreatedAt(now);
index 0208be489de4823ec36efdd1c389450e63e5d0ce..d72e9f9e2a0b788c6cb47ad0304a0a004d7380e8 100644 (file)
@@ -23,7 +23,6 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
 
-import static java.util.Objects.requireNonNull;
 import static org.sonar.api.resources.Qualifiers.PROJECT;
 import static org.sonar.db.component.ComponentValidator.checkComponentKey;
 import static org.sonar.db.component.ComponentValidator.checkComponentName;
@@ -31,7 +30,6 @@ import static org.sonar.db.component.ComponentValidator.checkComponentQualifier;
 
 @Immutable
 public class NewComponent {
-  private final String organizationUuid;
   private final String key;
   private final String qualifier;
   private final String name;
@@ -39,7 +37,6 @@ public class NewComponent {
   private final boolean isPrivate;
 
   private NewComponent(NewComponent.Builder builder) {
-    this.organizationUuid = builder.organizationUuid;
     this.key = builder.key;
     this.qualifier = builder.qualifier;
     this.name = builder.name;
@@ -51,10 +48,6 @@ public class NewComponent {
     return new Builder();
   }
 
-  public String getOrganizationUuid() {
-    return organizationUuid;
-  }
-
   public String key() {
     return key;
   }
@@ -78,7 +71,6 @@ public class NewComponent {
 
   public static class Builder {
     private String description;
-    private String organizationUuid;
     private String key;
     private String qualifier = PROJECT;
     private String name;
@@ -88,11 +80,6 @@ public class NewComponent {
       // use static factory method newComponentBuilder()
     }
 
-    public Builder setOrganizationUuid(String organizationUuid) {
-      this.organizationUuid = organizationUuid;
-      return this;
-    }
-
     public Builder setKey(String key) {
       this.key = key;
       return this;
@@ -119,7 +106,6 @@ public class NewComponent {
     }
 
     public NewComponent build() {
-      requireNonNull(organizationUuid, "organization uuid can't be null");
       checkComponentKey(key);
       checkComponentName(name);
       checkComponentQualifier(qualifier);
index aeaf1cbe1cb537e7b31f029ca843d1f453286149..315083efeaad62f19cec0d9faa5fcd79582d5ed0 100644 (file)
@@ -21,18 +21,15 @@ package org.sonar.server.component.ws;
 
 import com.google.common.collect.ImmutableSet;
 import java.util.Arrays;
-import java.util.Objects;
 import java.util.Set;
 import javax.annotation.Nullable;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.SnapshotDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.server.project.Visibility;
 import org.sonarqube.ws.Components;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Strings.emptyToNull;
 import static java.util.Optional.ofNullable;
 import static org.sonar.api.utils.DateUtils.formatDateTime;
@@ -48,15 +45,8 @@ class ComponentDtoToWsComponent {
     // prevent instantiation
   }
 
-  static Components.Component.Builder projectOrAppToWsComponent(ProjectDto project, OrganizationDto organizationDto, @Nullable SnapshotDto lastAnalysis) {
-
-    checkArgument(
-      Objects.equals(project.getOrganizationUuid(), organizationDto.getUuid()),
-      "OrganizationUuid (%s) of ComponentDto to convert to Ws Component is not the same as the one (%s) of the specified OrganizationDto",
-      project.getOrganizationUuid(), organizationDto.getUuid());
-
+  static Components.Component.Builder projectOrAppToWsComponent(ProjectDto project, @Nullable SnapshotDto lastAnalysis) {
     Components.Component.Builder wsComponent = Components.Component.newBuilder()
-      .setOrganization(organizationDto.getKey())
       .setKey(project.getKey())
       .setName(project.getName())
       .setQualifier(project.getQualifier());
@@ -76,19 +66,9 @@ class ComponentDtoToWsComponent {
     return wsComponent;
   }
 
-  static Components.Component.Builder componentDtoToWsComponent(ComponentDto dto, @Nullable ProjectDto parentProjectDto, OrganizationDto organizationDto,
-    @Nullable SnapshotDto lastAnalysis) {
-    checkArgument(
-      Objects.equals(dto.getOrganizationUuid(), organizationDto.getUuid()),
-      "OrganizationUuid (%s) of ComponentDto to convert to Ws Component is not the same as the one (%s) of the specified OrganizationDto",
-      dto.getOrganizationUuid(), organizationDto.getUuid());
-    return componentDtoToWsComponent(dto, parentProjectDto, organizationDto.getKey(), lastAnalysis);
-  }
-
-  private static Components.Component.Builder componentDtoToWsComponent(ComponentDto dto, @Nullable ProjectDto parentProjectDto, String organizationDtoKey,
+  public static Components.Component.Builder componentDtoToWsComponent(ComponentDto dto, @Nullable ProjectDto parentProjectDto,
     @Nullable SnapshotDto lastAnalysis) {
     Components.Component.Builder wsComponent = Components.Component.newBuilder()
-      .setOrganization(organizationDtoKey)
       .setKey(dto.getKey())
       .setName(dto.name())
       .setQualifier(dto.qualifier());
index 1421ded253f48bff890747149ff07808f3547b23..d45e0b04fc28f8746aaf057229f81d3ab18eb231 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.component.ws;
 import com.google.common.collect.ImmutableSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 import javax.annotation.CheckForNull;
@@ -38,17 +37,13 @@ import org.sonar.core.i18n.I18n;
 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.server.component.index.ComponentIndex;
 import org.sonar.server.component.index.ComponentQuery;
 import org.sonar.server.es.SearchIdResult;
 import org.sonar.server.es.SearchOptions;
-import org.sonar.server.exceptions.NotFoundException;
-import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonarqube.ws.Components;
 import org.sonarqube.ws.Components.SearchWsResponse;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
 import static java.util.Optional.ofNullable;
 import static java.util.stream.Collectors.toMap;
@@ -62,7 +57,6 @@ import static org.sonar.server.ws.WsParameterBuilder.createQualifiersParameter;
 import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.ACTION_SEARCH;
-import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_QUALIFIERS;
 
 public class SearchAction implements ComponentsWsAction {
@@ -73,15 +67,12 @@ public class SearchAction implements ComponentsWsAction {
   private final DbClient dbClient;
   private final ResourceTypes resourceTypes;
   private final I18n i18n;
-  private final DefaultOrganizationProvider defaultOrganizationProvider;
 
-  public SearchAction(ComponentIndex componentIndex, DbClient dbClient, ResourceTypes resourceTypes, I18n i18n,
-    DefaultOrganizationProvider defaultOrganizationProvider) {
+  public SearchAction(ComponentIndex componentIndex, DbClient dbClient, ResourceTypes resourceTypes, I18n i18n) {
     this.componentIndex = componentIndex;
     this.dbClient = dbClient;
     this.resourceTypes = resourceTypes;
     this.i18n = i18n;
-    this.defaultOrganizationProvider = defaultOrganizationProvider;
   }
 
   @Override
@@ -105,14 +96,6 @@ public class SearchAction implements ComponentsWsAction {
         "</ul>")
       .setExampleValue("sonar");
 
-    action
-      .createParam(PARAM_ORGANIZATION)
-      .setDescription("Organization key")
-      .setRequired(false)
-      .setInternal(true)
-      .setExampleValue("my-org")
-      .setSince("6.3");
-
     createQualifiersParameter(action, newQualifierParameterContext(i18n, resourceTypes), VALID_QUALIFIERS)
       .setRequired(true);
   }
@@ -125,7 +108,6 @@ public class SearchAction implements ComponentsWsAction {
 
   private static SearchRequest toSearchWsRequest(org.sonar.api.server.ws.Request request) {
     return new SearchRequest()
-      .setOrganization(request.param(PARAM_ORGANIZATION))
       .setQualifiers(request.mandatoryParamAsStrings(PARAM_QUALIFIERS))
       .setQuery(request.param(Param.TEXT_QUERY))
       .setPage(request.mandatoryParamAsInt(Param.PAGE))
@@ -134,14 +116,13 @@ public class SearchAction implements ComponentsWsAction {
 
   private SearchWsResponse doHandle(SearchRequest request) {
     try (DbSession dbSession = dbClient.openSession(false)) {
-      OrganizationDto organization = getOrganization(dbSession, request);
-      ComponentQuery esQuery = buildEsQuery(organization, request);
+      ComponentQuery esQuery = buildEsQuery(request);
       SearchIdResult<String> results = componentIndex.search(esQuery, new SearchOptions().setPage(request.getPage(), request.getPageSize()));
 
       List<ComponentDto> components = dbClient.componentDao().selectByUuids(dbSession, results.getUuids());
       Map<String, String> projectKeysByUuids = searchProjectsKeysByUuids(dbSession, components);
 
-      return buildResponse(components, organization, projectKeysByUuids,
+      return buildResponse(components, projectKeysByUuids,
         Paging.forPageIndex(request.getPage()).withPageSize(request.getPageSize()).andTotal((int) results.getTotal()));
     }
   }
@@ -158,23 +139,14 @@ public class SearchAction implements ComponentsWsAction {
     return projects.stream().collect(toMap(ComponentDto::uuid, ComponentDto::getDbKey));
   }
 
-  private OrganizationDto getOrganization(DbSession dbSession, SearchRequest request) {
-    String organizationKey = Optional.ofNullable(request.getOrganization())
-      .orElseGet(defaultOrganizationProvider.get()::getKey);
-    return NotFoundException.checkFoundWithOptional(
-      dbClient.organizationDao().selectByKey(dbSession, organizationKey),
-      "No organizationDto with key '%s'", organizationKey);
-  }
-
-  private static ComponentQuery buildEsQuery(OrganizationDto organization, SearchRequest request) {
+  private static ComponentQuery buildEsQuery(SearchRequest request) {
     return ComponentQuery.builder()
       .setQuery(request.getQuery())
-      .setOrganization(organization.getUuid())
       .setQualifiers(request.getQualifiers())
       .build();
   }
 
-  private static SearchWsResponse buildResponse(List<ComponentDto> components, OrganizationDto organization, Map<String, String> projectKeysByUuids, Paging paging) {
+  private static SearchWsResponse buildResponse(List<ComponentDto> components, Map<String, String> projectKeysByUuids, Paging paging) {
     SearchWsResponse.Builder responseBuilder = SearchWsResponse.newBuilder();
     responseBuilder.getPagingBuilder()
       .setPageIndex(paging.pageIndex())
@@ -183,20 +155,14 @@ public class SearchAction implements ComponentsWsAction {
       .build();
 
     components.stream()
-      .map(dto -> dtoToComponent(organization, dto, projectKeysByUuids.get(dto.projectUuid())))
+      .map(dto -> dtoToComponent(dto, projectKeysByUuids.get(dto.projectUuid())))
       .forEach(responseBuilder::addComponents);
 
     return responseBuilder.build();
   }
 
-  private static Components.Component dtoToComponent(OrganizationDto organization, ComponentDto dto, String projectKey) {
-    checkArgument(
-      organization.getUuid().equals(dto.getOrganizationUuid()),
-      "No Organization found for uuid '%s'",
-      dto.getOrganizationUuid());
-
+  private static Components.Component dtoToComponent(ComponentDto dto, String projectKey) {
     Components.Component.Builder builder = Components.Component.newBuilder()
-      .setOrganization(organization.getKey())
       .setKey(dto.getDbKey())
       .setProject(projectKey)
       .setName(dto.name())
@@ -206,22 +172,11 @@ public class SearchAction implements ComponentsWsAction {
   }
 
   static class SearchRequest {
-    private String organization;
     private List<String> qualifiers;
     private Integer page;
     private Integer pageSize;
     private String query;
 
-    @CheckForNull
-    public String getOrganization() {
-      return organization;
-    }
-
-    public SearchRequest setOrganization(@Nullable String organization) {
-      this.organization = organization;
-      return this;
-    }
-
     public List<String> getQualifiers() {
       return qualifiers;
     }
index 3f2a3bbe5561e0ad1229b42844323380cfc026e1..5d18ec1551adf701715431e6e559e689d5b76237 100644 (file)
  */
 package org.sonar.server.component.ws;
 
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -54,7 +52,6 @@ import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.SnapshotDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.db.property.PropertyDto;
 import org.sonar.db.property.PropertyQuery;
@@ -85,19 +82,15 @@ import static org.sonar.api.server.ws.WebService.Param.FACETS;
 import static org.sonar.api.server.ws.WebService.Param.FIELDS;
 import static org.sonar.api.utils.DateUtils.formatDateTime;
 import static org.sonar.core.util.stream.MoreCollectors.toList;
-import static org.sonar.core.util.stream.MoreCollectors.toSet;
 import static org.sonar.db.measure.ProjectMeasuresIndexerIterator.METRIC_KEYS;
 import static org.sonar.server.component.ws.ProjectMeasuresQueryFactory.IS_FAVORITE_CRITERION;
 import static org.sonar.server.component.ws.ProjectMeasuresQueryFactory.newProjectMeasuresQuery;
 import static org.sonar.server.component.ws.ProjectMeasuresQueryValidator.NON_METRIC_SORT_KEYS;
-import static org.sonar.server.exceptions.NotFoundException.checkFound;
-import static org.sonar.server.exceptions.NotFoundException.checkFoundWithOptional;
 import static org.sonar.server.measure.index.ProjectMeasuresQuery.SORT_BY_LAST_ANALYSIS_DATE;
 import static org.sonar.server.measure.index.ProjectMeasuresQuery.SORT_BY_NAME;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.ACTION_SEARCH_PROJECTS;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_FILTER;
-import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGES;
 import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_TAGS;
 
@@ -106,14 +99,13 @@ public class SearchProjectsAction implements ComponentsWsAction {
   public static final int MAX_PAGE_SIZE = 500;
   public static final int DEFAULT_PAGE_SIZE = 100;
   private static final String ALL = "_all";
-  private static final String ORGANIZATIONS = "organizations";
   private static final String ANALYSIS_DATE = "analysisDate";
   private static final String LEAK_PERIOD_DATE = "leakPeriodDate";
   private static final String METRIC_LEAK_PROJECTS_KEY = "leak_projects";
   private static final String HTML_POSSIBLE_VALUES_TEXT = "The possible values are:";
   private static final String HTML_UL_START_TAG = "<ul>";
   private static final String HTML_UL_END_TAG = "</ul>";
-  private static final Set<String> POSSIBLE_FIELDS = newHashSet(ALL, ORGANIZATIONS, ANALYSIS_DATE, LEAK_PERIOD_DATE);
+  private static final Set<String> POSSIBLE_FIELDS = newHashSet(ALL, ANALYSIS_DATE, LEAK_PERIOD_DATE);
 
   private final DbClient dbClient;
   private final ProjectMeasuresIndex index;
@@ -150,11 +142,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
     action.createFieldsParam(POSSIBLE_FIELDS)
       .setDescription("Comma-separated list of the fields to be returned in response")
       .setSince("6.4");
-    action.createParam(PARAM_ORGANIZATION)
-      .setDescription("the organization to search projects in")
-      .setRequired(false)
-      .setInternal(true)
-      .setSince("6.3");
     action.createParam(FACETS)
       .setDescription("Comma-separated list of the facets to be computed. No facet is computed by default.")
       .setPossibleValues(Arrays.stream(ProjectMeasuresIndex.Facet.values())
@@ -238,44 +225,19 @@ public class SearchProjectsAction implements ComponentsWsAction {
 
   private SearchProjectsWsResponse doHandle(SearchProjectsRequest request) {
     try (DbSession dbSession = dbClient.openSession(false)) {
-      String organizationKey = request.getOrganization();
-      if (organizationKey == null) {
-        return handleForAnyOrganization(dbSession, request);
-      } else {
-        OrganizationDto organization = checkFoundWithOptional(
-          dbClient.organizationDao().selectByKey(dbSession, organizationKey),
-          "No organization for key '%s'", organizationKey);
-        return handleForOrganization(dbSession, request, organization);
-      }
+      SearchResults searchResults = searchData(dbSession, request);
+      boolean needIssueSync = dbClient.branchDao().hasAnyBranchWhereNeedIssueSync(dbSession, true);
+      return buildResponse(request, searchResults, needIssueSync);
     }
   }
 
-  private SearchProjectsWsResponse handleForAnyOrganization(DbSession dbSession, SearchProjectsRequest request) {
-    SearchResults searchResults = searchData(dbSession, request, null);
-    Set<String> organizationUuids = searchResults.projects.stream().map(ProjectDto::getOrganizationUuid).collect(toSet());
-    Map<String, OrganizationDto> organizationsByUuid = dbClient.organizationDao().selectByUuids(dbSession, organizationUuids)
-      .stream()
-      .collect(MoreCollectors.uniqueIndex(OrganizationDto::getUuid));
-    boolean needIssueSync = dbClient.branchDao().hasAnyBranchWhereNeedIssueSync(dbSession, true);
-    return buildResponse(request, searchResults, organizationsByUuid, needIssueSync);
-  }
-
-  private SearchProjectsWsResponse handleForOrganization(DbSession dbSession, SearchProjectsRequest request, OrganizationDto organization) {
-    SearchResults searchResults = searchData(dbSession, request, organization);
-    boolean needIssueSync = dbClient.branchDao().hasAnyBranchWhereNeedIssueSync(dbSession, true);
-    return buildResponse(request, searchResults, ImmutableMap.of(organization.getUuid(), organization), needIssueSync);
-  }
-
-  private SearchResults searchData(DbSession dbSession, SearchProjectsRequest request, @Nullable OrganizationDto organization) {
+  private SearchResults searchData(DbSession dbSession, SearchProjectsRequest request) {
     Set<String> favoriteProjectUuids = loadFavoriteProjectUuids(dbSession);
     List<Criterion> criteria = FilterParser.parse(firstNonNull(request.getFilter(), ""));
     ProjectMeasuresQuery query = newProjectMeasuresQuery(criteria, hasFavoriteFilter(criteria) ? favoriteProjectUuids : null)
       .setIgnoreWarning(projectsInWarning.count() == 0L)
       .setSort(request.getSort())
       .setAsc(request.getAsc());
-    Optional.ofNullable(organization)
-      .map(OrganizationDto::getUuid)
-      .ifPresent(query::setOrganizationUuid);
 
     Set<String> qualifiersBasedOnEdition = getQualifiersBasedOnEdition(query);
     query.setQualifiers(qualifiersBasedOnEdition);
@@ -395,7 +357,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
 
   private static SearchProjectsRequest toRequest(Request httpRequest) {
     RequestBuilder request = new RequestBuilder()
-      .setOrganization(httpRequest.param(PARAM_ORGANIZATION))
       .setFilter(httpRequest.param(PARAM_FILTER))
       .setSort(httpRequest.mandatoryParam(Param.SORT))
       .setAsc(httpRequest.mandatoryParamAsBoolean(Param.ASCENDING))
@@ -407,7 +368,7 @@ public class SearchProjectsAction implements ComponentsWsAction {
     if (httpRequest.hasParam(FIELDS)) {
       List<String> paramsAsString = httpRequest.mandatoryParamAsStrings(FIELDS);
       if (paramsAsString.contains(ALL)) {
-        request.setAdditionalFields(of(ORGANIZATIONS, ANALYSIS_DATE, LEAK_PERIOD_DATE));
+        request.setAdditionalFields(of(ANALYSIS_DATE, LEAK_PERIOD_DATE));
       } else {
         request.setAdditionalFields(paramsAsString);
       }
@@ -415,14 +376,8 @@ public class SearchProjectsAction implements ComponentsWsAction {
     return request.build();
   }
 
-  private SearchProjectsWsResponse buildResponse(SearchProjectsRequest request, SearchResults searchResults, Map<String, OrganizationDto> organizationsByUuid,
-    boolean needIssueSync) {
-    Function<ProjectDto, Component> dbToWsComponent = new DbToWsComponent(request, organizationsByUuid, searchResults, userSession.isLoggedIn(), needIssueSync);
-
-    Map<String, OrganizationDto> organizationsByUuidForAdditionalInfo = new HashMap<>();
-    if (request.additionalFields.contains(ORGANIZATIONS)) {
-      organizationsByUuidForAdditionalInfo.putAll(organizationsByUuid);
-    }
+  private SearchProjectsWsResponse buildResponse(SearchProjectsRequest request, SearchResults searchResults, boolean needIssueSync) {
+    Function<ProjectDto, Component> dbToWsComponent = new DbToWsComponent(request, searchResults, userSession.isLoggedIn(), needIssueSync);
 
     return Stream.of(SearchProjectsWsResponse.newBuilder())
       .map(response -> response.setPaging(Common.Paging.newBuilder()
@@ -435,15 +390,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
           .forEach(response::addComponents);
         return response;
       })
-      .map(response -> {
-        organizationsByUuidForAdditionalInfo.values().stream().forEach(
-          dto -> response.addOrganizations(
-            Common.Organization.newBuilder()
-              .setKey(dto.getKey())
-              .setName(dto.getName())
-              .build()));
-        return response;
-      })
       .map(response -> addFacets(searchResults, response))
       .map(SearchProjectsWsResponse.Builder::build)
       .findFirst()
@@ -526,7 +472,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
   private static class DbToWsComponent implements Function<ProjectDto, Component> {
     private final SearchProjectsRequest request;
     private final Component.Builder wsComponent;
-    private final Map<String, OrganizationDto> organizationsByUuid;
     private final Set<String> favoriteProjectUuids;
     private final List<String> projectsWithIssuesInSync;
     private final boolean isUserLoggedIn;
@@ -534,13 +479,12 @@ public class SearchProjectsAction implements ComponentsWsAction {
     private final Map<String, Long> applicationsLeakPeriod;
     private final boolean needIssueSync;
 
-    private DbToWsComponent(SearchProjectsRequest request, Map<String, OrganizationDto> organizationsByUuid, SearchResults searchResults, boolean isUserLoggedIn,
+    private DbToWsComponent(SearchProjectsRequest request, SearchResults searchResults, boolean isUserLoggedIn,
       boolean needIssueSync) {
       this.request = request;
       this.analysisByProjectUuid = searchResults.analysisByProjectUuid;
       this.applicationsLeakPeriod = searchResults.applicationsLeakPeriods;
       this.wsComponent = Component.newBuilder();
-      this.organizationsByUuid = organizationsByUuid;
       this.favoriteProjectUuids = searchResults.favoriteProjectUuids;
       this.projectsWithIssuesInSync = searchResults.projectsWithIssuesInSync;
       this.isUserLoggedIn = isUserLoggedIn;
@@ -549,12 +493,8 @@ public class SearchProjectsAction implements ComponentsWsAction {
 
     @Override
     public Component apply(ProjectDto dbProject) {
-      String organizationUuid = dbProject.getOrganizationUuid();
-      OrganizationDto organizationDto = organizationsByUuid.get(organizationUuid);
-      checkFound(organizationDto, "Organization with uuid '%s' not found", organizationUuid);
       wsComponent
         .clear()
-        .setOrganization(organizationDto.getKey())
         .setKey(dbProject.getKey())
         .setName(dbProject.getName())
         .setQualifier(dbProject.getQualifier())
@@ -673,7 +613,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
 
     private final int page;
     private final int pageSize;
-    private final String organization;
     private final String filter;
     private final List<String> facets;
     private final String sort;
@@ -683,7 +622,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
     private SearchProjectsRequest(RequestBuilder builder) {
       this.page = builder.page;
       this.pageSize = builder.pageSize;
-      this.organization = builder.organization;
       this.filter = builder.filter;
       this.facets = builder.facets;
       this.sort = builder.sort;
@@ -691,11 +629,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
       this.additionalFields = builder.additionalFields;
     }
 
-    @CheckForNull
-    public String getOrganization() {
-      return organization;
-    }
-
     @CheckForNull
     public String getFilter() {
       return filter;
@@ -734,7 +667,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
   }
 
   static class RequestBuilder {
-    private String organization;
     private Integer page;
     private Integer pageSize;
     private String filter;
@@ -747,11 +679,6 @@ public class SearchProjectsAction implements ComponentsWsAction {
       // enforce static factory method
     }
 
-    public RequestBuilder setOrganization(@Nullable String organization) {
-      this.organization = organization;
-      return this;
-    }
-
     public RequestBuilder setFilter(@Nullable String filter) {
       this.filter = filter;
       return this;
index ce32a84ed9547a4d111e71a51180191cce35b1ed..1841fc93684b420b538bec1680cc4d63e1d184e1 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.SnapshotDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.server.component.ComponentFinder;
 import org.sonar.server.issue.index.IssueIndexSyncProgressChecker;
@@ -113,8 +112,7 @@ public class ShowAction implements ComponentsWsAction {
       userSession.checkComponentPermission(UserRole.USER, component);
       Optional<SnapshotDto> lastAnalysis = dbClient.snapshotDao().selectLastAnalysisByComponentUuid(dbSession, component.projectUuid());
       List<ComponentDto> ancestors = dbClient.componentDao().selectAncestors(dbSession, component);
-      OrganizationDto organizationDto = componentFinder.getOrganization(dbSession, component);
-      return buildResponse(dbSession, component, organizationDto, ancestors, lastAnalysis.orElse(null));
+      return buildResponse(dbSession, component, ancestors, lastAnalysis.orElse(null));
     }
   }
 
@@ -126,37 +124,34 @@ public class ShowAction implements ComponentsWsAction {
     return componentFinder.getByKeyAndOptionalBranchOrPullRequest(dbSession, componentKey, branch, pullRequest);
   }
 
-  private ShowWsResponse buildResponse(DbSession dbSession, ComponentDto component,
-    OrganizationDto organizationDto, List<ComponentDto> orderedAncestors,
+  private ShowWsResponse buildResponse(DbSession dbSession, ComponentDto component, List<ComponentDto> orderedAncestors,
     @Nullable SnapshotDto lastAnalysis) {
     ShowWsResponse.Builder response = ShowWsResponse.newBuilder();
-    response.setComponent(toWsComponent(dbSession, component, organizationDto, lastAnalysis));
-    addAncestorsToResponse(dbSession, response, orderedAncestors, organizationDto, lastAnalysis);
+    response.setComponent(toWsComponent(dbSession, component, lastAnalysis));
+    addAncestorsToResponse(dbSession, response, orderedAncestors, lastAnalysis);
     return response.build();
   }
 
   private void addAncestorsToResponse(DbSession dbSession, ShowWsResponse.Builder response, List<ComponentDto> orderedAncestors,
-    OrganizationDto organizationDto,
     @Nullable SnapshotDto lastAnalysis) {
     // ancestors are ordered from root to leaf, whereas it's the opposite in WS response
     int size = orderedAncestors.size() - 1;
     IntStream.rangeClosed(0, size).forEach(
-      index -> response.addAncestors(toWsComponent(dbSession, orderedAncestors.get(size - index), organizationDto, lastAnalysis)));
+      index -> response.addAncestors(toWsComponent(dbSession, orderedAncestors.get(size - index), lastAnalysis)));
   }
 
-  private Components.Component.Builder toWsComponent(DbSession dbSession, ComponentDto component, OrganizationDto organizationDto,
-    @Nullable SnapshotDto lastAnalysis) {
+  private Components.Component.Builder toWsComponent(DbSession dbSession, ComponentDto component, @Nullable SnapshotDto lastAnalysis) {
     if (isProjectOrApp(component)) {
       ProjectDto project = dbClient.projectDao().selectProjectOrAppByKey(dbSession, component.getKey())
         .orElseThrow(() -> new IllegalStateException("Project is in invalid state."));
       boolean needIssueSync = needIssueSync(dbSession, component, project);
-      return projectOrAppToWsComponent(project, organizationDto, lastAnalysis)
+      return projectOrAppToWsComponent(project, lastAnalysis)
         .setNeedIssueSync(needIssueSync);
     } else {
       Optional<ProjectDto> parentProject = dbClient.projectDao().selectByUuid(dbSession,
         ofNullable(component.getMainBranchProjectUuid()).orElse(component.projectUuid()));
       boolean needIssueSync = needIssueSync(dbSession, component, parentProject.orElse(null));
-      return componentDtoToWsComponent(component, parentProject.orElse(null), organizationDto, lastAnalysis)
+      return componentDtoToWsComponent(component, parentProject.orElse(null), lastAnalysis)
         .setNeedIssueSync(needIssueSync);
     }
   }
index f570389fc21adeec16309a6b7735583d18d773d4..cb50a1d6fd2a87538ebeb4f5201b5cb507e65de9 100644 (file)
@@ -47,7 +47,6 @@ import org.sonar.core.util.stream.MoreCollectors;
 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.server.component.index.ComponentHit;
 import org.sonar.server.component.index.ComponentHitsPerQualifier;
 import org.sonar.server.component.index.ComponentIndex;
@@ -61,7 +60,6 @@ import org.sonarqube.ws.Components.SuggestionsWsResponse.Category;
 import org.sonarqube.ws.Components.SuggestionsWsResponse.Project;
 import org.sonarqube.ws.Components.SuggestionsWsResponse.Suggestion;
 
-import static com.google.common.base.Preconditions.checkState;
 import static java.util.Arrays.stream;
 import static java.util.Collections.emptyList;
 import static java.util.Collections.emptySet;
@@ -72,7 +70,6 @@ import static org.sonar.core.util.stream.MoreCollectors.toSet;
 import static org.sonar.server.component.index.SuggestionQuery.DEFAULT_LIMIT;
 import static org.sonar.server.es.newindex.DefaultIndexSettings.MINIMUM_NGRAM_LENGTH;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
-import static org.sonarqube.ws.Common.Organization;
 import static org.sonarqube.ws.Components.SuggestionsWsResponse.newBuilder;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.ACTION_SUGGESTIONS;
 
@@ -109,7 +106,6 @@ public class SuggestionsAction implements ComponentsWsAction {
         "Internal WS for the top-right search engine. The result will contain component search results, grouped by their qualifiers.<p>"
           + "Each result contains:"
           + "<ul>"
-          + "<li>the organization key</li>"
           + "<li>the component key</li>"
           + "<li>the component's name (unescaped)</li>"
           + "<li>optionally a display name, which puts emphasis to matching characters (this text contains html tags and parts of the html-escaped name)</li>"
@@ -280,9 +276,8 @@ public class SuggestionsAction implements ComponentsWsAction {
 
     Map<String, ComponentDto> componentsByUuids = componentDtos.stream()
       .collect(MoreCollectors.uniqueIndex(ComponentDto::uuid));
-    Map<String, OrganizationDto> organizationsByUuids = loadOrganizations(dbSession, componentsByUuids.values());
     Map<String, ComponentDto> projectsByUuids = loadProjects(dbSession, componentsByUuids.values());
-    return toResponse(componentsPerQualifiers, recentlyBrowsedKeys, favoriteUuids, organizationsByUuids, componentsByUuids, projectsByUuids, coveredItems);
+    return toResponse(componentsPerQualifiers, recentlyBrowsedKeys, favoriteUuids, componentsByUuids, projectsByUuids, coveredItems);
   }
 
   private Map<String, ComponentDto> loadProjects(DbSession dbSession, Collection<ComponentDto> components) {
@@ -294,35 +289,26 @@ public class SuggestionsAction implements ComponentsWsAction {
       .collect(MoreCollectors.uniqueIndex(ComponentDto::uuid));
   }
 
-  private Map<String, OrganizationDto> loadOrganizations(DbSession dbSession, Collection<ComponentDto> components) {
-    Set<String> organizationUuids = components.stream()
-      .map(ComponentDto::getOrganizationUuid)
-      .collect(MoreCollectors.toSet());
-    return dbClient.organizationDao().selectByUuids(dbSession, organizationUuids).stream()
-      .collect(MoreCollectors.uniqueIndex(OrganizationDto::getUuid));
-  }
-
   private ComponentIndexResults searchInIndex(SuggestionQuery suggestionQuery) {
     return index.searchSuggestions(suggestionQuery);
   }
 
   private static SuggestionsWsResponse.Builder toResponse(ComponentIndexResults componentsPerQualifiers, Set<String> recentlyBrowsedKeys, Set<String> favoriteUuids,
-    Map<String, OrganizationDto> organizationsByUuids, Map<String, ComponentDto> componentsByUuids, Map<String, ComponentDto> projectsByUuids, int coveredItems) {
+    Map<String, ComponentDto> componentsByUuids, Map<String, ComponentDto> projectsByUuids, int coveredItems) {
     if (componentsPerQualifiers.isEmpty()) {
       return newBuilder();
     }
     return newBuilder()
-      .addAllResults(toCategories(componentsPerQualifiers, recentlyBrowsedKeys, favoriteUuids, componentsByUuids, organizationsByUuids, projectsByUuids, coveredItems))
-      .addAllOrganizations(toOrganizations(organizationsByUuids))
+      .addAllResults(toCategories(componentsPerQualifiers, recentlyBrowsedKeys, favoriteUuids, componentsByUuids, projectsByUuids, coveredItems))
       .addAllProjects(toProjects(projectsByUuids));
   }
 
   private static List<Category> toCategories(ComponentIndexResults componentsPerQualifiers, Set<String> recentlyBrowsedKeys, Set<String> favoriteUuids,
-    Map<String, ComponentDto> componentsByUuids, Map<String, OrganizationDto> organizationByUuids, Map<String, ComponentDto> projectsByUuids, int coveredItems) {
+    Map<String, ComponentDto> componentsByUuids, Map<String, ComponentDto> projectsByUuids, int coveredItems) {
     return componentsPerQualifiers.getQualifiers().map(qualifier -> {
 
       List<Suggestion> suggestions = qualifier.getHits().stream()
-        .map(hit -> toSuggestion(hit, recentlyBrowsedKeys, favoriteUuids, componentsByUuids, organizationByUuids, projectsByUuids))
+        .map(hit -> toSuggestion(hit, recentlyBrowsedKeys, favoriteUuids, componentsByUuids, projectsByUuids))
         .filter(Objects::nonNull)
         .collect(toList());
 
@@ -340,17 +326,14 @@ public class SuggestionsAction implements ComponentsWsAction {
    */
   @CheckForNull
   private static Suggestion toSuggestion(ComponentHit hit, Set<String> recentlyBrowsedKeys, Set<String> favoriteUuids, Map<String, ComponentDto> componentsByUuids,
-    Map<String, OrganizationDto> organizationByUuids, Map<String, ComponentDto> projectsByUuids) {
+    Map<String, ComponentDto> projectsByUuids) {
     ComponentDto result = componentsByUuids.get(hit.getUuid());
     if (result == null
       // SONAR-11419 this has happened in production while code does not really allow it. An inconsistency in DB may be the cause.
       || (QUALIFIERS_FOR_WHICH_TO_RETURN_PROJECT.contains(result.qualifier()) && projectsByUuids.get(result.projectUuid()) == null)) {
       return null;
     }
-    String organizationKey = organizationByUuids.get(result.getOrganizationUuid()).getKey();
-    checkState(organizationKey != null, "Organization with uuid '%s' not found", result.getOrganizationUuid());
     Suggestion.Builder builder = Suggestion.newBuilder()
-      .setOrganization(organizationKey)
       .setKey(result.getDbKey())
       .setName(result.name())
       .setMatch(hit.getHighlightedText().orElse(HtmlEscapers.htmlEscaper().escape(result.name())))
@@ -362,15 +345,6 @@ public class SuggestionsAction implements ComponentsWsAction {
     return builder.build();
   }
 
-  private static List<Organization> toOrganizations(Map<String, OrganizationDto> organizationByUuids) {
-    return organizationByUuids.values().stream()
-      .map(o -> Organization.newBuilder()
-        .setKey(o.getKey())
-        .setName(o.getName())
-        .build())
-      .collect(Collectors.toList());
-  }
-
   private static List<Project> toProjects(Map<String, ComponentDto> projectsByUuids) {
     return projectsByUuids.values().stream()
       .map(p -> Project.newBuilder()
index c5df3f5e9bf7aed717b74268d8f2441ffab2a726..68bdc894554e8edba606a093d4509e127fed3980 100644 (file)
@@ -48,7 +48,6 @@ import org.sonar.db.DbSession;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTreeQuery;
 import org.sonar.db.component.ComponentTreeQuery.Strategy;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.server.component.ComponentFinder;
 import org.sonar.server.user.UserSession;
@@ -176,7 +175,6 @@ public class TreeAction implements ComponentsWsAction {
     try (DbSession dbSession = dbClient.openSession(false)) {
       ComponentDto baseComponent = loadComponent(dbSession, treeRequest);
       checkPermissions(baseComponent);
-      OrganizationDto organizationDto = componentFinder.getOrganization(dbSession, baseComponent);
 
       ComponentTreeQuery query = toComponentTreeQuery(treeRequest, baseComponent);
       List<ComponentDto> components = dbClient.componentDao().selectDescendants(dbSession, query);
@@ -186,7 +184,7 @@ public class TreeAction implements ComponentsWsAction {
 
       Map<String, ComponentDto> referenceComponentsByUuid = searchReferenceComponentsByUuid(dbSession, components);
 
-      return buildResponse(dbSession, baseComponent, organizationDto, components, referenceComponentsByUuid,
+      return buildResponse(dbSession, baseComponent, components, referenceComponentsByUuid,
         Paging.forPageIndex(treeRequest.getPage()).withPageSize(treeRequest.getPageSize()).andTotal(total));
     }
   }
@@ -215,7 +213,7 @@ public class TreeAction implements ComponentsWsAction {
     userSession.checkComponentPermission(UserRole.USER, baseComponent);
   }
 
-  private TreeWsResponse buildResponse(DbSession dbSession, ComponentDto baseComponent, OrganizationDto organizationDto, List<ComponentDto> components,
+  private TreeWsResponse buildResponse(DbSession dbSession, ComponentDto baseComponent, List<ComponentDto> components,
     Map<String, ComponentDto> referenceComponentsByUuid, Paging paging) {
     TreeWsResponse.Builder response = TreeWsResponse.newBuilder();
     response.getPagingBuilder()
@@ -224,26 +222,26 @@ public class TreeAction implements ComponentsWsAction {
       .setTotal(paging.total())
       .build();
 
-    response.setBaseComponent(toWsComponent(dbSession, baseComponent, organizationDto, referenceComponentsByUuid));
+    response.setBaseComponent(toWsComponent(dbSession, baseComponent, referenceComponentsByUuid));
     for (ComponentDto dto : components) {
-      response.addComponents(toWsComponent(dbSession, dto, organizationDto, referenceComponentsByUuid));
+      response.addComponents(toWsComponent(dbSession, dto, referenceComponentsByUuid));
     }
 
     return response.build();
   }
 
-  private Components.Component.Builder toWsComponent(DbSession dbSession, ComponentDto component, OrganizationDto organizationDto,
+  private Components.Component.Builder toWsComponent(DbSession dbSession, ComponentDto component,
     Map<String, ComponentDto> referenceComponentsByUuid) {
 
     Components.Component.Builder wsComponent;
     if (component.getMainBranchProjectUuid() == null && component.isRootProject() &&
       PROJECT_OR_APP_QUALIFIERS.contains(component.qualifier())) {
       ProjectDto projectDto = componentFinder.getProjectOrApplicationByKey(dbSession, component.getKey());
-      wsComponent = projectOrAppToWsComponent(projectDto, organizationDto, null);
+      wsComponent = projectOrAppToWsComponent(projectDto, null);
     } else {
       Optional<ProjectDto> parentProject = dbClient.projectDao().selectByUuid(dbSession,
         ofNullable(component.getMainBranchProjectUuid()).orElse(component.projectUuid()));
-      wsComponent = componentDtoToWsComponent(component, parentProject.orElse(null), organizationDto, null);
+      wsComponent = componentDtoToWsComponent(component, parentProject.orElse(null), null);
     }
 
     ComponentDto referenceComponent = referenceComponentsByUuid.get(component.getCopyResourceUuid());
index 12978101382e1f1e440db30b657bb6b05dabffe0..a2a115d1cf2e1e0d2444ec2c3db882ecc5842ba0 100644 (file)
@@ -112,7 +112,6 @@ public class CreateAction implements ProjectsWsAction {
       support.checkCanUpdateProjectsVisibility(organization, changeToPrivate);
 
       ComponentDto componentDto = componentUpdater.create(dbSession, newComponentBuilder()
-          .setOrganizationUuid(organization.getUuid())
           .setKey(request.getProjectKey())
           .setName(request.getName())
           .setPrivate(changeToPrivate)
index 2c9432efe0225e804ec17f949ce646196aea2850..8350a1dae381058613b82810ca0cf8deada52d13 100644 (file)
@@ -54,8 +54,6 @@ import org.sonar.db.qualityprofile.QProfileDto;
 import org.sonar.server.component.ComponentFinder;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.NotFoundException;
-import org.sonar.server.organization.BillingValidations;
-import org.sonar.server.organization.BillingValidationsProxy;
 import org.sonar.server.project.Visibility;
 import org.sonar.server.qualitygate.QualityGateFinder;
 import org.sonar.server.qualityprofile.QPMeasureData;
@@ -99,17 +97,15 @@ public class ComponentAction implements NavigationWsAction {
   private final UserSession userSession;
   private final ComponentFinder componentFinder;
   private final QualityGateFinder qualityGateFinder;
-  private final BillingValidationsProxy billingValidations;
 
   public ComponentAction(DbClient dbClient, PageRepository pageRepository, ResourceTypes resourceTypes, UserSession userSession,
-    ComponentFinder componentFinder, QualityGateFinder qualityGateFinder, BillingValidationsProxy billingValidations) {
+    ComponentFinder componentFinder, QualityGateFinder qualityGateFinder) {
     this.dbClient = dbClient;
     this.pageRepository = pageRepository;
     this.resourceTypes = resourceTypes;
     this.userSession = userSession;
     this.componentFinder = componentFinder;
     this.qualityGateFinder = qualityGateFinder;
-    this.billingValidations = billingValidations;
   }
 
   @Override
@@ -158,19 +154,18 @@ public class ComponentAction implements NavigationWsAction {
         !userSession.isSystemAdministrator()) {
         throw insufficientPrivilegesException();
       }
-      OrganizationDto org = componentFinder.getOrganization(session, component);
       Optional<SnapshotDto> analysis = dbClient.snapshotDao().selectLastAnalysisByRootComponentUuid(session, component.projectUuid());
 
       try (JsonWriter json = response.newJsonWriter()) {
         json.beginObject();
         boolean isFavourite = isFavourite(session, rootProject);
-        writeComponent(json, component, org, analysis.orElse(null), isFavourite);
+        writeComponent(json, component, analysis.orElse(null), isFavourite);
         writeProfiles(json, session, component);
-        writeQualityGate(json, session, org, rootProject);
+        writeQualityGate(json, session, rootProject);
         if (userSession.hasComponentPermission(ADMIN, component) ||
           userSession.hasPermission(ADMINISTER_QUALITY_PROFILES) ||
           userSession.hasPermission(ADMINISTER_QUALITY_GATES)) {
-          writeConfiguration(json, component, org);
+          writeConfiguration(json, component);
         }
         writeBreadCrumbs(json, session, component);
         json.endObject().close();
@@ -206,9 +201,8 @@ public class ComponentAction implements NavigationWsAction {
       .endObject();
   }
 
-  private void writeComponent(JsonWriter json, ComponentDto component, OrganizationDto organizationDto, @Nullable SnapshotDto analysis, boolean isFavourite) {
+  private void writeComponent(JsonWriter json, ComponentDto component, @Nullable SnapshotDto analysis, boolean isFavourite) {
     json.prop("key", component.getKey())
-      .prop("organization", organizationDto.getKey())
       .prop("id", component.uuid())
       .prop("name", component.name())
       .prop("description", component.description())
@@ -251,8 +245,11 @@ public class ComponentAction implements NavigationWsAction {
     json.endArray();
   }
 
-  private void writeQualityGate(JsonWriter json, DbSession session, OrganizationDto organization, ComponentDto component) {
-    QualityGateFinder.QualityGateData qualityGateData = qualityGateFinder.getQualityGate(session, organization, component.uuid())
+  private void writeQualityGate(JsonWriter json, DbSession session, ComponentDto component) {
+    // TODO:: remove while dropping for quality gate
+    OrganizationDto organizationDto = dbClient.organizationDao().selectByUuid(session, component.getOrganizationUuid())
+      .orElseThrow(IllegalStateException::new);
+    QualityGateFinder.QualityGateData qualityGateData = qualityGateFinder.getQualityGate(session, organizationDto, component.uuid())
       .orElseThrow(() -> new NotFoundException(format("Quality Gate not found for %s", component.getKey())));
     QualityGateDto qualityGateDto = qualityGateData.getQualityGate();
     json.name("qualityGate").beginObject()
@@ -274,11 +271,11 @@ public class ComponentAction implements NavigationWsAction {
     json.endArray();
   }
 
-  private void writeConfiguration(JsonWriter json, ComponentDto component, OrganizationDto organization) {
+  private void writeConfiguration(JsonWriter json, ComponentDto component) {
     boolean isProjectAdmin = userSession.hasComponentPermission(ADMIN, component);
 
     json.name("configuration").beginObject();
-    writeConfigPageAccess(json, isProjectAdmin, component, organization);
+    writeConfigPageAccess(json, isProjectAdmin, component);
 
     if (isProjectAdmin) {
       json.name("extensions").beginArray();
@@ -289,7 +286,7 @@ public class ComponentAction implements NavigationWsAction {
     json.endObject();
   }
 
-  private void writeConfigPageAccess(JsonWriter json, boolean isProjectAdmin, ComponentDto component, OrganizationDto organization) {
+  private void writeConfigPageAccess(JsonWriter json, boolean isProjectAdmin, ComponentDto component) {
     boolean isProject = Qualifiers.PROJECT.equals(component.qualifier());
     boolean showManualMeasures = isProjectAdmin && !Qualifiers.DIRECTORY.equals(component.qualifier());
     boolean showBackgroundTasks = isProjectAdmin && (isProject || Qualifiers.VIEW.equals(component.qualifier()) || Qualifiers.APP.equals(component.qualifier()));
@@ -309,8 +306,7 @@ public class ComponentAction implements NavigationWsAction {
     json.prop("showBackgroundTasks", showBackgroundTasks);
     json.prop("canApplyPermissionTemplate", isOrganizationAdmin);
     json.prop("canBrowseProject", canBrowseProject);
-    json.prop("canUpdateProjectVisibilityToPrivate", isProjectAdmin &&
-      billingValidations.canUpdateProjectVisibilityToPrivate(new BillingValidations.Organization(organization.getKey(), organization.getUuid(), organization.getName())));
+    json.prop("canUpdateProjectVisibilityToPrivate", isProjectAdmin);
   }
 
   private boolean componentTypeHasProperty(ComponentDto component, String resourceTypeProperty) {
index 641a8c7152db67d1702df4f86f808f4e3faeb49a..daf384ed63cf26ae03f034fa264d15bb3c65eec8 100644 (file)
@@ -6,7 +6,6 @@
   },
   "components": [
     {
-      "organization": "my-org-1",
       "key": "project-key",
       "qualifier": "TRK",
       "name": "Project Name",
index d491e257133e80cef112fdc4aa3ac0dc68e5a39e..a9f810413b737367a3917010f098cf16f74dd85e 100644 (file)
@@ -4,19 +4,8 @@
     "pageSize": 100,
     "total": 3
   },
-  "organizations": [
-    {
-      "key": "my-org-key-1",
-      "name": "Foo"
-    },
-    {
-      "key": "my-org-key-2",
-      "name": "Bar"
-    }
-  ],
   "components": [
     {
-      "organization": "my-org-key-1",
       "key": "my_project",
       "name": "My Project 1",
       "qualifier": "TRK",
@@ -29,7 +18,6 @@
       "needIssueSync": true
     },
     {
-      "organization": "my-org-key-1",
       "key": "another_project",
       "name": "My Project 2",
       "qualifier": "TRK",
@@ -39,7 +27,6 @@
       "needIssueSync": false
     },
     {
-      "organization": "my-org-key-2",
       "key": "third_project",
       "name": "My Project 3",
       "qualifier": "TRK",
index 835b437f6c227c8bc05872e55ae46e57a4e2f36d..26799f51714fa97a29852b8b4f6a9bb9789e672d 100644 (file)
@@ -1,6 +1,5 @@
 {
   "component": {
-    "organization": "my-org-1",
     "key": "com.sonarsource:java-markdown:src/main/java/com/sonarsource/markdown/impl/Rule.java",
     "name": "Rule.java",
     "qualifier": "FIL",
@@ -12,7 +11,6 @@
   },
   "ancestors": [
     {
-      "organization": "my-org-1",
       "key": "com.sonarsource:java-markdown:src/main/java/com/sonarsource/markdown/impl",
       "name": "src/main/java/com/sonarsource/markdown/impl",
       "qualifier": "DIR",
@@ -21,7 +19,6 @@
       "version": "1.1"
     },
     {
-      "organization": "my-org-1",
       "key": "com.sonarsource:java-markdown",
       "name": "Java Markdown",
       "description": "Java Markdown Project",
index 18e95da7cdab341c30e9304c1c377dc025ebbff1..3c918b6c5b78ee3506b9c9475c36239d7d432d82 100644 (file)
@@ -22,7 +22,6 @@
           "key": "org.sonarsource:sonarqube",
           "name": "SonarSource :: SonarQube",
           "match": "<mark>Sonar</mark>Source :: <mark>Sonar</mark>Qube",
-          "organization": "default-organization",
           "project": "",
           "isRecentlyBrowsed": true,
           "isFavorite": false
@@ -31,7 +30,6 @@
           "key": "org.sonarsource:sonarlint",
           "name": "SonarSource :: SonarLint",
           "match": "<mark>Sonar</mark>Source :: <mark>Sonar</mark>Lint",
-          "organization": "default-organization",
           "project": "",
           "isRecentlyBrowsed": false,
           "isFavorite": false
       "more": 0
     }
   ],
-  "organizations": [
-    {
-      "key": "default-organization",
-      "name": "Default Organization"
-    }
-  ],
   "projects": [
   ]
 }
index ab689fdc9a44ba19fe3111d1106298b85c749b33..898fc110c63242eb01291ccd4629a4e312152b70 100644 (file)
@@ -5,7 +5,6 @@
     "total": 3
   },
   "baseComponent": {
-    "organization": "my-org-1",
     "key": "MY_PROJECT_KEY",
     "description": "MY_PROJECT_DESCRIPTION",
     "qualifier": "TRK",
   },
   "components": [
     {
-      "organization": "my-org-1",
       "key": "com.sonarsource:java-markdown:src/test/java/com/sonarsource/markdown/BasicMarkdownParser.java",
       "name": "BasicMarkdownParser.java",
       "qualifier": "UTS",
       "path": "src/test/java/com/sonarsource/markdown/BasicMarkdownParser.java",
-      "language":"java"
+      "language": "java"
     },
     {
-      "organization": "my-org-1",
       "key": "com.sonarsource:java-markdown:src/test/java/com/sonarsource/markdown/BasicMarkdownParserTest.java",
       "name": "BasicMarkdownParserTest.java",
       "qualifier": "UTS",
       "path": "src/test/java/com/sonarsource/markdown/BasicMarkdownParserTest.java",
-      "language":"java"
+      "language": "java"
     },
     {
-      "organization": "my-org-1",
       "key": "com.sonarsource:java-markdown:src/main/java/com/sonarsource/markdown",
       "name": "src/main/java/com/sonarsource/markdown",
       "qualifier": "DIR",
index fa258b64d3ead44c6bc8485352776b65b12a6dbd..b8c00a6257fc0ade142d56e8106c9bc326eb46b7 100644 (file)
@@ -1,5 +1,4 @@
 {
-  "organization": "my-org-1",
   "key": "org.codehaus.sonar:sonar",
   "id": "ABCD",
   "name": "Sonarqube",
index f8fa8e949963774d9db423a068487ca90a412bec..b52c3099a7bf0157711a2eb4ded02f955faa6d40 100644 (file)
@@ -87,7 +87,7 @@ public class ReportSubmitterTest {
   private final TestProjectIndexers projectIndexers = new TestProjectIndexers();
   private final PermissionTemplateService permissionTemplateService = mock(PermissionTemplateService.class);
   private final ComponentUpdater componentUpdater = new ComponentUpdater(db.getDbClient(), mock(I18n.class), mock(System2.class), permissionTemplateService,
-    new FavoriteUpdater(db.getDbClient()), projectIndexers, new SequenceUuidFactory());
+    new FavoriteUpdater(db.getDbClient()), projectIndexers, new SequenceUuidFactory(), defaultOrganizationProvider);
   private final BranchSupport ossEditionBranchSupport = new BranchSupport();
 
   private final ReportSubmitter underTest = new ReportSubmitter(queue, userSession, componentUpdater, permissionTemplateService, db.getDbClient(), ossEditionBranchSupport,
index da3d4384d560457680d97c1d3ae0c5d937e0e2c6..89a951110a109c6e8be5e3aed8d5204a500f9994 100644 (file)
@@ -21,7 +21,6 @@ package org.sonar.server.component;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.resources.ResourceType;
 import org.sonar.api.resources.ResourceTypes;
 import org.sonar.api.utils.System2;
@@ -33,7 +32,6 @@ import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.component.SnapshotDto;
 import org.sonar.db.issue.IssueDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.db.rule.RuleDefinitionDto;
 import org.sonar.db.webhook.WebhookDto;
@@ -41,6 +39,7 @@ import org.sonar.server.es.TestProjectIndexers;
 
 import static java.util.Arrays.asList;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -52,10 +51,7 @@ public class ComponentCleanerServiceTest {
   private final System2 system2 = System2.INSTANCE;
 
   @Rule
-  public DbTester db = DbTester.create(system2);
-
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
+  public final DbTester db = DbTester.create(system2);
 
   private final DbClient dbClient = db.getDbClient();
   private final DbSession dbSession = db.getSession();
@@ -128,14 +124,13 @@ public class ComponentCleanerServiceTest {
 
   @Test
   public void delete_webhooks_from_projects() {
-    OrganizationDto organization = db.organizations().insert();
-    ProjectDto project1 = db.components().insertPrivateProjectDto(organization);
+    ProjectDto project1 = db.components().insertPrivateProjectDto();
     WebhookDto webhook1 = db.webhooks().insertWebhook(project1);
     db.webhookDelivery().insert(webhook1);
-    ProjectDto project2 = db.components().insertPrivateProjectDto(organization);
+    ProjectDto project2 = db.components().insertPrivateProjectDto();
     WebhookDto webhook2 = db.webhooks().insertWebhook(project2);
     db.webhookDelivery().insert(webhook2);
-    ProjectDto projectNotToBeDeleted = db.components().insertPrivateProjectDto(organization);
+    ProjectDto projectNotToBeDeleted = db.components().insertPrivateProjectDto();
     WebhookDto webhook3 = db.webhooks().insertWebhook(projectNotToBeDeleted);
     db.webhookDelivery().insert(webhook3);
 
@@ -153,19 +148,18 @@ public class ComponentCleanerServiceTest {
   @Test
   public void fail_with_IAE_if_not_a_project() {
     mockResourceTypeAsValidProject();
-    ComponentDto project = ComponentTesting.newPrivateProjectDto(db.organizations().insert());
-    dbClient.componentDao().insert(dbSession, project);
+    ComponentDto project = ComponentTesting.newPrivateProjectDto();
+    db.components().insertComponent(project);
     ComponentDto file = newFileDto(project, null);
     dbClient.componentDao().insert(dbSession, file);
     dbSession.commit();
 
-    expectedException.expect(IllegalArgumentException.class);
-    underTest.delete(dbSession, file);
+    assertThatThrownBy(() -> underTest.delete(dbSession, file))
+      .isInstanceOf(IllegalArgumentException.class);
   }
 
   private DbData insertProjectData() {
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto componentDto = db.components().insertPublicProject(organization);
+    ComponentDto componentDto = db.components().insertPublicProject();
     ProjectDto project = dbClient.projectDao().selectByUuid(dbSession, componentDto.uuid()).get();
     BranchDto branch = dbClient.branchDao().selectByUuid(dbSession, project.getUuid()).get();
 
index 9a640c8ac0aee65dddd0caab29c1b89d8dc3a8eb..b93835a9ff781f28cef2b03d80c7a5778683cc2d 100644 (file)
@@ -21,7 +21,6 @@ package org.sonar.server.component;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.utils.System2;
 import org.sonar.db.DbSession;
 import org.sonar.db.DbTester;
@@ -30,6 +29,7 @@ import org.sonar.server.exceptions.NotFoundException;
 
 import static java.lang.String.format;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.sonar.db.component.BranchType.PULL_REQUEST;
 import static org.sonar.db.component.ComponentTesting.newDirectory;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
@@ -39,60 +39,52 @@ import static org.sonar.server.component.ComponentFinder.ParamNames.ID_AND_KEY;
 
 public class ComponentFinderTest {
 
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
   @Rule
   public DbTester db = DbTester.create(System2.INSTANCE);
 
   private final DbSession dbSession = db.getSession();
-  private ComponentFinder underTest = TestComponentFinder.from(db);
+  private final ComponentFinder underTest = TestComponentFinder.from(db);
 
   @Test
   public void fail_when_the_uuid_and_key_are_null() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'id' or 'key' must be provided");
-
-    underTest.getByUuidOrKey(dbSession, null, null, ID_AND_KEY);
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, null, null, ID_AND_KEY))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Either 'id' or 'key' must be provided");
   }
 
   @Test
   public void fail_when_the_uuid_and_key_are_provided() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'id' or 'key' must be provided");
-
-    underTest.getByUuidOrKey(dbSession, "project-uuid", "project-key", ID_AND_KEY);
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, "project-uuid", "project-key", ID_AND_KEY))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Either 'id' or 'key' must be provided");
   }
 
   @Test
   public void fail_when_the_uuid_is_empty() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("The 'id' parameter must not be empty");
-
-    underTest.getByUuidOrKey(dbSession, "", null, ID_AND_KEY);
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, "", null, ID_AND_KEY))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'id' parameter must not be empty");
   }
 
   @Test
   public void fail_when_the_key_is_empty() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("The 'key' parameter must not be empty");
-
-    underTest.getByUuidOrKey(dbSession, null, "", ID_AND_KEY);
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, null, "", ID_AND_KEY))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'key' parameter must not be empty");
   }
 
   @Test
   public void fail_when_component_uuid_not_found() {
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage("Component id 'project-uuid' not found");
-
-    underTest.getByUuidOrKey(dbSession, "project-uuid", null, ID_AND_KEY);
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, "project-uuid", null, ID_AND_KEY))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage("Component id 'project-uuid' not found");
   }
 
   @Test
   public void fail_when_component_key_not_found() {
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage("Component key 'project-key' not found");
-
-    underTest.getByUuidOrKey(dbSession, null, "project-key", ID_AND_KEY);
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, null, "project-key", ID_AND_KEY))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage("Component key 'project-key' not found");
   }
 
   @Test
@@ -100,10 +92,10 @@ public class ComponentFinderTest {
     ComponentDto project = db.components().insertPublicProject();
     ComponentDto branch = db.components().insertProjectBranch(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(format("Component id '%s' not found", branch.uuid()));
-
-    underTest.getByUuidOrKey(dbSession, branch.uuid(), null, ID_AND_KEY);
+    String branchUuid = branch.uuid();
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, branchUuid, null, ID_AND_KEY))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component id '%s' not found", branchUuid));
   }
 
   @Test
@@ -111,21 +103,20 @@ public class ComponentFinderTest {
     ComponentDto project = db.components().insertPublicProject();
     ComponentDto branch = db.components().insertProjectBranch(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(format("Component key '%s' not found", branch.getDbKey()));
-
-    underTest.getByUuidOrKey(dbSession, null, branch.getDbKey(), ID_AND_KEY);
+    String branchDbKey = branch.getDbKey();
+    assertThatThrownBy(() -> underTest.getByUuidOrKey(dbSession, null, branchDbKey, ID_AND_KEY))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component key '%s' not found", branch.getDbKey()));
   }
 
   @Test
   public void fail_when_component_uuid_is_removed() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.getDefaultOrganization()));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     db.components().insertComponent(newFileDto(project, null, "file-uuid").setEnabled(false));
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage("Component id 'file-uuid' not found");
-
-    underTest.getByUuid(dbSession, "file-uuid");
+    assertThatThrownBy(() -> underTest.getByUuid(dbSession, "file-uuid"))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage("Component id 'file-uuid' not found");
   }
 
   @Test
@@ -133,21 +124,20 @@ public class ComponentFinderTest {
     ComponentDto project = db.components().insertPublicProject();
     ComponentDto branch = db.components().insertProjectBranch(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(format("Component id '%s' not found", branch.uuid()));
-
-    underTest.getByUuid(dbSession, branch.uuid());
+    String branchUuid = branch.uuid();
+    assertThatThrownBy(() -> underTest.getByUuid(dbSession, branchUuid))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component id '%s' not found", branchUuid));
   }
 
   @Test
   public void fail_when_component_key_is_removed() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.getDefaultOrganization()));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     db.components().insertComponent(newFileDto(project).setDbKey("file-key").setEnabled(false));
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage("Component key 'file-key' not found");
-
-    underTest.getByKey(dbSession, "file-key");
+    assertThatThrownBy(() -> underTest.getByKey(dbSession, "file-key"))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage("Component key 'file-key' not found");
   }
 
   @Test
@@ -155,15 +145,15 @@ public class ComponentFinderTest {
     ComponentDto project = db.components().insertPublicProject();
     ComponentDto branch = db.components().insertProjectBranch(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(format("Component key '%s' not found", branch.getDbKey()));
-
-    underTest.getByKey(dbSession, branch.getDbKey());
+    String branchDbKey = branch.getDbKey();
+    assertThatThrownBy(() -> underTest.getByKey(dbSession, branchDbKey))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component key '%s' not found", branchDbKey));
   }
 
   @Test
   public void get_component_by_uuid() {
-    db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), "project-uuid"));
+    db.components().insertComponent(newPrivateProjectDto("project-uuid"));
 
     ComponentDto component = underTest.getByUuidOrKey(dbSession, "project-uuid", null, ID_AND_KEY);
 
@@ -172,7 +162,7 @@ public class ComponentFinderTest {
 
   @Test
   public void get_component_by_key() {
-    db.components().insertComponent(newPrivateProjectDto(db.getDefaultOrganization()).setDbKey("project-key"));
+    db.components().insertComponent(newPrivateProjectDto().setDbKey("project-key"));
 
     ComponentDto component = underTest.getByUuidOrKey(dbSession, null, "project-key", ID_AND_KEY);
 
@@ -212,10 +202,10 @@ public class ComponentFinderTest {
     ComponentDto project = db.components().insertPublicProject();
     ComponentDto pullRequest = db.components().insertProjectBranch(project, b -> b.setKey("pr-123").setBranchType(PULL_REQUEST));
 
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either branch or pull request can be provided, not both");
-
-    assertThat(underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, project.getKey(), "pr-123", "pr-123").uuid()).isEqualTo(pullRequest.uuid());
+    String projectKey = project.getKey();
+    assertThatThrownBy(() -> underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, projectKey, "pr-123", "pr-123"))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Either branch or pull request can be provided, not both");
   }
 
   @Test
@@ -231,9 +221,9 @@ public class ComponentFinderTest {
     ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
     ComponentDto file = db.components().insertComponent(newFileDto(branch));
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(format("Component '%s' on branch 'other_branch' not found", file.getKey()));
-
-    underTest.getByKeyAndBranch(dbSession, file.getKey(), "other_branch");
+    String fileKey = file.getKey();
+    assertThatThrownBy(() -> underTest.getByKeyAndBranch(dbSession, fileKey, "other_branch"))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component '%s' on branch 'other_branch' not found", fileKey));
   }
 }
index 46da8abb584c5b170c82f823c74c0e39d89067ed..99d7ff8857382e4023ba463d9382a5cb44960837 100644 (file)
@@ -21,7 +21,6 @@ package org.sonar.server.component;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.utils.System2;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
@@ -40,28 +39,26 @@ import static org.sonar.db.component.ComponentTesting.newModuleDto;
 public class ComponentServiceTest {
 
   @Rule
-  public UserSessionRule userSession = UserSessionRule.standalone();
+  public final UserSessionRule userSession = UserSessionRule.standalone();
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-  @Rule
-  public DbTester dbTester = DbTester.create(System2.INSTANCE);
+  public final DbTester dbTester = DbTester.create(System2.INSTANCE);
 
-  private ComponentDbTester componentDb = new ComponentDbTester(dbTester);
-  private DbClient dbClient = dbTester.getDbClient();
-  private DbSession dbSession = dbTester.getSession();
-  private TestProjectIndexers projectIndexers = new TestProjectIndexers();
-  private ProjectLifeCycleListeners projectLifeCycleListeners = mock(ProjectLifeCycleListeners.class);
+  private final ComponentDbTester componentDb = new ComponentDbTester(dbTester);
+  private final DbClient dbClient = dbTester.getDbClient();
+  private final DbSession dbSession = dbTester.getSession();
+  private final TestProjectIndexers projectIndexers = new TestProjectIndexers();
+  private final ProjectLifeCycleListeners projectLifeCycleListeners = mock(ProjectLifeCycleListeners.class);
 
-  private ComponentService underTest = new ComponentService(dbClient, userSession, projectIndexers, projectLifeCycleListeners);
+  private final ComponentService underTest = new ComponentService(dbClient, userSession, projectIndexers, projectLifeCycleListeners);
 
   @Test
   public void bulk_update() {
-    ComponentDto project = componentDb.insertPublicProject(dbTester.organizations().insert(), c -> c.setDbKey("my_project"));
+    ComponentDto project = componentDb.insertPublicProject(c -> c.setDbKey("my_project"));
     ComponentDto module = componentDb.insertComponent(newModuleDto(project).setDbKey("my_project:root:module"));
     ComponentDto inactiveModule = componentDb.insertComponent(newModuleDto(project).setDbKey("my_project:root:inactive_module").setEnabled(false));
     ComponentDto file = componentDb.insertComponent(newFileDto(module, null).setDbKey("my_project:root:module:src/File.xoo"));
     ComponentDto inactiveFile = componentDb.insertComponent(newFileDto(module, null).setDbKey("my_project:root:module:src/InactiveFile.xoo").setEnabled(false));
-    
+
     underTest.bulkUpdateKey(dbSession, componentDb.getProjectDto(project), "my_", "your_");
 
     assertComponentKeyUpdated(project.getDbKey(), "your_project");
index 43b0450498d124695ca3be904f66b07c7f953f7c..6cc531ac2a9c2fd18f7d6137bfc3e99d788a94cf 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.component;
 import com.google.common.collect.ImmutableSet;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.utils.System2;
 import org.sonar.api.web.UserRole;
 import org.sonar.db.DbClient;
@@ -31,6 +30,7 @@ import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDbTester;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTesting;
+import org.sonar.db.project.ProjectDto;
 import org.sonar.server.es.ProjectIndexer;
 import org.sonar.server.es.TestProjectIndexers;
 import org.sonar.server.exceptions.ForbiddenException;
@@ -41,6 +41,7 @@ import org.sonar.server.tester.UserSessionRule;
 
 import static java.util.Collections.emptyList;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
@@ -48,14 +49,12 @@ import static org.sonar.db.component.ComponentTesting.newModuleDto;
 
 public class ComponentServiceUpdateKeyTest {
 
-  private System2 system2 = System2.INSTANCE;
+  private final System2 system2 = System2.INSTANCE;
 
   @Rule
-  public UserSessionRule userSession = UserSessionRule.standalone();
+  public final UserSessionRule userSession = UserSessionRule.standalone();
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-  @Rule
-  public DbTester db = DbTester.create(system2);
+  public final DbTester db = DbTester.create(system2);
 
   private ComponentDbTester componentDb = new ComponentDbTester(db);
   private DbClient dbClient = db.getDbClient();
@@ -106,12 +105,12 @@ public class ComponentServiceUpdateKeyTest {
 
   @Test
   public void fail_to_update_project_key_without_admin_permission() {
-    expectedException.expect(ForbiddenException.class);
-
     ComponentDto project = insertSampleProject();
     userSession.logIn("john").addProjectPermission(UserRole.USER, project);
 
-    underTest.updateKey(dbSession, componentDb.getProjectDto(project), "sample2:root");
+    ProjectDto projectDto = componentDb.getProjectDto(project);
+    assertThatThrownBy(() -> underTest.updateKey(dbSession, projectDto, "sample2:root"))
+      .isInstanceOf(ForbiddenException.class);
   }
 
   @Test
@@ -120,10 +119,12 @@ public class ComponentServiceUpdateKeyTest {
     ComponentDto anotherProject = componentDb.insertPrivateProject();
     logInAsProjectAdministrator(project);
 
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Impossible to update key: a component with key \"" + anotherProject.getDbKey() + "\" already exists.");
-
-    underTest.updateKey(dbSession, componentDb.getProjectDto(project), anotherProject.getDbKey());
+    ProjectDto projectDto = componentDb.getProjectDto(project);
+    String anotherProjectDbKey = anotherProject.getDbKey();
+    assertThatThrownBy(() -> underTest.updateKey(dbSession, projectDto,
+      anotherProjectDbKey))
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Impossible to update key: a component with key \"" + anotherProjectDbKey + "\" already exists.");
   }
 
   @Test
@@ -131,10 +132,10 @@ public class ComponentServiceUpdateKeyTest {
     ComponentDto project = insertSampleProject();
     logInAsProjectAdministrator(project);
 
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Malformed key for ''. Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.");
-
-    underTest.updateKey(dbSession, componentDb.getProjectDto(project), "");
+    ProjectDto projectDto = componentDb.getProjectDto(project);
+    assertThatThrownBy(() -> underTest.updateKey(dbSession, projectDto, ""))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Malformed key for ''. Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.");
   }
 
   @Test
@@ -142,15 +143,15 @@ public class ComponentServiceUpdateKeyTest {
     ComponentDto project = insertSampleProject();
     logInAsProjectAdministrator(project);
 
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Malformed key for 'sample?root'. Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.");
-
-    underTest.updateKey(dbSession, componentDb.getProjectDto(project), "sample?root");
+    ProjectDto projectDto = componentDb.getProjectDto(project);
+    assertThatThrownBy(() -> underTest.updateKey(dbSession, projectDto, "sample?root"))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Malformed key for 'sample?root'. Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.");
   }
 
   @Test
   public void bulk_update_key() {
-    ComponentDto project = componentDb.insertPublicProject(db.organizations().insert(), c -> c.setDbKey("my_project"));
+    ComponentDto project = componentDb.insertPublicProject(c -> c.setDbKey("my_project"));
     ComponentDto module = componentDb.insertComponent(newModuleDto(project).setDbKey("my_project:root:module"));
     ComponentDto inactiveModule = componentDb.insertComponent(newModuleDto(project).setDbKey("my_project:root:inactive_module").setEnabled(false));
     ComponentDto file = componentDb.insertComponent(newFileDto(module, null).setDbKey("my_project:root:module:src/File.xoo"));
@@ -169,7 +170,7 @@ public class ComponentServiceUpdateKeyTest {
 
   @Test
   public void bulk_update_key_with_branch_and_pr() {
-    ComponentDto project = componentDb.insertPublicProject(db.organizations().insert(), c -> c.setDbKey("my_project"));
+    ComponentDto project = componentDb.insertPublicProject(c -> c.setDbKey("my_project"));
     ComponentDto branch = componentDb.insertProjectBranch(project);
     ComponentDto module = componentDb.insertComponent(newModuleDto(branch).setDbKey("my_project:root:module"));
     ComponentDto file = componentDb.insertComponent(newFileDto(module, null).setDbKey("my_project:root:module:src/File.xoo"));
@@ -193,7 +194,7 @@ public class ComponentServiceUpdateKeyTest {
   }
 
   private ComponentDto insertProject(String key) {
-    return componentDb.insertPrivateProject(db.organizations().insert(), c -> c.setDbKey(key));
+    return componentDb.insertPrivateProject(c -> c.setDbKey(key));
   }
 
   private void assertComponentKeyHasBeenUpdated(String oldKey, String newKey) {
index 7fa9a4617bd34a6b61132591bb7672311d349880..72cadbd754bb1c7577acdf38bbc238ac82ba508e 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.component;
 import java.util.Optional;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.Scopes;
 import org.sonar.api.utils.System2;
@@ -32,17 +31,19 @@ import org.sonar.db.DbTester;
 import org.sonar.db.component.BranchDto;
 import org.sonar.db.component.BranchType;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.user.UserDto;
 import org.sonar.server.es.ProjectIndexer;
 import org.sonar.server.es.TestProjectIndexers;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.favorite.FavoriteUpdater;
 import org.sonar.server.l18n.I18nRule;
+import org.sonar.server.organization.DefaultOrganizationProvider;
+import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.permission.PermissionTemplateService;
 
 import static java.util.stream.IntStream.rangeClosed;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
@@ -56,29 +57,27 @@ public class ComponentUpdaterTest {
   private static final String DEFAULT_PROJECT_KEY = "project-key";
   private static final String DEFAULT_PROJECT_NAME = "project-name";
 
-  private System2 system2 = System2.INSTANCE;
+  private final System2 system2 = System2.INSTANCE;
 
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
+  public final DbTester db = DbTester.create(system2);
   @Rule
-  public DbTester db = DbTester.create(system2);
-  @Rule
-  public I18nRule i18n = new I18nRule().put("qualifier.TRK", "Project");
+  public final I18nRule i18n = new I18nRule().put("qualifier.TRK", "Project");
 
-  private TestProjectIndexers projectIndexers = new TestProjectIndexers();
-  private PermissionTemplateService permissionTemplateService = mock(PermissionTemplateService.class);
+  private final TestProjectIndexers projectIndexers = new TestProjectIndexers();
+  private final PermissionTemplateService permissionTemplateService = mock(PermissionTemplateService.class);
+  private final DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
 
   private ComponentUpdater underTest = new ComponentUpdater(db.getDbClient(), i18n, system2,
     permissionTemplateService,
     new FavoriteUpdater(db.getDbClient()),
-    projectIndexers, new SequenceUuidFactory());
+    projectIndexers, new SequenceUuidFactory(), defaultOrganizationProvider);
 
   @Test
   public void persist_and_index_when_creating_project() {
     NewComponent project = NewComponent.newComponentBuilder()
       .setKey(DEFAULT_PROJECT_KEY)
       .setName(DEFAULT_PROJECT_NAME)
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .setPrivate(true)
       .build();
     ComponentDto returned = underTest.create(db.getSession(), project, null);
@@ -89,7 +88,6 @@ public class ComponentUpdaterTest {
     assertThat(loaded.longName()).isEqualTo(DEFAULT_PROJECT_NAME);
     assertThat(loaded.qualifier()).isEqualTo(Qualifiers.PROJECT);
     assertThat(loaded.scope()).isEqualTo(Scopes.PROJECT);
-    assertThat(loaded.getOrganizationUuid()).isEqualTo(db.getDefaultOrganization().getUuid());
     assertThat(loaded.uuid()).isNotNull();
     assertThat(loaded.projectUuid()).isEqualTo(loaded.uuid());
     assertThat(loaded.moduleUuid()).isNull();
@@ -111,11 +109,9 @@ public class ComponentUpdaterTest {
 
   @Test
   public void persist_private_flag_true_when_creating_project() {
-    OrganizationDto organization = db.organizations().insert();
     NewComponent project = NewComponent.newComponentBuilder()
       .setKey(DEFAULT_PROJECT_KEY)
       .setName(DEFAULT_PROJECT_NAME)
-      .setOrganizationUuid(organization.getUuid())
       .setPrivate(true)
       .build();
     ComponentDto returned = underTest.create(db.getSession(), project, null);
@@ -125,11 +121,9 @@ public class ComponentUpdaterTest {
 
   @Test
   public void persist_private_flag_false_when_creating_project() {
-    OrganizationDto organization = db.organizations().insert();
     NewComponent project = NewComponent.newComponentBuilder()
       .setKey(DEFAULT_PROJECT_KEY)
       .setName(DEFAULT_PROJECT_NAME)
-      .setOrganizationUuid(organization.getUuid())
       .setPrivate(false)
       .build();
     ComponentDto returned = underTest.create(db.getSession(), project, null);
@@ -143,7 +137,6 @@ public class ComponentUpdaterTest {
       .setKey("view-key")
       .setName("view-name")
       .setQualifier(VIEW)
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .build();
 
     ComponentDto returned = underTest.create(db.getSession(), view, null);
@@ -163,7 +156,6 @@ public class ComponentUpdaterTest {
       .setKey("app-key")
       .setName("app-name")
       .setQualifier(APP)
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .build();
 
     ComponentDto returned = underTest.create(db.getSession(), application, null);
@@ -188,7 +180,6 @@ public class ComponentUpdaterTest {
     NewComponent project = NewComponent.newComponentBuilder()
       .setKey(DEFAULT_PROJECT_KEY)
       .setName(DEFAULT_PROJECT_NAME)
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .build();
     ComponentDto dto = underTest.create(db.getSession(), project, userUuid);
 
@@ -201,7 +192,6 @@ public class ComponentUpdaterTest {
     NewComponent project = NewComponent.newComponentBuilder()
       .setKey(DEFAULT_PROJECT_KEY)
       .setName(DEFAULT_PROJECT_NAME)
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .build();
     when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(any(DbSession.class), any(ComponentDto.class)))
       .thenReturn(true);
@@ -218,7 +208,6 @@ public class ComponentUpdaterTest {
     NewComponent project = NewComponent.newComponentBuilder()
       .setKey(DEFAULT_PROJECT_KEY)
       .setName(DEFAULT_PROJECT_NAME)
-      .setOrganizationUuid(db.getDefaultOrganization().getUuid())
       .build();
     when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(eq(db.getSession()), any(ComponentDto.class)))
       .thenReturn(true);
@@ -236,7 +225,6 @@ public class ComponentUpdaterTest {
       NewComponent.newComponentBuilder()
         .setKey(DEFAULT_PROJECT_KEY)
         .setName(DEFAULT_PROJECT_NAME)
-        .setOrganizationUuid(db.getDefaultOrganization().getUuid())
         .build(),
       null);
 
@@ -249,7 +237,6 @@ public class ComponentUpdaterTest {
       NewComponent.newComponentBuilder()
         .setKey(DEFAULT_PROJECT_KEY)
         .setName(DEFAULT_PROJECT_NAME)
-        .setOrganizationUuid(db.getDefaultOrganization().getUuid())
         .build(),
       null);
 
@@ -260,59 +247,37 @@ public class ComponentUpdaterTest {
   public void fail_when_project_key_already_exists() {
     ComponentDto existing = db.components().insertPrivateProject();
 
-    expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("Could not create Project, key already exists: " + existing.getDbKey());
-
-    underTest.create(db.getSession(),
-      NewComponent.newComponentBuilder()
-        .setKey(existing.getDbKey())
-        .setName(DEFAULT_PROJECT_NAME)
-        .setOrganizationUuid(existing.getOrganizationUuid())
-        .build(),
-      null);
-  }
-
-  @Test
-  public void fail_when_project_key_already_exists_on_other_organization() {
-    ComponentDto existing = db.components().insertPrivateProject(db.organizations().insert());
-
-    expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("Could not create Project, key already exists: " + existing.getDbKey());
-
-    underTest.create(db.getSession(),
-      NewComponent.newComponentBuilder()
-        .setKey(existing.getDbKey())
-        .setName(DEFAULT_PROJECT_NAME)
-        .setOrganizationUuid(existing.getOrganizationUuid())
-        .build(),
-      null);
+    DbSession session = db.getSession();
+    NewComponent newComponent = NewComponent.newComponentBuilder()
+      .setKey(existing.getDbKey())
+      .setName(DEFAULT_PROJECT_NAME)
+      .build();
+    assertThatThrownBy(() -> underTest.create(session, newComponent, null))
+      .isInstanceOf(BadRequestException.class)
+      .hasMessage("Could not create Project, key already exists: " + existing.getDbKey());
   }
 
   @Test
   public void fail_when_key_has_bad_format() {
-    expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("Malformed key for Project: '1234'");
-
-    underTest.create(db.getSession(),
-      NewComponent.newComponentBuilder()
-        .setKey("1234")
-        .setName(DEFAULT_PROJECT_NAME)
-        .setOrganizationUuid(db.getDefaultOrganization().getUuid())
-        .build(),
-      null);
+    DbSession session = db.getSession();
+    NewComponent newComponent = NewComponent.newComponentBuilder()
+      .setKey("1234")
+      .setName(DEFAULT_PROJECT_NAME)
+      .build();
+    assertThatThrownBy(() -> underTest.create(session, newComponent, null))
+      .isInstanceOf(BadRequestException.class)
+      .hasMessageContaining("Malformed key for Project: '1234'");
   }
 
   @Test
   public void fail_when_key_contains_percent_character() {
-    expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("Malformed key for Project: 'roject%Key'");
-
-    underTest.create(db.getSession(),
-      NewComponent.newComponentBuilder()
-        .setKey("roject%Key")
-        .setName(DEFAULT_PROJECT_NAME)
-        .setOrganizationUuid(db.getDefaultOrganization().getUuid())
-        .build(),
-      null);
+    DbSession session = db.getSession();
+    NewComponent newComponent = NewComponent.newComponentBuilder()
+      .setKey("roject%Key")
+      .setName(DEFAULT_PROJECT_NAME)
+      .build();
+    assertThatThrownBy(() -> underTest.create(session, newComponent, null))
+      .isInstanceOf(BadRequestException.class)
+      .hasMessageContaining("Malformed key for Project: 'roject%Key'");
   }
 }
index 94119fefc52d621212160fea52d7de02b91e0eee..81a45b127ada78b568ec3d1be7fd10a1dca3f76a 100644 (file)
  */
 package org.sonar.server.component;
 
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 
 import static com.google.common.base.Strings.repeat;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.sonar.api.resources.Qualifiers.PROJECT;
 import static org.sonar.server.component.NewComponent.newComponentBuilder;
 
 public class NewComponentTest {
-  private static final String ORGANIZATION_UUID = "org1";
   private static final String KEY = "key";
   private static final String NAME = "name";
 
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-
-  private NewComponent.Builder underTest = newComponentBuilder();
-
-  @Test
-  public void build_throws_NPE_if_organizationUuid_is_null() {
-    expectBuildException(NullPointerException.class, "organization uuid can't be null");
-  }
+  private final NewComponent.Builder underTest = newComponentBuilder();
 
   @Test
   public void build_throws_IAE_when_key_is_null() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID);
+    underTest.setKey(null);
 
     expectBuildException(IllegalArgumentException.class, "Component key can't be empty");
   }
@@ -53,16 +43,14 @@ public class NewComponentTest {
   @Test
   public void build_throws_IAE_when_key_is_empty() {
     underTest
-      .setKey("")
-      .setOrganizationUuid(ORGANIZATION_UUID);
+      .setKey("");
 
     expectBuildException(IllegalArgumentException.class, "Component key can't be empty");
   }
 
   @Test
   public void build_throws_IAE_when_key_is_longer_than_400_characters() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(repeat("a", 400 + 1));
+    underTest.setKey(repeat("a", 400 + 1));
 
     expectBuildException(
       IllegalArgumentException.class,
@@ -71,16 +59,14 @@ public class NewComponentTest {
 
   @Test
   public void build_fails_with_IAE_when_name_is_null() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(KEY);
+    underTest.setKey(KEY);
 
     expectBuildException(IllegalArgumentException.class, "Component name can't be empty");
   }
 
   @Test
   public void build_fails_with_IAE_when_name_is_empty() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(KEY)
+    underTest.setKey(KEY)
       .setName("");
 
     expectBuildException(IllegalArgumentException.class, "Component name can't be empty");
@@ -88,8 +74,7 @@ public class NewComponentTest {
 
   @Test
   public void build_fails_with_IAE_when_name_is_longer_than_2000_characters() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(KEY)
+    underTest.setKey(KEY)
       .setName(repeat("a", 501));
 
     expectBuildException(
@@ -99,8 +84,7 @@ public class NewComponentTest {
 
   @Test
   public void build_fails_with_IAE_when_qualifier_is_null() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(KEY)
+    underTest.setKey(KEY)
       .setName(NAME)
       .setQualifier(null);
 
@@ -109,8 +93,7 @@ public class NewComponentTest {
 
   @Test
   public void build_fails_with_IAE_when_qualifier_is_empty() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(KEY)
+    underTest.setKey(KEY)
       .setName(NAME)
       .setQualifier("");
 
@@ -119,8 +102,7 @@ public class NewComponentTest {
 
   @Test
   public void build_fails_with_IAE_when_qualifier_is_longer_than_10_characters() {
-    underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(KEY)
+    underTest.setKey(KEY)
       .setName(NAME)
       .setQualifier(repeat("a", 10 + 1));
 
@@ -131,8 +113,7 @@ public class NewComponentTest {
 
   @Test
   public void getQualifier_returns_PROJECT_when_no_set_in_builder() {
-    NewComponent newComponent = underTest.setOrganizationUuid(ORGANIZATION_UUID)
-      .setKey(KEY)
+    NewComponent newComponent = underTest.setKey(KEY)
       .setName(NAME)
       .build();
 
@@ -140,9 +121,8 @@ public class NewComponentTest {
   }
 
   private void expectBuildException(Class<? extends Exception> expectedExceptionType, String expectedMessage) {
-    expectedException.expect(expectedExceptionType);
-    expectedException.expectMessage(expectedMessage);
-
-    underTest.build();
+    assertThatThrownBy(() -> underTest.build())
+      .isInstanceOf(expectedExceptionType)
+      .hasMessageContaining(expectedMessage);
   }
 }
index de48f24eead74fe1be347b81062c4f6d3be90cbf..2c70e97c7ee863a94b0de8939f1804c6392d7a71 100644 (file)
@@ -21,7 +21,6 @@ package org.sonar.server.component.ws;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDto;
@@ -30,9 +29,11 @@ import org.sonar.server.component.TestComponentFinder;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.tester.UserSessionRule;
+import org.sonar.server.ws.TestRequest;
 import org.sonar.server.ws.WsActionTester;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.sonar.api.measures.CoreMetrics.COVERAGE_KEY;
 import static org.sonar.api.measures.CoreMetrics.DUPLICATED_LINES_DENSITY_KEY;
 import static org.sonar.api.measures.CoreMetrics.LINES_KEY;
@@ -49,15 +50,13 @@ import static org.sonar.test.JsonAssert.assertJson;
 public class AppActionTest {
 
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
+  public final UserSessionRule userSession = UserSessionRule.standalone();
   @Rule
-  public UserSessionRule userSession = UserSessionRule.standalone();
-  @Rule
-  public DbTester db = DbTester.create();
+  public final DbTester db = DbTester.create();
 
-  private ComponentViewerJsonWriter componentViewerJsonWriter = new ComponentViewerJsonWriter(db.getDbClient());
+  private final ComponentViewerJsonWriter componentViewerJsonWriter = new ComponentViewerJsonWriter(db.getDbClient());
 
-  private WsActionTester ws = new WsActionTester(new AppAction(db.getDbClient(), userSession,
+  private final WsActionTester ws = new WsActionTester(new AppAction(db.getDbClient(), userSession,
     TestComponentFinder.from(db), componentViewerJsonWriter));
 
   @Test
@@ -290,10 +289,10 @@ public class AppActionTest {
 
   @Test
   public void fail_if_no_parameter_provided() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("The 'component' parameter is missing");
-
-    ws.newRequest().execute();
+    TestRequest request = ws.newRequest();
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'component' parameter is missing");
   }
 
   @Test
@@ -361,15 +360,13 @@ public class AppActionTest {
     ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setBranchType(PULL_REQUEST));
     ComponentDto file = db.components().insertComponent(newFileDto(branch));
 
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either branch or pull request can be provided, not both");
-
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam("component", file.getDbKey())
       .setParam("branch", "unknown_branch")
-      .setParam("pullRequest", "unknown_component")
-      .execute()
-      .getInput();
+      .setParam("pullRequest", "unknown_component");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Either branch or pull request can be provided, not both");
   }
 
   @Test
@@ -377,11 +374,10 @@ public class AppActionTest {
     ComponentDto project = db.components().insertPrivateProject();
     ComponentDto file = db.components().insertComponent(newFileDto(project));
 
-    expectedException.expect(NotFoundException.class);
-
-    ws.newRequest()
-      .setParam("component", "unknown")
-      .execute();
+    TestRequest request = ws.newRequest()
+      .setParam("component", "unknown");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(NotFoundException.class);
   }
 
   @Test
@@ -390,12 +386,12 @@ public class AppActionTest {
     ComponentDto branch = db.components().insertProjectBranch(project);
     ComponentDto file = db.components().insertComponent(newFileDto(branch));
 
-    expectedException.expect(NotFoundException.class);
-
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam("component", file.getKey())
-      .setParam("branch", "unknown")
-      .execute();
+      .setParam("branch", "unknown");
+
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(NotFoundException.class);
   }
 
   @Test
@@ -403,11 +399,11 @@ public class AppActionTest {
     ComponentDto project = db.components().insertPrivateProject();
     ComponentDto file = db.components().insertComponent(newFileDto(project));
 
-    expectedException.expect(ForbiddenException.class);
+    TestRequest request = ws.newRequest()
+      .setParam("component", file.getKey());
 
-    ws.newRequest()
-      .setParam("component", file.getKey())
-      .execute();
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(ForbiddenException.class);
   }
 
   @Test
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/ComponentDtoToWsComponentTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ws/ComponentDtoToWsComponentTest.java
deleted file mode 100644 (file)
index 9931add..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.component.ws;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.sonar.db.component.BranchType;
-import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
-import org.sonar.db.organization.OrganizationDto;
-import org.sonar.db.organization.OrganizationTesting;
-import org.sonar.db.project.ProjectDto;
-
-import static org.sonar.server.component.ws.ComponentDtoToWsComponent.componentDtoToWsComponent;
-import static org.sonar.server.component.ws.ComponentDtoToWsComponent.projectOrAppToWsComponent;
-
-public class ComponentDtoToWsComponentTest {
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-
-  @Test
-  public void componentDtoToWsComponent_throws_IAE_if_organization_uuid_of_component_does_not_match_organizationDto_uuid() {
-    OrganizationDto organizationDto1 = OrganizationTesting.newOrganizationDto();
-    OrganizationDto organizationDto2 = OrganizationTesting.newOrganizationDto();
-
-    ProjectDto parentProjectDto = ComponentTesting.createPrivateProjectDto(organizationDto1);
-    ComponentDto componentDto = ComponentTesting.newBranchComponent(parentProjectDto,
-      ComponentTesting.newBranchDto(parentProjectDto.getUuid(), BranchType.BRANCH));
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("OrganizationUuid (" + organizationDto1.getUuid() + ") of ComponentDto to convert " +
-      "to Ws Component is not the same as the one (" + organizationDto2.getUuid() + ") of the specified OrganizationDto");
-
-    componentDtoToWsComponent(componentDto, parentProjectDto, organizationDto2, null);
-  }
-
-  @Test
-  public void projectOrAppToWsComponent_throws_IAE_if_organization_uuid_of_component_does_not_match_organizationDto_uuid() {
-    OrganizationDto organizationDto1 = OrganizationTesting.newOrganizationDto();
-    OrganizationDto organizationDto2 = OrganizationTesting.newOrganizationDto();
-    ProjectDto projectDto = ComponentTesting.createPrivateProjectDto(organizationDto1);
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("OrganizationUuid (" + organizationDto1.getUuid() + ") of ComponentDto to convert " +
-      "to Ws Component is not the same as the one (" + organizationDto2.getUuid() + ") of the specified OrganizationDto");
-
-    projectOrAppToWsComponent(projectDto, organizationDto2, null);
-  }
-
-}
index d8257d95e87e42ea62975a2a45b90d4d7ae188f0..568cbdd462b482ce54427b9ca7527e7c107aa250 100644 (file)
@@ -30,8 +30,8 @@ import static org.sonarqube.ws.client.component.ComponentsWsParameters.CONTROLLE
 
 public class ComponentsWsTest {
 
-  private String actionKey = randomAlphanumeric(10);
-  private ComponentsWsAction action = new ComponentsWsAction() {
+  private final String actionKey = randomAlphanumeric(10);
+  private final ComponentsWsAction action = new ComponentsWsAction() {
 
     @Override
     public void handle(Request request, Response response) {
index c3a0f25490455633125b7ea902f27ff7573d22e3..3f0aa0f05f3b737fa8227892ef0b8e19bf97d4b1 100644 (file)
@@ -20,9 +20,7 @@
 package org.sonar.server.component.ws;
 
 import java.util.List;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.server.component.ws.FilterParser.Criterion;
 
 import static java.util.Arrays.asList;
@@ -38,9 +36,6 @@ import static org.sonar.server.measure.index.ProjectMeasuresQuery.Operator.LTE;
 
 public class FilterParserTest {
 
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-
   @Test
   public void parse_filter_having_operator_and_value() {
     List<Criterion> criterion = FilterParser.parse("ncloc > 10 and coverage <= 80");
index b375cad9dd0c26e74cb47981032fa4e8ce7639b5..6c05a6b65830ed97a76988aa3e3047899a44b677 100644 (file)
@@ -26,8 +26,6 @@ import java.util.List;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.sonar.api.resources.Language;
 import org.sonar.api.server.ws.Change;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.System2;
@@ -35,14 +33,12 @@ import org.sonar.db.DbTester;
 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.component.index.ComponentIndex;
 import org.sonar.server.component.index.ComponentIndexer;
 import org.sonar.server.component.ws.SearchAction.SearchRequest;
 import org.sonar.server.es.EsTester;
 import org.sonar.server.l18n.I18nRule;
-import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.permission.index.PermissionIndexerTester;
 import org.sonar.server.permission.index.WebAuthorizationTypeSupport;
 import org.sonar.server.tester.UserSessionRule;
@@ -56,6 +52,7 @@ import static java.util.Arrays.asList;
 import static java.util.Collections.singletonList;
 import static java.util.Optional.ofNullable;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.api.Assertions.tuple;
 import static org.sonar.api.resources.Qualifiers.APP;
 import static org.sonar.api.resources.Qualifiers.DIRECTORY;
@@ -69,34 +66,29 @@ import static org.sonar.db.component.ComponentTesting.newModuleDto;
 import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
 import static org.sonar.db.component.ComponentTesting.newView;
 import static org.sonar.test.JsonAssert.assertJson;
-import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_QUALIFIERS;
 
 public class SearchActionTest {
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
+  public final UserSessionRule userSession = UserSessionRule.standalone();
   @Rule
-  public UserSessionRule userSession = UserSessionRule.standalone();
+  public final DbTester db = DbTester.create(System2.INSTANCE);
   @Rule
-  public DbTester db = DbTester.create(System2.INSTANCE);
-  @Rule
-  public EsTester es = EsTester.create();
+  public final EsTester es = EsTester.create();
 
-  private I18nRule i18n = new I18nRule();
-  private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
-  private ResourceTypesRule resourceTypes = new ResourceTypesRule();
-  private ComponentIndexer indexer = new ComponentIndexer(db.getDbClient(), es.client());
-  private PermissionIndexerTester authorizationIndexerTester = new PermissionIndexerTester(es, indexer);
-  private ComponentIndex index = new ComponentIndex(es.client(), new WebAuthorizationTypeSupport(userSession), System2.INSTANCE);
+  private final I18nRule i18n = new I18nRule();
+  private final ResourceTypesRule resourceTypes = new ResourceTypesRule();
+  private final ComponentIndexer indexer = new ComponentIndexer(db.getDbClient(), es.client());
+  private final PermissionIndexerTester authorizationIndexerTester = new PermissionIndexerTester(es, indexer);
+  private final ComponentIndex index = new ComponentIndex(es.client(), new WebAuthorizationTypeSupport(userSession), System2.INSTANCE);
 
   private UserDto user;
-
-  private WsActionTester ws;
+  private WsActionTester underTest;
 
   @Before
   public void setUp() {
     resourceTypes.setAllQualifiers(APP, PROJECT, DIRECTORY, FILE);
-    ws = new WsActionTester(new SearchAction(index, db.getDbClient(), resourceTypes, i18n, defaultOrganizationProvider));
+    underTest = new WsActionTester(new SearchAction(index, db.getDbClient(), resourceTypes, i18n));
 
     user = db.users().insertUser("john");
     userSession.logIn(user);
@@ -104,7 +96,7 @@ public class SearchActionTest {
 
   @Test
   public void verify_definition() {
-    WebService.Action action = ws.getDef();
+    WebService.Action action = underTest.getDef();
 
     assertThat(action.since()).isEqualTo("6.3");
     assertThat(action.isPost()).isFalse();
@@ -118,7 +110,7 @@ public class SearchActionTest {
         tuple("7.6", "The use of 'BRC' as value for parameter 'qualifiers' is deprecated"));
     assertThat(action.responseExampleAsString()).isNotEmpty();
 
-    assertThat(action.params()).hasSize(5);
+    assertThat(action.params()).hasSize(4);
 
     WebService.Param pageSize = action.param("ps");
     assertThat(pageSize.isRequired()).isFalse();
@@ -128,20 +120,13 @@ public class SearchActionTest {
 
     WebService.Param qualifiers = action.param("qualifiers");
     assertThat(qualifiers.isRequired()).isTrue();
-
-    WebService.Param organization = action.param("organization");
-    assertThat(organization.isRequired()).isFalse();
-    assertThat(organization.description()).isEqualTo("Organization key");
-    assertThat(organization.isInternal()).isTrue();
-    assertThat(organization.exampleValue()).isEqualTo("my-org");
-    assertThat(organization.since()).isEqualTo("6.3");
   }
 
   @Test
   public void search_by_key_query() {
     insertProjectsAuthorizedForUser(
-      ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()).setDbKey("project-_%-key"),
-      ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()).setDbKey("project-key-without-escaped-characters"));
+      ComponentTesting.newPrivateProjectDto().setDbKey("project-_%-key"),
+      ComponentTesting.newPrivateProjectDto().setDbKey("project-key-without-escaped-characters"));
 
     SearchWsResponse response = call(new SearchRequest().setQuery("project-_%-key").setQualifiers(singletonList(PROJECT)));
 
@@ -150,23 +135,22 @@ public class SearchActionTest {
 
   @Test
   public void search_with_pagination() {
-    OrganizationDto organizationDto = db.organizations().insert();
     List<ComponentDto> componentDtoList = new ArrayList<>();
     for (int i = 1; i <= 9; i++) {
-      componentDtoList.add(newPrivateProjectDto(organizationDto, "project-uuid-" + i).setDbKey("project-key-" + i).setName("Project Name " + i));
+      componentDtoList.add(newPrivateProjectDto("project-uuid-" + i).setDbKey("project-key-" + i).setName("Project Name " + i));
     }
     insertProjectsAuthorizedForUser(componentDtoList.toArray(new ComponentDto[] {}));
 
-    SearchWsResponse response = call(new SearchRequest().setOrganization(organizationDto.getKey()).setPage(2).setPageSize(3).setQualifiers(singletonList(PROJECT)));
+    SearchWsResponse response = call(new SearchRequest().setPage(2).setPageSize(3).setQualifiers(singletonList(PROJECT)));
 
     assertThat(response.getComponentsList()).extracting(Component::getKey).containsExactly("project-key-4", "project-key-5", "project-key-6");
   }
 
   @Test
   public void return_only_projects_on_which_user_has_browse_permission() {
-    ComponentDto project1 = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
-    ComponentDto project2 = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
-    ComponentDto portfolio = ComponentTesting.newView(db.getDefaultOrganization());
+    ComponentDto project1 = ComponentTesting.newPrivateProjectDto();
+    ComponentDto project2 = ComponentTesting.newPrivateProjectDto();
+    ComponentDto portfolio = ComponentTesting.newView();
 
     db.components().insertComponents(project1, project2, portfolio);
     setBrowsePermissionOnUserAndIndex(project1);
@@ -180,7 +164,7 @@ public class SearchActionTest {
 
   @Test
   public void return_project_key() {
-    ComponentDto project = ComponentTesting.newPublicProjectDto(db.getDefaultOrganization());
+    ComponentDto project = ComponentTesting.newPublicProjectDto();
     ComponentDto module = ComponentTesting.newModuleDto(project);
     ComponentDto dir1 = newDirectory(module, "dir1").setDbKey("dir1");
     ComponentDto dir2 = newDirectory(module, "dir2").setDbKey("dir2");
@@ -208,37 +192,35 @@ public class SearchActionTest {
 
   @Test
   public void fail_if_unknown_qualifier_provided() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Value of parameter 'qualifiers' (Unknown-Qualifier) must be one of: [APP, TRK]");
-
-    call(new SearchRequest().setQualifiers(singletonList("Unknown-Qualifier")));
+    SearchRequest searchRequest = new SearchRequest().setQualifiers(singletonList("Unknown-Qualifier"));
+    assertThatThrownBy(() -> call(searchRequest))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Value of parameter 'qualifiers' (Unknown-Qualifier) must be one of: [APP, TRK]");
   }
 
   @Test
   public void fail_when_no_qualifier_provided() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("The 'qualifiers' parameter is missing");
-
-    call(new SearchRequest());
+    SearchRequest searchRequest = new SearchRequest();
+    assertThatThrownBy(() -> call(searchRequest))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'qualifiers' parameter is missing");
   }
 
   @Test
   public void test_json_example() {
-    OrganizationDto organizationDto = db.organizations().insertForKey("my-org-1");
-    db.components().insertComponent(newView(organizationDto));
-    ComponentDto project = newPrivateProjectDto(organizationDto, "project-uuid").setName("Project Name").setDbKey("project-key");
+    db.components().insertComponent(newView());
+    ComponentDto project = newPrivateProjectDto("project-uuid").setName("Project Name").setDbKey("project-key");
     ComponentDto module = newModuleDto("module-uuid", project).setName("Module Name").setDbKey("module-key");
     ComponentDto directory = newDirectory(module, "path/to/directoy").setUuid("directory-uuid").setDbKey("directory-key").setName("Directory Name");
-    ComponentDto view = newView(organizationDto);
+    ComponentDto view = newView();
     db.components().insertComponents(project, module, directory, view);
     setBrowsePermissionOnUserAndIndex(project);
 
-    String response = ws.newRequest()
+    String response = underTest.newRequest()
       .setMediaType(MediaTypes.JSON)
-      .setParam(PARAM_ORGANIZATION, organizationDto.getKey())
       .setParam(PARAM_QUALIFIERS, PROJECT)
       .execute().getInput();
-    assertJson(response).isSimilarTo(ws.getDef().responseExampleAsString());
+    assertJson(response).isSimilarTo(underTest.getDef().responseExampleAsString());
   }
 
   private void insertProjectsAuthorizedForUser(ComponentDto... projects) {
@@ -253,8 +235,7 @@ public class SearchActionTest {
   }
 
   private SearchWsResponse call(SearchRequest wsRequest) {
-    TestRequest request = ws.newRequest();
-    ofNullable(wsRequest.getOrganization()).ifPresent(p3 -> request.setParam(PARAM_ORGANIZATION, p3));
+    TestRequest request = underTest.newRequest();
     ofNullable(wsRequest.getQualifiers()).ifPresent(p1 -> request.setParam(PARAM_QUALIFIERS, Joiner.on(",").join(p1)));
     ofNullable(wsRequest.getQuery()).ifPresent(p -> request.setParam(TEXT_QUERY, p));
     ofNullable(wsRequest.getPage()).ifPresent(page -> request.setParam(PAGE, String.valueOf(page)));
@@ -266,22 +247,4 @@ public class SearchActionTest {
     indexer.indexAll();
   }
 
-  private static Language[] javaLanguage() {
-    return new Language[] {new Language() {
-      @Override
-      public String getKey() {
-        return "java";
-      }
-
-      @Override
-      public String getName() {
-        return "Java";
-      }
-
-      @Override
-      public String[] getFileSuffixes() {
-        return new String[0];
-      }
-    }};
-  }
 }
index c161cbb81cdd0f6f84ad2072efa2df48c34be582..d86047014a0e8fe4bf588ed428a12bf569e143a9 100644 (file)
@@ -36,7 +36,6 @@ import javax.annotation.Nullable;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.sonar.api.measures.Metric;
 import org.sonar.api.resources.Qualifiers;
@@ -51,7 +50,6 @@ import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.measure.LiveMeasureDto;
 import org.sonar.db.metric.MetricDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.db.property.PropertyDto;
 import org.sonar.server.component.ws.SearchProjectsAction.RequestBuilder;
@@ -105,7 +103,6 @@ import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_002;
 import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_003;
 import static org.sonar.test.JsonAssert.assertJson;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_FILTER;
-import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGES;
 import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_QUALIFIER;
 import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_TAGS;
@@ -119,16 +116,13 @@ public class SearchProjectsActionTest {
   private static final String LEAK_PROJECTS_KEY = "leak_projects";
   private static final String QUALITY_GATE_STATUS = "alert_status";
   private static final String ANALYSIS_DATE = "analysisDate";
-  private static final String IS_FAVOURITE_CRITERION = "isFavorite";
 
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
+  public final UserSessionRule userSession = UserSessionRule.standalone();
   @Rule
-  public UserSessionRule userSession = UserSessionRule.standalone();
+  public final EsTester es = EsTester.create();
   @Rule
-  public EsTester es = EsTester.create();
-  @Rule
-  public DbTester db = DbTester.create(System2.INSTANCE);
+  public final DbTester db = DbTester.create(System2.INSTANCE);
 
   @DataProvider
   public static Object[][] rating_metric_keys() {
@@ -194,14 +188,9 @@ public class SearchProjectsActionTest {
     assertThat(def.isInternal()).isTrue();
     assertThat(def.isPost()).isFalse();
     assertThat(def.responseExampleAsString()).isNotEmpty();
-    assertThat(def.params().stream().map(Param::key).collect(toList())).containsOnly("organization", "filter", "facets", "s", "asc", "ps", "p", "f");
+    assertThat(def.params().stream().map(Param::key).collect(toList())).containsOnly("filter", "facets", "s", "asc", "ps", "p", "f");
     assertThat(def.changelog()).hasSize(2);
 
-    Param organization = def.param("organization");
-    assertThat(organization.isRequired()).isFalse();
-    assertThat(organization.description()).isEqualTo("the organization to search projects in");
-    assertThat(organization.since()).isEqualTo("6.3");
-
     Param sort = def.param("s");
     assertThat(sort.defaultValue()).isEqualTo("name");
     assertThat(sort.possibleValues()).containsExactlyInAnyOrder(
@@ -233,7 +222,7 @@ public class SearchProjectsActionTest {
 
     Param f = def.param("f");
     assertThat(f.defaultValue()).isNull();
-    assertThat(f.possibleValues()).containsOnly("_all", "organizations", "analysisDate", "leakPeriodDate");
+    assertThat(f.possibleValues()).containsOnly("_all", "analysisDate", "leakPeriodDate");
 
     Param facets = def.param("facets");
     assertThat(facets.defaultValue()).isNull();
@@ -245,21 +234,18 @@ public class SearchProjectsActionTest {
   @Test
   public void json_example() {
     userSession.logIn();
-    OrganizationDto organization1Dto = db.organizations().insert(dto -> dto.setKey("my-org-key-1").setName("Foo"));
-    OrganizationDto organization2Dto = db.organizations().insert(dto -> dto.setKey("my-org-key-2").setName("Bar"));
-
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
-    ComponentDto project1 = insertProject(organization1Dto,
+    ComponentDto project1 = insertProject(
       c -> c.setDbKey(KEY_PROJECT_EXAMPLE_001).setName("My Project 1"),
       p -> p.setTagsString("finance, java"),
       new Measure(coverage, c -> c.setValue(80d)));
 
     db.components().insertProjectBranch(db.components().getProjectDto(project1), branchDto -> branchDto.setNeedIssueSync(true));
 
-    ComponentDto project2 = insertProject(organization1Dto,
+    ComponentDto project2 = insertProject(
       c -> c.setDbKey(KEY_PROJECT_EXAMPLE_002).setName("My Project 2"),
       new Measure(coverage, c -> c.setValue(90d)));
-    ComponentDto project3 = insertProject(organization2Dto,
+    ComponentDto project3 = insertProject(
       c -> c.setDbKey(KEY_PROJECT_EXAMPLE_003).setName("My Project 3"),
       p -> p.setTagsString("sales, offshore, java"),
       new Measure(coverage, c -> c.setValue(20d)));
@@ -285,10 +271,9 @@ public class SearchProjectsActionTest {
   @Test
   public void order_by_name_case_insensitive() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    insertProject(organization, c -> c.setName("Maven"));
-    insertProject(organization, c -> c.setName("Apache"));
-    insertProject(organization, c -> c.setName("guava"));
+    insertProject(c -> c.setName("Maven"));
+    insertProject(c -> c.setName("Apache"));
+    insertProject(c -> c.setName("guava"));
     index();
 
     SearchProjectsWsResponse result = call(request);
@@ -300,8 +285,7 @@ public class SearchProjectsActionTest {
   @Test
   public void paginate_result() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    IntStream.rangeClosed(1, 9).forEach(i -> insertProject(organization, c -> c.setName("PROJECT-" + i)));
+    IntStream.rangeClosed(1, 9).forEach(i -> insertProject(c -> c.setName("PROJECT-" + i)));
     index();
 
     SearchProjectsWsResponse result = call(request.setPage(2).setPageSize(3));
@@ -331,16 +315,15 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_with_query() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(INT.name()));
     MetricDto ncloc = db.measures().insertMetric(c -> c.setKey(NCLOC).setValueType(INT.name()));
-    ComponentDto project1 = insertProject(organizationDto,
+    ComponentDto project1 = insertProject(
       new Measure(coverage, c -> c.setValue(81d)),
       new Measure(ncloc, c -> c.setValue(10_000d)));
-    ComponentDto project2 = insertProject(organizationDto,
+    ComponentDto project2 = insertProject(
       new Measure(coverage, c -> c.setValue(80d)),
       new Measure(ncloc, c -> c.setValue(10_000d)));
-    ComponentDto project3 = insertProject(organizationDto,
+    ComponentDto project3 = insertProject(
       new Measure(coverage, c -> c.setValue(80d)),
       new Measure(ncloc, c -> c.setValue(10_001d)));
     index();
@@ -350,37 +333,13 @@ public class SearchProjectsActionTest {
     assertThat(result.getComponentsList()).extracting(Component::getKey).containsExactly(project2.getDbKey());
   }
 
-  @Test
-  public void filter_projects_with_query_within_specified_organization() {
-    userSession.logIn();
-    OrganizationDto organization1 = db.organizations().insert();
-    OrganizationDto organization2 = db.organizations().insert();
-    MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
-    MetricDto ncloc = db.measures().insertMetric(c -> c.setKey(NCLOC).setValueType(INT.name()));
-    ComponentDto project1 = insertProject(organization1, new Measure(coverage, c -> c.setValue(81d)), new Measure(ncloc, c -> c.setValue(10_000d)));
-    ComponentDto project2 = insertProject(organization1, new Measure(coverage, c -> c.setValue(80d)), new Measure(ncloc, c -> c.setValue(10_000d)));
-    ComponentDto project3 = insertProject(organization2, new Measure(coverage, c -> c.setValue(80d)), new Measure(ncloc, c -> c.setValue(10_000d)));
-    index();
-
-    assertThat(call(request.setOrganization(null)).getComponentsList())
-      .extracting(Component::getKey)
-      .containsOnly(project1.getDbKey(), project2.getDbKey(), project3.getDbKey());
-    assertThat(call(request.setOrganization(organization1.getKey())).getComponentsList())
-      .extracting(Component::getKey)
-      .containsOnly(project1.getDbKey(), project2.getDbKey());
-    assertThat(call(request.setOrganization(organization2.getKey())).getComponentsList())
-      .extracting(Component::getKey)
-      .containsOnly(project3.getDbKey());
-  }
-
   @Test
   public void filter_projects_by_quality_gate() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto qualityGateStatus = db.measures().insertMetric(c -> c.setKey(QUALITY_GATE_STATUS).setValueType(LEVEL.name()));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
+    ComponentDto project1 = insertProject(new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
+    ComponentDto project2 = insertProject(new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
+    ComponentDto project3 = insertProject(new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("alert_status = OK"));
@@ -393,12 +352,11 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_languages() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA"));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18")));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=3;xoo=9")));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1")));
-    ComponentDto project4 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=1;java=5;xoo=13")));
+    ComponentDto project1 = insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18")));
+    ComponentDto project2 = insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("java=3;xoo=9")));
+    ComponentDto project3 = insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1")));
+    ComponentDto project4 = insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=1;java=5;xoo=13")));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("languages IN (java, js, <null>)"));
@@ -410,11 +368,10 @@ public class SearchProjectsActionTest {
   @UseDataProvider("rating_metric_keys")
   public void filter_projects_by_rating(String metricKey) {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto ratingMetric = db.measures().insertMetric(c -> c.setKey(metricKey).setValueType(INT.name()));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(ratingMetric, c -> c.setValue(1d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(ratingMetric, c -> c.setValue(2d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(ratingMetric, c -> c.setValue(3d)));
+    ComponentDto project1 = insertProject(new Measure(ratingMetric, c -> c.setValue(1d)));
+    ComponentDto project2 = insertProject(new Measure(ratingMetric, c -> c.setValue(2d)));
+    ComponentDto project3 = insertProject(new Measure(ratingMetric, c -> c.setValue(3d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter(metricKey + " = 2"));
@@ -426,11 +383,10 @@ public class SearchProjectsActionTest {
   @UseDataProvider("new_rating_metric_keys")
   public void filter_projects_by_new_rating(String newMetricKey) {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto ratingMetric = db.measures().insertMetric(c -> c.setKey(newMetricKey).setValueType(INT.name()));
-    insertProject(organizationDto, new Measure(ratingMetric, c -> c.setVariation(1d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(ratingMetric, c -> c.setVariation(2d)));
-    insertProject(organizationDto, new Measure(ratingMetric, c -> c.setVariation(3d)));
+    insertProject(new Measure(ratingMetric, c -> c.setVariation(1d)));
+    ComponentDto project2 = insertProject(new Measure(ratingMetric, c -> c.setVariation(2d)));
+    insertProject(new Measure(ratingMetric, c -> c.setVariation(3d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter(newMetricKey + " = 2"));
@@ -441,10 +397,9 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_tags() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
-    ComponentDto project1 = insertProject(organizationDto, defaults(), p -> p.setTags(asList("finance", "platform")));
-    insertProject(organizationDto, defaults(), p -> p.setTags(singletonList("marketing")));
-    ComponentDto project3 = insertProject(organizationDto, defaults(), p -> p.setTags(singletonList("offshore")));
+    ComponentDto project1 = insertProject(defaults(), p -> p.setTags(asList("finance", "platform")));
+    insertProject(defaults(), p -> p.setTags(singletonList("marketing")));
+    ComponentDto project3 = insertProject(defaults(), p -> p.setTags(singletonList("offshore")));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("tags in (finance, offshore)"));
@@ -455,11 +410,10 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_coverage() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(80d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(85d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d)));
+    ComponentDto project1 = insertProject(new Measure(coverage, c -> c.setValue(80d)));
+    ComponentDto project2 = insertProject(new Measure(coverage, c -> c.setValue(85d)));
+    ComponentDto project3 = insertProject(new Measure(coverage, c -> c.setValue(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("coverage <= 80"));
@@ -470,11 +424,10 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_new_coverage() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType("PERCENT"));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(80d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(85d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(10d)));
+    ComponentDto project1 = insertProject(new Measure(coverage, c -> c.setVariation(80d)));
+    ComponentDto project2 = insertProject(new Measure(coverage, c -> c.setVariation(85d)));
+    ComponentDto project3 = insertProject(new Measure(coverage, c -> c.setVariation(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("new_coverage <= 80"));
@@ -485,11 +438,10 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_duplications() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(80d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(85d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(10d)));
+    ComponentDto project1 = insertProject(new Measure(duplications, c -> c.setValue(80d)));
+    ComponentDto project2 = insertProject(new Measure(duplications, c -> c.setValue(85d)));
+    ComponentDto project3 = insertProject(new Measure(duplications, c -> c.setValue(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("duplicated_lines_density <= 80"));
@@ -500,12 +452,11 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_no_duplication() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
     MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(0d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(79d)));
+    ComponentDto project1 = insertProject(new Measure(coverage, c -> c.setValue(10d)));
+    ComponentDto project2 = insertProject(new Measure(duplications, c -> c.setValue(0d)));
+    ComponentDto project3 = insertProject(new Measure(duplications, c -> c.setValue(79d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("duplicated_lines_density = NO_DATA"));
@@ -516,10 +467,9 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_no_duplication_should_not_return_projects_with_duplication() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
     MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
-    insertProject(organizationDto, new Measure(duplications, c -> c.setValue(10d)), new Measure(coverage, c -> c.setValue(50d)));
+    insertProject(new Measure(duplications, c -> c.setValue(10d)), new Measure(coverage, c -> c.setValue(50d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("duplicated_lines_density = NO_DATA"));
@@ -530,11 +480,10 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_new_duplications() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto newDuplications = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(80d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(85d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(10d)));
+    ComponentDto project1 = insertProject(new Measure(newDuplications, c -> c.setVariation(80d)));
+    ComponentDto project2 = insertProject(new Measure(newDuplications, c -> c.setVariation(85d)));
+    ComponentDto project3 = insertProject(new Measure(newDuplications, c -> c.setVariation(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("new_duplicated_lines_density <= 80"));
@@ -545,11 +494,10 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_ncloc() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto ncloc = db.measures().insertMetric(c -> c.setKey(NCLOC).setValueType(INT.name()));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(ncloc, c -> c.setValue(80d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(ncloc, c -> c.setValue(85d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(ncloc, c -> c.setValue(10d)));
+    ComponentDto project1 = insertProject(new Measure(ncloc, c -> c.setValue(80d)));
+    ComponentDto project2 = insertProject(new Measure(ncloc, c -> c.setValue(85d)));
+    ComponentDto project3 = insertProject(new Measure(ncloc, c -> c.setValue(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("ncloc <= 80"));
@@ -560,11 +508,10 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_new_lines() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto newLines = db.measures().insertMetric(c -> c.setKey(NEW_LINES_KEY).setValueType(INT.name()));
-    ComponentDto project1 = insertProject(organizationDto, new Measure(newLines, c -> c.setVariation(80d)));
-    ComponentDto project2 = insertProject(organizationDto, new Measure(newLines, c -> c.setVariation(85d)));
-    ComponentDto project3 = insertProject(organizationDto, new Measure(newLines, c -> c.setVariation(10d)));
+    ComponentDto project1 = insertProject(new Measure(newLines, c -> c.setVariation(80d)));
+    ComponentDto project2 = insertProject(new Measure(newLines, c -> c.setVariation(85d)));
+    ComponentDto project3 = insertProject(new Measure(newLines, c -> c.setVariation(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("new_lines <= 80"));
@@ -575,11 +522,10 @@ public class SearchProjectsActionTest {
   @Test
   public void filter_projects_by_text_query() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
-    insertProject(organizationDto, c -> c.setDbKey("sonar-java").setName("Sonar Java"));
-    insertProject(organizationDto, c -> c.setDbKey("sonar-groovy").setName("Sonar Groovy"));
-    insertProject(organizationDto, c -> c.setDbKey("sonar-markdown").setName("Sonar Markdown"));
-    insertProject(organizationDto, c -> c.setDbKey("sonarqube").setName("Sonar Qube"));
+    insertProject(c -> c.setDbKey("sonar-java").setName("Sonar Java"));
+    insertProject(c -> c.setDbKey("sonar-groovy").setName("Sonar Groovy"));
+    insertProject(c -> c.setDbKey("sonar-markdown").setName("Sonar Markdown"));
+    insertProject(c -> c.setDbKey("sonarqube").setName("Sonar Qube"));
     index();
 
     assertThat(call(request.setFilter("query = \"Groovy\"")).getComponentsList()).extracting(Component::getName).containsOnly("Sonar Groovy");
@@ -588,61 +534,12 @@ public class SearchProjectsActionTest {
     assertThat(call(request.setFilter("query = \"sonar-java\"")).getComponentsList()).extracting(Component::getName).containsOnly("Sonar Java");
   }
 
-  @Test
-  public void filter_favourite_projects_with_query_with_or_without_a_specified_organization() {
-    userSession.logIn();
-    OrganizationDto organization1 = db.organizations().insert();
-    OrganizationDto organization2 = db.organizations().insert();
-    OrganizationDto organization3 = db.organizations().insert();
-    OrganizationDto organization4 = db.organizations().insert();
-    OrganizationDto organization5 = db.organizations().insert();
-    ComponentDto favourite1_1 = insertProject(organization1);
-    ComponentDto favourite1_2 = insertProject(organization1);
-    ComponentDto nonFavourite1 = insertProject(organization1);
-    ComponentDto favourite2 = insertProject(organization2);
-    ComponentDto nonFavourite2 = insertProject(organization2);
-    ComponentDto favourite3 = insertProject(organization3);
-    ComponentDto nonFavourite4 = insertProject(organization4);
-
-    Stream.of(favourite1_1, favourite1_2, favourite2, favourite3).forEach(this::addFavourite);
-    index();
-
-    assertThat(call(request.setFilter(null).setOrganization(null)).getComponentsList())
-      .extracting(Component::getName)
-      .containsOnly(favourite1_1.name(), favourite1_2.name(), nonFavourite1.name(), favourite2.name(), nonFavourite2.name(), favourite3.name(), nonFavourite4.name());
-    assertThat(call(request.setFilter(IS_FAVOURITE_CRITERION).setOrganization(null)).getComponentsList())
-      .extracting(Component::getName)
-      .containsOnly(favourite1_1.name(), favourite1_2.name(), favourite2.name(), favourite3.name());
-    assertThat(call(request.setFilter(null).setOrganization(organization1.getKey())).getComponentsList())
-      .extracting(Component::getName)
-      .containsOnly(favourite1_1.name(), favourite1_2.name(), nonFavourite1.name());
-    assertThat(call(request.setFilter(IS_FAVOURITE_CRITERION).setOrganization(organization1.getKey())).getComponentsList())
-      .extracting(Component::getName)
-      .containsOnly(favourite1_1.name(), favourite1_2.name());
-    assertThat(call(request.setFilter(null).setOrganization(organization3.getKey())).getComponentsList())
-      .extracting(Component::getName)
-      .containsOnly(favourite3.name());
-    assertThat(call(request.setFilter(IS_FAVOURITE_CRITERION).setOrganization(organization3.getKey())).getComponentsList())
-      .extracting(Component::getName)
-      .containsOnly(favourite3.name());
-    assertThat(call(request.setFilter(null).setOrganization(organization4.getKey())).getComponentsList())
-      .extracting(Component::getName)
-      .containsOnly(nonFavourite4.name());
-    assertThat(call(request.setFilter(IS_FAVOURITE_CRITERION).setOrganization(organization4.getKey())).getComponentsList())
-      .isEmpty();
-    assertThat(call(request.setFilter(null).setOrganization(organization5.getKey())).getComponentsList())
-      .isEmpty();
-    assertThat(call(request.setFilter(IS_FAVOURITE_CRITERION).setOrganization(organization5.getKey())).getComponentsList())
-      .isEmpty();
-  }
-
   @Test
   public void filter_projects_on_favorites() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto javaProject = insertProject(organization);
-    ComponentDto markDownProject = insertProject(organization);
-    ComponentDto sonarQubeProject = insertProject(organization);
+    ComponentDto javaProject = insertProject();
+    ComponentDto markDownProject = insertProject();
+    ComponentDto sonarQubeProject = insertProject();
     Stream.of(javaProject, markDownProject).forEach(this::addFavourite);
     index();
 
@@ -655,10 +552,9 @@ public class SearchProjectsActionTest {
   @Test
   public void does_not_fail_on_orphan_favorite() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto javaProject = insertProject(organization);
-    ComponentDto markDownProject = insertProject(organization);
-    ComponentDto sonarQubeProject = insertProject(organization);
+    ComponentDto javaProject = insertProject();
+    ComponentDto markDownProject = insertProject();
+    ComponentDto sonarQubeProject = insertProject();
     Stream.of(javaProject, markDownProject).forEach(this::addFavourite);
     index();
 
@@ -673,10 +569,9 @@ public class SearchProjectsActionTest {
   @Test
   public void filtering_on_favorites_returns_empty_results_if_not_logged_in() {
     userSession.anonymous();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto javaProject = insertProject(organization);
-    ComponentDto markDownProject = insertProject(organization);
-    ComponentDto sonarQubeProject = insertProject(organization);
+    ComponentDto javaProject = insertProject();
+    ComponentDto markDownProject = insertProject();
+    ComponentDto sonarQubeProject = insertProject();
     Stream.of(javaProject, markDownProject).forEach(this::addFavourite);
     index();
 
@@ -690,17 +585,16 @@ public class SearchProjectsActionTest {
   public void default_filter_projects_and_apps_by_editions(String[] qualifiers, Edition edition) {
     when(editionProviderMock.get()).thenReturn(Optional.of(edition));
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto portfolio1 = insertPortfolio(organization);
-    ComponentDto portfolio2 = insertPortfolio(organization);
+    ComponentDto portfolio1 = insertPortfolio();
+    ComponentDto portfolio2 = insertPortfolio();
 
-    ComponentDto application1 = insertApplication(organization);
-    ComponentDto application2 = insertApplication(organization);
-    ComponentDto application3 = insertApplication(organization);
+    ComponentDto application1 = insertApplication();
+    ComponentDto application2 = insertApplication();
+    ComponentDto application3 = insertApplication();
 
-    ComponentDto project1 = insertProject(organization);
-    ComponentDto project2 = insertProject(organization);
-    ComponentDto project3 = insertProject(organization);
+    ComponentDto project1 = insertProject();
+    ComponentDto project2 = insertProject();
+    ComponentDto project3 = insertProject();
     index();
 
     SearchProjectsWsResponse result = call(request);
@@ -722,18 +616,17 @@ public class SearchProjectsActionTest {
   public void should_return_projects_only_when_no_edition() {
     when(editionProviderMock.get()).thenReturn(Optional.empty());
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
 
-    ComponentDto portfolio1 = insertPortfolio(organization);
-    ComponentDto portfolio2 = insertPortfolio(organization);
+    ComponentDto portfolio1 = insertPortfolio();
+    ComponentDto portfolio2 = insertPortfolio();
 
-    insertApplication(organization);
-    insertApplication(organization);
-    insertApplication(organization);
+    insertApplication();
+    insertApplication();
+    insertApplication();
 
-    ComponentDto project1 = insertProject(organization);
-    ComponentDto project2 = insertProject(organization);
-    ComponentDto project3 = insertProject(organization);
+    ComponentDto project1 = insertProject();
+    ComponentDto project2 = insertProject();
+    ComponentDto project3 = insertProject();
     index();
 
     SearchProjectsWsResponse result = call(request);
@@ -749,14 +642,13 @@ public class SearchProjectsActionTest {
   public void filter_projects_and_apps_by_APP_qualifier_when_ee_dc(Edition edition) {
     when(editionProviderMock.get()).thenReturn(Optional.of(edition));
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto application1 = insertApplication(organization);
-    ComponentDto application2 = insertApplication(organization);
-    ComponentDto application3 = insertApplication(organization);
-
-    insertProject(organization);
-    insertProject(organization);
-    insertProject(organization);
+    ComponentDto application1 = insertApplication();
+    ComponentDto application2 = insertApplication();
+    ComponentDto application3 = insertApplication();
+
+    insertProject();
+    insertProject();
+    insertProject();
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("qualifier = APP"));
@@ -776,15 +668,14 @@ public class SearchProjectsActionTest {
   public void filter_projects_and_apps_by_TRK_qualifier_when_ee_or_dc(Edition edition) {
     when(editionProviderMock.get()).thenReturn(Optional.of(edition));
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
 
-    insertApplication(organization);
-    insertApplication(organization);
-    insertApplication(organization);
+    insertApplication();
+    insertApplication();
+    insertApplication();
 
-    ComponentDto project1 = insertProject(organization);
-    ComponentDto project2 = insertProject(organization);
-    ComponentDto project3 = insertProject(organization);
+    ComponentDto project1 = insertProject();
+    ComponentDto project2 = insertProject();
+    ComponentDto project3 = insertProject();
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("qualifier = TRK"));
@@ -822,8 +713,7 @@ public class SearchProjectsActionTest {
   @Test
   public void do_not_return_isFavorite_if_anonymous_user() {
     userSession.anonymous();
-    OrganizationDto organization = db.organizations().insert();
-    insertProject(organization);
+    insertProject();
     index();
 
     SearchProjectsWsResponse result = call(request);
@@ -834,12 +724,11 @@ public class SearchProjectsActionTest {
   @Test
   public void return_nloc_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto ncloc = db.measures().insertMetric(c -> c.setKey(NCLOC).setValueType(INT.name()));
-    insertProject(organizationDto, new Measure(ncloc, c -> c.setValue(5d)));
-    insertProject(organizationDto, new Measure(ncloc, c -> c.setValue(5d)));
-    insertProject(organizationDto, new Measure(ncloc, c -> c.setValue(10_000d)));
-    insertProject(organizationDto, new Measure(ncloc, c -> c.setValue(500_001d)));
+    insertProject(new Measure(ncloc, c -> c.setValue(5d)));
+    insertProject(new Measure(ncloc, c -> c.setValue(5d)));
+    insertProject(new Measure(ncloc, c -> c.setValue(10_000d)));
+    insertProject(new Measure(ncloc, c -> c.setValue(500_001d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(NCLOC)));
@@ -860,11 +749,10 @@ public class SearchProjectsActionTest {
   @Test
   public void return_new_lines_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_LINES_KEY).setValueType(INT.name()));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(100d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(15_000d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(50_000d)));
+    insertProject(new Measure(coverage, c -> c.setVariation(100d)));
+    insertProject(new Measure(coverage, c -> c.setVariation(15_000d)));
+    insertProject(new Measure(coverage, c -> c.setVariation(50_000d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(NEW_LINES_KEY)));
@@ -885,12 +773,11 @@ public class SearchProjectsActionTest {
   @Test
   public void return_languages_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA"));
-    insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18")));
-    insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5;xoo=19")));
-    insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1")));
-    insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=1;java=3;xoo=8")));
+    insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18")));
+    insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5;xoo=19")));
+    insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1")));
+    insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=1;java=3;xoo=8")));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(FILTER_LANGUAGES)));
@@ -909,10 +796,9 @@ public class SearchProjectsActionTest {
   @Test
   public void return_languages_facet_with_language_having_no_project_if_language_is_in_filter() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA"));
-    insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6")));
-    insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5")));
+    insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6")));
+    insertProject(new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5")));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("languages = xoo").setFacets(singletonList(FILTER_LANGUAGES)));
@@ -931,10 +817,9 @@ public class SearchProjectsActionTest {
   @Test
   public void return_tags_facet() {
     userSession.logIn();
-    OrganizationDto organization = db.getDefaultOrganization();
-    insertProject(organization, defaults(), p -> p.setTags(asList("finance", "platform")));
-    insertProject(organization, defaults(), p -> p.setTags(singletonList("offshore")));
-    insertProject(organization, defaults(), p -> p.setTags(singletonList("offshore")));
+    insertProject(defaults(), p -> p.setTags(asList("finance", "platform")));
+    insertProject(defaults(), p -> p.setTags(singletonList("offshore")));
+    insertProject(defaults(), p -> p.setTags(singletonList("offshore")));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(FILTER_TAGS)));
@@ -953,10 +838,9 @@ public class SearchProjectsActionTest {
   @Test
   public void return_tags_facet_with_tags_having_no_project_if_tags_is_in_filter() {
     userSession.logIn();
-    OrganizationDto organization = db.getDefaultOrganization();
-    insertProject(organization, defaults(), p -> p.setTags(asList("finance", "platform")));
-    insertProject(organization, defaults(), p -> p.setTags(singletonList("offshore")));
-    insertProject(organization, defaults(), p -> p.setTags(singletonList("offshore")));
+    insertProject(defaults(), p -> p.setTags(asList("finance", "platform")));
+    insertProject(defaults(), p -> p.setTags(singletonList("offshore")));
+    insertProject(defaults(), p -> p.setTags(singletonList("offshore")));
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("tags = marketing").setFacets(singletonList(FILTER_TAGS)));
@@ -977,15 +861,14 @@ public class SearchProjectsActionTest {
   public void return_qualifiers_facet() {
     when(editionProviderMock.get()).thenReturn(Optional.of(Edition.ENTERPRISE));
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto application1 = insertApplication(organization);
-    ComponentDto application2 = insertApplication(organization);
-    ComponentDto application3 = insertApplication(organization);
-    ComponentDto application4 = insertApplication(organization);
-
-    ComponentDto project1 = insertProject(organization);
-    ComponentDto project2 = insertProject(organization);
-    ComponentDto project3 = insertProject(organization);
+    ComponentDto application1 = insertApplication();
+    ComponentDto application2 = insertApplication();
+    ComponentDto application3 = insertApplication();
+    ComponentDto application4 = insertApplication();
+
+    ComponentDto project1 = insertProject();
+    ComponentDto project2 = insertProject();
+    ComponentDto project3 = insertProject();
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(FILTER_QUALIFIER)));
@@ -1004,11 +887,10 @@ public class SearchProjectsActionTest {
   public void return_qualifiers_facet_with_qualifiers_having_no_project_if_qualifiers_is_in_filter() {
     when(editionProviderMock.get()).thenReturn(Optional.of(Edition.ENTERPRISE));
     userSession.logIn();
-    OrganizationDto organization = db.getDefaultOrganization();
-    ComponentDto application1 = insertApplication(organization);
-    ComponentDto application2 = insertApplication(organization);
-    ComponentDto application3 = insertApplication(organization);
-    ComponentDto application4 = insertApplication(organization);
+    ComponentDto application1 = insertApplication();
+    ComponentDto application2 = insertApplication();
+    ComponentDto application3 = insertApplication();
+    ComponentDto application4 = insertApplication();
     index();
 
     SearchProjectsWsResponse result = call(request.setFilter("qualifier = APP").setFacets(singletonList(FILTER_QUALIFIER)));
@@ -1027,12 +909,11 @@ public class SearchProjectsActionTest {
   @UseDataProvider("rating_metric_keys")
   public void return_rating_facet(String ratingMetricKey) {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
     MetricDto ratingMetric = db.measures().insertMetric(c -> c.setKey(ratingMetricKey).setValueType("RATING"));
-    insertProject(organization, new Measure(ratingMetric, c -> c.setValue(1d)));
-    insertProject(organization, new Measure(ratingMetric, c -> c.setValue(1d)));
-    insertProject(organization, new Measure(ratingMetric, c -> c.setValue(3d)));
-    insertProject(organization, new Measure(ratingMetric, c -> c.setValue(5d)));
+    insertProject(new Measure(ratingMetric, c -> c.setValue(1d)));
+    insertProject(new Measure(ratingMetric, c -> c.setValue(1d)));
+    insertProject(new Measure(ratingMetric, c -> c.setValue(3d)));
+    insertProject(new Measure(ratingMetric, c -> c.setValue(5d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(ratingMetricKey)));
@@ -1054,12 +935,11 @@ public class SearchProjectsActionTest {
   @UseDataProvider("new_rating_metric_keys")
   public void return_new_rating_facet(String newRatingMetricKey) {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
     MetricDto newRatingMetric = db.measures().insertMetric(c -> c.setKey(newRatingMetricKey).setValueType("RATING"));
-    insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(1d)));
-    insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(1d)));
-    insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(3d)));
-    insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(5d)));
+    insertProject(new Measure(newRatingMetric, c -> c.setVariation(1d)));
+    insertProject(new Measure(newRatingMetric, c -> c.setVariation(1d)));
+    insertProject(new Measure(newRatingMetric, c -> c.setVariation(3d)));
+    insertProject(new Measure(newRatingMetric, c -> c.setVariation(5d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(newRatingMetricKey)));
@@ -1080,12 +960,11 @@ public class SearchProjectsActionTest {
   @Test
   public void return_coverage_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
-    insertProject(organizationDto);
-    insertProject(organizationDto, new Measure(coverage, c -> c.setValue(80d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setValue(85d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d)));
+    insertProject();
+    insertProject(new Measure(coverage, c -> c.setValue(80d)));
+    insertProject(new Measure(coverage, c -> c.setValue(85d)));
+    insertProject(new Measure(coverage, c -> c.setValue(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(COVERAGE)));
@@ -1107,12 +986,11 @@ public class SearchProjectsActionTest {
   @Test
   public void return_new_coverage_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType("PERCENT"));
-    insertProject(organizationDto);
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(80d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(85d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(10d)));
+    insertProject();
+    insertProject(new Measure(coverage, c -> c.setVariation(80d)));
+    insertProject(new Measure(coverage, c -> c.setVariation(85d)));
+    insertProject(new Measure(coverage, c -> c.setVariation(10d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(NEW_COVERAGE)));
@@ -1134,12 +1012,11 @@ public class SearchProjectsActionTest {
   @Test
   public void return_duplications_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setValue(15d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setValue(5d)));
-    insertProject(organizationDto);
+    insertProject(new Measure(coverage, c -> c.setValue(10d)));
+    insertProject(new Measure(coverage, c -> c.setValue(15d)));
+    insertProject(new Measure(coverage, c -> c.setValue(5d)));
+    insertProject();
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(DUPLICATED_LINES_DENSITY_KEY)));
@@ -1161,12 +1038,11 @@ public class SearchProjectsActionTest {
   @Test
   public void return_new_duplications_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
-    insertProject(organizationDto);
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(10d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(15d)));
-    insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(5d)));
+    insertProject();
+    insertProject(new Measure(coverage, c -> c.setVariation(10d)));
+    insertProject(new Measure(coverage, c -> c.setVariation(15d)));
+    insertProject(new Measure(coverage, c -> c.setVariation(5d)));
     index();
 
     SearchProjectsWsResponse result = call(request.setFacets(singletonList(NEW_DUPLICATED_LINES_DENSITY_KEY)));
@@ -1188,12 +1064,11 @@ public class SearchProjectsActionTest {
   @Test
   public void return_quality_gate_facet() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto qualityGateStatus = db.measures().insertMetric(c -> c.setKey(ALERT_STATUS_KEY).setValueType(LEVEL.name()));
-    insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
-    insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
-    insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setData(Metric.Level.WARN.name()).setValue(null)));
-    insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setData(Metric.Level.OK.name()).setValue(null)));
+    insertProject(new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
+    insertProject(new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
+    insertProject(new Measure(qualityGateStatus, c -> c.setData(Metric.Level.WARN.name()).setValue(null)));
+    insertProject(new Measure(qualityGateStatus, c -> c.setData(Metric.Level.OK.name()).setValue(null)));
     projectsInWarning.update(1L);
     index();
 
@@ -1213,11 +1088,10 @@ public class SearchProjectsActionTest {
   @Test
   public void return_quality_gate_facet_without_warning_when_no_projects_in_warning() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto qualityGateStatus = db.measures().insertMetric(c -> c.setKey(ALERT_STATUS_KEY).setValueType(LEVEL.name()));
-    insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
-    insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
-    insertProject(organizationDto, new Measure(qualityGateStatus, c -> c.setData(Metric.Level.OK.name()).setValue(null)));
+    insertProject(new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
+    insertProject(new Measure(qualityGateStatus, c -> c.setData(Metric.Level.ERROR.name()).setValue(null)));
+    insertProject(new Measure(qualityGateStatus, c -> c.setData(Metric.Level.OK.name()).setValue(null)));
     projectsInWarning.update(0L);
     index();
 
@@ -1236,11 +1110,10 @@ public class SearchProjectsActionTest {
   @Test
   public void default_sort_is_by_ascending_name() {
     userSession.logIn();
-    OrganizationDto organization = db.getDefaultOrganization();
-    insertProject(organization, c -> c.setName("Sonar Java"));
-    insertProject(organization, c -> c.setName("Sonar Groovy"));
-    insertProject(organization, c -> c.setName("Sonar Markdown"));
-    insertProject(organization, c -> c.setName("Sonar Qube"));
+    insertProject(c -> c.setName("Sonar Java"));
+    insertProject(c -> c.setName("Sonar Groovy"));
+    insertProject(c -> c.setName("Sonar Markdown"));
+    insertProject(c -> c.setName("Sonar Qube"));
     index();
 
     SearchProjectsWsResponse result = call(request);
@@ -1251,11 +1124,10 @@ public class SearchProjectsActionTest {
   @Test
   public void sort_by_name() {
     userSession.logIn();
-    OrganizationDto organization = db.getDefaultOrganization();
-    insertProject(organization, c -> c.setName("Sonar Java"));
-    insertProject(organization, c -> c.setName("Sonar Groovy"));
-    insertProject(organization, c -> c.setName("Sonar Markdown"));
-    insertProject(organization, c -> c.setName("Sonar Qube"));
+    insertProject(c -> c.setName("Sonar Java"));
+    insertProject(c -> c.setName("Sonar Groovy"));
+    insertProject(c -> c.setName("Sonar Markdown"));
+    insertProject(c -> c.setName("Sonar Qube"));
     index();
 
     assertThat(call(request.setSort("name").setAsc(true)).getComponentsList()).extracting(Component::getName)
@@ -1267,12 +1139,11 @@ public class SearchProjectsActionTest {
   @Test
   public void sort_by_coverage_then_by_name() {
     userSession.logIn();
-    OrganizationDto organizationDto = db.organizations().insert();
     MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(INT.name()));
-    ComponentDto project1 = insertProject(organizationDto, c -> c.setName("Sonar Java"), new Measure(coverage, c -> c.setValue(81d)));
-    ComponentDto project2 = insertProject(organizationDto, c -> c.setName("Sonar Groovy"), new Measure(coverage, c -> c.setValue(81d)));
-    ComponentDto project3 = insertProject(organizationDto, c -> c.setName("Sonar Markdown"), new Measure(coverage, c -> c.setValue(80d)));
-    ComponentDto project4 = insertProject(organizationDto, c -> c.setName("Sonar Qube"), new Measure(coverage, c -> c.setValue(80d)));
+    ComponentDto project1 = insertProject(c -> c.setName("Sonar Java"), new Measure(coverage, c -> c.setValue(81d)));
+    ComponentDto project2 = insertProject(c -> c.setName("Sonar Groovy"), new Measure(coverage, c -> c.setValue(81d)));
+    ComponentDto project3 = insertProject(c -> c.setName("Sonar Markdown"), new Measure(coverage, c -> c.setValue(80d)));
+    ComponentDto project4 = insertProject(c -> c.setName("Sonar Qube"), new Measure(coverage, c -> c.setValue(80d)));
     index();
 
     assertThat(call(request.setSort(COVERAGE).setAsc(true)).getComponentsList()).extracting(Component::getKey)
@@ -1284,12 +1155,11 @@ public class SearchProjectsActionTest {
   @Test
   public void sort_by_quality_gate_then_by_name() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
     MetricDto qualityGateStatus = db.measures().insertMetric(c -> c.setKey(QUALITY_GATE_STATUS).setValueType(LEVEL.name()));
-    ComponentDto project1 = insertProject(organization, c -> c.setName("Sonar Java"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
-    ComponentDto project2 = insertProject(organization, c -> c.setName("Sonar Groovy"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
-    ComponentDto project3 = insertProject(organization, c -> c.setName("Sonar Markdown"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
-    ComponentDto project4 = insertProject(organization, c -> c.setName("Sonar Qube"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
+    ComponentDto project1 = insertProject(c -> c.setName("Sonar Java"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
+    ComponentDto project2 = insertProject(c -> c.setName("Sonar Groovy"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
+    ComponentDto project3 = insertProject(c -> c.setName("Sonar Markdown"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
+    ComponentDto project4 = insertProject(c -> c.setName("Sonar Qube"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
     index();
 
     assertThat(call(request.setSort(QUALITY_GATE_STATUS).setAsc(true)).getComponentsList()).extracting(Component::getKey)
@@ -1301,16 +1171,15 @@ public class SearchProjectsActionTest {
   @Test
   public void sort_by_last_analysis_date() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project1 = db.components().insertPublicProject(organization, p -> p.setDbKey("project1"));
+    ComponentDto project1 = db.components().insertPublicProject(p -> p.setDbKey("project1"));
     authorizationIndexerTester.allowOnlyAnyone(project1);
-    ComponentDto project2 = db.components().insertPublicProject(organization, p -> p.setDbKey("project2"));
+    ComponentDto project2 = db.components().insertPublicProject(p -> p.setDbKey("project2"));
     db.components().insertSnapshot(project2, snapshot -> snapshot.setCreatedAt(40_000_000_000L).setLast(true));
     authorizationIndexerTester.allowOnlyAnyone(project2);
-    ComponentDto project3 = db.components().insertPublicProject(organization, p -> p.setDbKey("project3"));
+    ComponentDto project3 = db.components().insertPublicProject(p -> p.setDbKey("project3"));
     db.components().insertSnapshot(project3, snapshot -> snapshot.setCreatedAt(20_000_000_000L).setLast(true));
     authorizationIndexerTester.allowOnlyAnyone(project3);
-    ComponentDto project4 = db.components().insertPublicProject(organization, p -> p.setDbKey("project4"));
+    ComponentDto project4 = db.components().insertPublicProject(p -> p.setDbKey("project4"));
     db.components().insertSnapshot(project4, snapshot -> snapshot.setCreatedAt(10_000_000_000L).setLast(false));
     db.components().insertSnapshot(project4, snapshot -> snapshot.setCreatedAt(30_000_000_000L).setLast(true));
     authorizationIndexerTester.allowOnlyAnyone(project4);
@@ -1326,16 +1195,15 @@ public class SearchProjectsActionTest {
   @Test
   public void return_last_analysis_date() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project1 = db.components().insertPublicProject(organization);
+    ComponentDto project1 = db.components().insertPublicProject();
     db.components().insertSnapshot(project1, snapshot -> snapshot.setCreatedAt(10_000_000_000L).setLast(false));
     db.components().insertSnapshot(project1, snapshot -> snapshot.setCreatedAt(20_000_000_000L).setLast(true));
     authorizationIndexerTester.allowOnlyAnyone(project1);
-    ComponentDto project2 = db.components().insertPublicProject(organization);
+    ComponentDto project2 = db.components().insertPublicProject();
     db.components().insertSnapshot(project2, snapshot -> snapshot.setCreatedAt(30_000_000_000L).setLast(true));
     authorizationIndexerTester.allowOnlyAnyone(project2);
     // No snapshot on project 3
-    ComponentDto project3 = db.components().insertPublicProject(organization);
+    ComponentDto project3 = db.components().insertPublicProject();
     authorizationIndexerTester.allowOnlyAnyone(project3);
     index();
 
@@ -1352,20 +1220,19 @@ public class SearchProjectsActionTest {
   public void return_leak_period_date() {
     when(editionProviderMock.get()).thenReturn(Optional.of(Edition.ENTERPRISE));
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto project1 = db.components().insertPublicProject(organization);
+    ComponentDto project1 = db.components().insertPublicProject();
     db.components().insertSnapshot(project1, snapshot -> snapshot.setPeriodDate(10_000_000_000L));
     authorizationIndexerTester.allowOnlyAnyone(project1);
     // No leak period
-    ComponentDto project2 = db.components().insertPublicProject(organization);
+    ComponentDto project2 = db.components().insertPublicProject();
     db.components().insertSnapshot(project2, snapshot -> snapshot.setPeriodDate(null));
     authorizationIndexerTester.allowOnlyAnyone(project2);
     // No snapshot on project 3
-    ComponentDto project3 = db.components().insertPublicProject(organization);
+    ComponentDto project3 = db.components().insertPublicProject();
     authorizationIndexerTester.allowOnlyAnyone(project3);
 
     MetricDto leakProjects = db.measures().insertMetric(c -> c.setKey(LEAK_PROJECTS_KEY).setValueType(DATA.name()));
-    ComponentDto application1 = insertApplication(organization,
+    ComponentDto application1 = insertApplication(
       new Measure(leakProjects, c -> c.setData("{\"leakProjects\":[{\"id\": 1, \"leak\":20000000000}, {\"id\": 2, \"leak\":10000000000}]}")));
     db.components().insertSnapshot(application1);
 
@@ -1385,10 +1252,9 @@ public class SearchProjectsActionTest {
   @Test
   public void return_visibility_flag() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
-    ComponentDto privateProject = db.components().insertPublicProject(organization);
+    ComponentDto privateProject = db.components().insertPublicProject();
     authorizationIndexerTester.allowOnlyAnyone(privateProject);
-    ComponentDto publicProject = db.components().insertPrivateProject(organization);
+    ComponentDto publicProject = db.components().insertPrivateProject();
     authorizationIndexerTester.allowOnlyAnyone(publicProject);
     index();
 
@@ -1416,17 +1282,16 @@ public class SearchProjectsActionTest {
   @Test
   public void use_deprecated_warning_quality_gate_in_filter() {
     userSession.logIn();
-    OrganizationDto organization = db.organizations().insert();
     MetricDto qualityGateStatus = db.measures().insertMetric(c -> c.setKey(QUALITY_GATE_STATUS).setValueType(LEVEL.name()));
-    ComponentDto project1 = insertProject(organization, c -> c.setName("Sonar Java"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
-    ComponentDto project2 = insertProject(organization, c -> c.setName("Sonar Groovy"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("WARN")));
-    ComponentDto project3 = insertProject(organization, c -> c.setName("Sonar Markdown"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("WARN")));
-    ComponentDto project4 = insertProject(organization, c -> c.setName("Sonar Qube"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
+    ComponentDto project1 = insertProject(c -> c.setName("Sonar Java"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("ERROR")));
+    ComponentDto project2 = insertProject(c -> c.setName("Sonar Groovy"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("WARN")));
+    ComponentDto project3 = insertProject(c -> c.setName("Sonar Markdown"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("WARN")));
+    ComponentDto project4 = insertProject(c -> c.setName("Sonar Qube"), new Measure(qualityGateStatus, c -> c.setValue(null).setData("OK")));
     index();
 
     List<Component> projects = call(request
       .setFilter("alert_status = WARN"))
-      .getComponentsList();
+        .getComponentsList();
 
     assertThat(projects)
       .extracting(Component::getKey)
@@ -1436,36 +1301,36 @@ public class SearchProjectsActionTest {
   @Test
   public void fail_when_filter_metrics_are_unknown() {
     userSession.logIn();
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Following metrics are not supported: 'debt'");
 
     request.setFilter("debt > 80");
 
-    call(request);
+    assertThatThrownBy(() -> call(request))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("Following metrics are not supported: 'debt'");
   }
 
   @Test
   public void fail_when_sort_metrics_are_unknown() {
     userSession.logIn();
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Value of parameter 's' (debt) must be one of: [");
 
     request.setSort("debt");
 
-    call(request);
+    assertThatThrownBy(() -> call(request))
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessageContaining("Value of parameter 's' (debt) must be one of: [");
   }
 
   @Test
   public void fail_if_page_size_greater_than_500() {
     userSession.logIn();
-    expectedException.expect(IllegalArgumentException.class);
-    call(request.setPageSize(501));
+    request.setPageSize(501);
+    assertThatThrownBy(() -> call(request))
+      .isInstanceOf(IllegalArgumentException.class);
   }
 
   private SearchProjectsWsResponse call(RequestBuilder requestBuilder) {
     SearchProjectsRequest wsRequest = requestBuilder.build();
     TestRequest httpRequest = ws.newRequest();
-    ofNullable(wsRequest.getOrganization()).ifPresent(organization -> httpRequest.setParam(PARAM_ORGANIZATION, organization));
     ofNullable(wsRequest.getFilter()).ifPresent(filter -> httpRequest.setParam(PARAM_FILTER, filter));
     ofNullable(wsRequest.getSort()).ifPresent(sort -> httpRequest.setParam(SORT, sort));
     ofNullable(wsRequest.getAsc()).ifPresent(asc -> httpRequest.setParam(ASCENDING, Boolean.toString(asc)));
@@ -1485,27 +1350,27 @@ public class SearchProjectsActionTest {
     dbSession.commit();
   }
 
-  private ComponentDto insertProject(OrganizationDto organizationDto, Measure... measures) {
-    return insertProject(organizationDto, defaults(), defaults(), measures);
+  private ComponentDto insertProject(Measure... measures) {
+    return insertProject(defaults(), defaults(), measures);
   }
 
-  private ComponentDto insertProject(OrganizationDto organizationDto, Consumer<ComponentDto> componentConsumer, Measure... measures) {
-    return insertProject(organizationDto, componentConsumer, defaults(), measures);
+  private ComponentDto insertProject(Consumer<ComponentDto> componentConsumer, Measure... measures) {
+    return insertProject(componentConsumer, defaults(), measures);
   }
 
-  private ComponentDto insertProject(OrganizationDto organizationDto, Consumer<ComponentDto> componentConsumer, Consumer<ProjectDto> projectConsumer,
+  private ComponentDto insertProject(Consumer<ComponentDto> componentConsumer, Consumer<ProjectDto> projectConsumer,
     Measure... measures) {
-    ComponentDto project = db.components().insertPublicProject(organizationDto, componentConsumer, projectConsumer);
+    ComponentDto project = db.components().insertPublicProject(componentConsumer, projectConsumer);
     Arrays.stream(measures).forEach(m -> db.measures().insertLiveMeasure(project, m.metric, m.consumer));
     return project;
   }
 
-  private ComponentDto insertApplication(OrganizationDto organizationDto, Measure... measures) {
-    return insertApplication(organizationDto, defaults(), measures);
+  private ComponentDto insertApplication(Measure... measures) {
+    return insertApplication(defaults(), measures);
   }
 
-  private ComponentDto insertApplication(OrganizationDto organizationDto, Consumer<ComponentDto> componentConsumer, Measure... measures) {
-    ComponentDto application = db.components().insertPublicApplication(organizationDto, componentConsumer);
+  private ComponentDto insertApplication(Consumer<ComponentDto> componentConsumer, Measure... measures) {
+    ComponentDto application = db.components().insertPublicApplication(componentConsumer);
     Arrays.stream(measures).forEach(m -> db.measures().insertLiveMeasure(application, m.metric, m.consumer));
     return application;
   }
@@ -1517,8 +1382,8 @@ public class SearchProjectsActionTest {
     authorizationIndexerTester.allowOnlyAnyone(roots.toArray(new ComponentDto[0]));
   }
 
-  private ComponentDto insertPortfolio(OrganizationDto organizationDto) {
-    return db.components().insertPublicPortfolio(organizationDto);
+  private ComponentDto insertPortfolio() {
+    return db.components().insertPublicPortfolio();
   }
 
   private static class Measure {
index 49458c54a13780c3d8a89b0cd71cf1cd1780079a..bdbdaa351ee6d3b51a999c3004264aa93b791d5e 100644 (file)
@@ -24,7 +24,6 @@ import java.util.Optional;
 import javax.annotation.Nullable;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.server.ws.Change;
 import org.sonar.api.server.ws.WebService;
@@ -32,7 +31,6 @@ import org.sonar.api.utils.System2;
 import org.sonar.api.web.UserRole;
 import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.server.component.TestComponentFinder;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
@@ -44,6 +42,7 @@ import org.sonarqube.ws.Components.Component;
 import org.sonarqube.ws.Components.ShowWsResponse;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.api.Assertions.tuple;
 import static org.sonar.api.utils.DateUtils.formatDateTime;
 import static org.sonar.api.utils.DateUtils.parseDateTime;
@@ -62,13 +61,11 @@ import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_PUL
 
 public class ShowActionTest {
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
+  public final UserSessionRule userSession = UserSessionRule.standalone();
   @Rule
-  public UserSessionRule userSession = UserSessionRule.standalone();
-  @Rule
-  public DbTester db = DbTester.create(System2.INSTANCE);
+  public final DbTester db = DbTester.create(System2.INSTANCE);
 
-  private WsActionTester ws = new WsActionTester(new ShowAction(userSession, db.getDbClient(), TestComponentFinder.from(db),
+  private final WsActionTester ws = new WsActionTester(new ShowAction(userSession, db.getDbClient(), TestComponentFinder.from(db),
     new IssueIndexSyncProgressChecker(db.getDbClient())));
 
   @Test
@@ -126,7 +123,7 @@ public class ShowActionTest {
 
   @Test
   public void show_with_browse_permission() {
-    ComponentDto project = newPrivateProjectDto(db.organizations().insert(), "project-uuid");
+    ComponentDto project = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(project);
     userSession.logIn().addProjectPermission(USER, project);
 
@@ -316,8 +313,8 @@ public class ShowActionTest {
 
   @Test
   public void verify_need_issue_sync_pr() {
-    ComponentDto portfolio1 = db.components().insertPublicPortfolio(db.getDefaultOrganization());
-    ComponentDto portfolio2 = db.components().insertPublicPortfolio(db.getDefaultOrganization());
+    ComponentDto portfolio1 = db.components().insertPublicPortfolio();
+    ComponentDto portfolio2 = db.components().insertPublicPortfolio();
     ComponentDto subview = db.components().insertSubView(portfolio1);
 
     ComponentDto project1 = db.components().insertPrivateProject();
@@ -383,31 +380,30 @@ public class ShowActionTest {
   public void throw_ForbiddenException_if_user_doesnt_have_browse_permission_on_project() {
     userSession.logIn();
 
-    expectedException.expect(ForbiddenException.class);
-    ComponentDto componentDto = newPrivateProjectDto(db.organizations().insert(), "project-uuid");
+    ComponentDto componentDto = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(componentDto);
 
-    newRequest(componentDto.getDbKey());
+    String componentDtoDbKey = componentDto.getDbKey();
+    assertThatThrownBy(() -> newRequest(componentDtoDbKey))
+      .isInstanceOf(ForbiddenException.class);
   }
 
   @Test
   public void fail_if_component_does_not_exist() {
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage("Component key 'unknown-key' not found");
-
-    newRequest("unknown-key");
+    assertThatThrownBy(() -> newRequest("unknown-key"))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage("Component key 'unknown-key' not found");
   }
 
   @Test
   public void fail_if_component_is_removed() {
     userSession.logIn().setRoot();
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.getDefaultOrganization()));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     db.components().insertComponent(newFileDto(project).setDbKey("file-key").setEnabled(false));
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage("Component key 'file-key' not found");
-
-    newRequest("file-key");
+    assertThatThrownBy(() -> newRequest("file-key"))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage("Component key 'file-key' not found");
   }
 
   @Test
@@ -417,13 +413,13 @@ public class ShowActionTest {
     userSession.addProjectPermission(UserRole.USER, project);
     db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(String.format("Component '%s' on branch '%s' not found", file.getKey(), "another_branch"));
-
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam(PARAM_COMPONENT, file.getKey())
-      .setParam(PARAM_BRANCH, "another_branch")
-      .execute();
+      .setParam(PARAM_BRANCH, "another_branch");
+
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(String.format("Component '%s' on branch '%s' not found", file.getKey(), "another_branch"));
   }
 
   @Test
@@ -432,12 +428,11 @@ public class ShowActionTest {
     userSession.addProjectPermission(UserRole.USER, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(String.format("Component key '%s' not found", branch.getDbKey()));
-
-    ws.newRequest()
-      .setParam(PARAM_COMPONENT, branch.getDbKey())
-      .executeProtobuf(ShowWsResponse.class);
+    TestRequest request = ws.newRequest()
+      .setParam(PARAM_COMPONENT, branch.getDbKey());
+    assertThatThrownBy(() -> request.executeProtobuf(ShowWsResponse.class))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(String.format("Component key '%s' not found", branch.getDbKey()));
   }
 
   private ShowWsResponse newRequest(@Nullable String key) {
@@ -449,14 +444,12 @@ public class ShowActionTest {
   }
 
   private void insertJsonExampleComponentsAndSnapshots() {
-    OrganizationDto organizationDto = db.organizations().insertForKey("my-org-1");
-    ComponentDto project = db.components().insertPrivateProject(organizationDto,
-      c -> c.setUuid("AVIF98jgA3Ax6PH2efOW")
-        .setProjectUuid("AVIF98jgA3Ax6PH2efOW")
-        .setDbKey("com.sonarsource:java-markdown")
-        .setName("Java Markdown")
-        .setDescription("Java Markdown Project")
-        .setQualifier(Qualifiers.PROJECT),
+    ComponentDto project = db.components().insertPrivateProject(c -> c.setUuid("AVIF98jgA3Ax6PH2efOW")
+      .setProjectUuid("AVIF98jgA3Ax6PH2efOW")
+      .setDbKey("com.sonarsource:java-markdown")
+      .setName("Java Markdown")
+      .setDescription("Java Markdown Project")
+      .setQualifier(Qualifiers.PROJECT),
       p -> p.setTagsString("language, plugin"));
     db.components().insertSnapshot(project, snapshot -> snapshot
       .setProjectVersion("1.1")
index c032d97a75562d4689728a1f54e949aafedb165f..a60e4808dee6efbc905c24a6656b8b4f8b7ac370 100644 (file)
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import javax.annotation.Nullable;
-import org.assertj.core.groups.Tuple;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -36,7 +35,6 @@ import org.sonar.db.DbTester;
 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.server.component.index.ComponentIndex;
 import org.sonar.server.component.index.ComponentIndexer;
 import org.sonar.server.es.EsTester;
@@ -47,7 +45,6 @@ import org.sonar.server.tester.UserSessionRule;
 import org.sonar.server.ws.TestRequest;
 import org.sonar.server.ws.TestResponse;
 import org.sonar.server.ws.WsActionTester;
-import org.sonarqube.ws.Common.Organization;
 import org.sonarqube.ws.Components.SuggestionsWsResponse;
 import org.sonarqube.ws.Components.SuggestionsWsResponse.Category;
 import org.sonarqube.ws.Components.SuggestionsWsResponse.Suggestion;
@@ -58,7 +55,6 @@ import static java.util.Collections.singletonList;
 import static java.util.Optional.ofNullable;
 import static java.util.stream.Collectors.joining;
 import static java.util.stream.IntStream.range;
-import static java.util.stream.Stream.of;
 import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.groups.Tuple.tuple;
@@ -87,24 +83,22 @@ public class SuggestionsActionTest {
     .collect(MoreCollectors.toList()).toArray(new String[0]);
 
   @Rule
-  public DbTester db = DbTester.create(System2.INSTANCE);
+  public final DbTester db = DbTester.create(System2.INSTANCE);
   @Rule
-  public EsTester es = EsTester.create();
+  public final EsTester es = EsTester.create();
   @Rule
-  public UserSessionRule userSessionRule = UserSessionRule.standalone();
-  public ResourceTypesRule resourceTypes = new ResourceTypesRule();
+  public final UserSessionRule userSessionRule = UserSessionRule.standalone();
+  public final ResourceTypesRule resourceTypes = new ResourceTypesRule();
 
-  private ComponentIndexer componentIndexer = new ComponentIndexer(db.getDbClient(), es.client());
-  private FavoriteFinder favoriteFinder = mock(FavoriteFinder.class);
-  private ComponentIndex index = new ComponentIndex(es.client(), new WebAuthorizationTypeSupport(userSessionRule), System2.INSTANCE);
-  private SuggestionsAction underTest = new SuggestionsAction(db.getDbClient(), index, favoriteFinder, userSessionRule, resourceTypes);
-  private OrganizationDto organization;
-  private PermissionIndexerTester authorizationIndexerTester = new PermissionIndexerTester(es, componentIndexer);
-  private WsActionTester ws = new WsActionTester(underTest);
+  private final ComponentIndexer componentIndexer = new ComponentIndexer(db.getDbClient(), es.client());
+  private final FavoriteFinder favoriteFinder = mock(FavoriteFinder.class);
+  private final ComponentIndex index = new ComponentIndex(es.client(), new WebAuthorizationTypeSupport(userSessionRule), System2.INSTANCE);
+  private final SuggestionsAction underTest = new SuggestionsAction(db.getDbClient(), index, favoriteFinder, userSessionRule, resourceTypes);
+  private final PermissionIndexerTester authorizationIndexerTester = new PermissionIndexerTester(es, componentIndexer);
+  private final WsActionTester ws = new WsActionTester(underTest);
 
   @Before
   public void setUp() {
-    organization = db.organizations().insert();
     resourceTypes.setAllQualifiers(SUGGESTION_QUALIFIERS);
   }
 
@@ -138,9 +132,8 @@ public class SuggestionsActionTest {
 
   @Test
   public void test_example_json_response() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("default-organization").setName("Default Organization"));
-    ComponentDto project1 = db.components().insertPublicProject(organization, p -> p.setDbKey("org.sonarsource:sonarqube").setName("SonarSource :: SonarQube"));
-    ComponentDto project2 = db.components().insertPublicProject(organization, p -> p.setDbKey("org.sonarsource:sonarlint").setName("SonarSource :: SonarLint"));
+    ComponentDto project1 = db.components().insertPublicProject(p -> p.setDbKey("org.sonarsource:sonarqube").setName("SonarSource :: SonarQube"));
+    ComponentDto project2 = db.components().insertPublicProject(p -> p.setDbKey("org.sonarsource:sonarlint").setName("SonarSource :: SonarLint"));
     componentIndexer.indexAll();
     authorizationIndexerTester.allowOnlyAnyone(project1);
     authorizationIndexerTester.allowOnlyAnyone(project2);
@@ -157,7 +150,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_contain_recently_browsed() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
 
     componentIndexer.indexAll();
     userSessionRule.addProjectPermission(USER, project);
@@ -182,7 +175,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_contain_recently_browsed_public_project() {
-    ComponentDto project = db.components().insertComponent(newPublicProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPublicProjectDto());
 
     componentIndexer.indexAll();
 
@@ -206,7 +199,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_not_contain_recently_browsed_without_permission() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
 
     componentIndexer.indexAll();
 
@@ -222,7 +215,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_contain_favorites() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     doReturn(singletonList(project)).when(favoriteFinder).list();
 
     componentIndexer.indexAll();
@@ -247,7 +240,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_not_contain_favorites_without_permission() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     doReturn(singletonList(project)).when(favoriteFinder).list();
 
     componentIndexer.indexAll();
@@ -263,7 +256,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_contain_recently_browsed_favorites() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     doReturn(singletonList(project)).when(favoriteFinder).list();
 
     componentIndexer.indexAll();
@@ -289,7 +282,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_not_contain_matches_that_are_neither_favorites_nor_recently_browsed() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
 
     componentIndexer.indexAll();
     userSessionRule.addProjectPermission(USER, project);
@@ -307,10 +300,10 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_order_results() {
-    ComponentDto project1 = db.components().insertComponent(newPrivateProjectDto(organization).setName("Alpha"));
-    ComponentDto project2 = db.components().insertComponent(newPrivateProjectDto(organization).setName("Bravo"));
-    ComponentDto project3 = db.components().insertComponent(newPrivateProjectDto(organization).setName("Charlie"));
-    ComponentDto project4 = db.components().insertComponent(newPrivateProjectDto(organization).setName("Delta"));
+    ComponentDto project1 = db.components().insertComponent(newPrivateProjectDto().setName("Alpha"));
+    ComponentDto project2 = db.components().insertComponent(newPrivateProjectDto().setName("Bravo"));
+    ComponentDto project3 = db.components().insertComponent(newPrivateProjectDto().setName("Charlie"));
+    ComponentDto project4 = db.components().insertComponent(newPrivateProjectDto().setName("Delta"));
     doReturn(asList(project4, project2)).when(favoriteFinder).list();
 
     componentIndexer.indexAll();
@@ -337,7 +330,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void suggestions_without_query_should_return_empty_qualifiers() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     componentIndexer.indexOnAnalysis(project.projectUuid());
     userSessionRule.addProjectPermission(USER, project);
 
@@ -355,7 +348,7 @@ public class SuggestionsActionTest {
   @Test
   public void suggestions_should_filter_allowed_qualifiers() {
     resourceTypes.setAllQualifiers(PROJECT, MODULE, FILE, UNIT_TEST_FILE);
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     componentIndexer.indexOnAnalysis(project.projectUuid());
     userSessionRule.addProjectPermission(USER, project);
 
@@ -371,7 +364,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void exact_match_in_one_qualifier() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
 
     componentIndexer.indexAll();
     authorizationIndexerTester.allowOnlyAnyone(project);
@@ -390,13 +383,13 @@ public class SuggestionsActionTest {
     // assert correct id to be found
     assertThat(response.getResultsList())
       .flatExtracting(Category::getItemsList)
-      .extracting(Suggestion::getKey, Suggestion::getOrganization)
-      .containsExactly(tuple(project.getDbKey(), organization.getKey()));
+      .extracting(Suggestion::getKey)
+      .containsExactly(project.getDbKey());
   }
 
   @Test
   public void should_not_return_suggestion_on_non_existing_project() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
 
     componentIndexer.indexAll();
     authorizationIndexerTester.allowOnlyAnyone(project);
@@ -417,7 +410,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void must_not_search_if_no_valid_tokens_are_provided() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization).setName("SonarQube"));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto().setName("SonarQube"));
 
     componentIndexer.indexAll();
     authorizationIndexerTester.allowOnlyAnyone(project);
@@ -443,7 +436,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void should_warn_about_short_inputs_but_return_results_based_on_other_terms() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization).setName("SonarQube"));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto().setName("SonarQube"));
 
     componentIndexer.indexAll();
     authorizationIndexerTester.allowOnlyAnyone(project);
@@ -462,9 +455,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void should_contain_component_names() {
-    OrganizationDto organization1 = db.organizations().insert(o -> o.setKey("org-1").setName("Organization One"));
-
-    ComponentDto project1 = db.components().insertComponent(newPrivateProjectDto(organization1).setName("Project1"));
+    ComponentDto project1 = db.components().insertComponent(newPrivateProjectDto().setName("Project1"));
     componentIndexer.indexOnAnalysis(project1.projectUuid());
     authorizationIndexerTester.allowOnlyAnyone(project1);
 
@@ -479,34 +470,9 @@ public class SuggestionsActionTest {
       .containsExactlyInAnyOrder(tuple(project1.getDbKey(), project1.name()));
   }
 
-  @Test
-  public void should_contain_organization_names() {
-    OrganizationDto organization1 = db.organizations().insert(o -> o.setKey("org-1").setName("Organization One"));
-    OrganizationDto organization2 = db.organizations().insert(o -> o.setKey("org-2").setName("Organization Two"));
-
-    ComponentDto project1 = db.components().insertComponent(newPrivateProjectDto(organization1).setName("Project1"));
-    componentIndexer.indexOnAnalysis(project1.projectUuid());
-    authorizationIndexerTester.allowOnlyAnyone(project1);
-
-    ComponentDto project2 = db.components().insertComponent(newPrivateProjectDto(organization2).setName("Project2"));
-    componentIndexer.indexOnAnalysis(project2.projectUuid());
-    authorizationIndexerTester.allowOnlyAnyone(project2);
-
-    SuggestionsWsResponse response = ws.newRequest()
-      .setMethod("POST")
-      .setParam(PARAM_QUERY, "Project")
-      .executeProtobuf(SuggestionsWsResponse.class);
-
-    assertThat(response.getOrganizationsList())
-      .extracting(Organization::getKey, Organization::getName)
-      .containsExactlyInAnyOrder(
-        of(organization1, organization2)
-          .map(o -> tuple(o.getKey(), o.getName())).toArray(Tuple[]::new));
-  }
-
   @Test
   public void should_not_return_modules() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization).setName("ProjectWithModules"));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto().setName("ProjectWithModules"));
     db.components().insertComponent(newModuleDto(project).setName("Module1"));
     db.components().insertComponent(newModuleDto(project).setName("Module2"));
     componentIndexer.indexOnAnalysis(project.projectUuid());
@@ -525,7 +491,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void should_mark_recently_browsed_items() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization).setName("ProjectModule"));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto().setName("ProjectModule"));
     ComponentDto module1 = newModuleDto(project).setName("Module1");
     db.components().insertComponent(module1);
     ComponentDto module2 = newModuleDto(project).setName("Module2");
@@ -547,8 +513,8 @@ public class SuggestionsActionTest {
 
   @Test
   public void should_mark_favorite_items() {
-    ComponentDto favouriteProject = db.components().insertComponent(newPrivateProjectDto(organization).setName("Project1"));
-    ComponentDto nonFavouriteProject = db.components().insertComponent(newPublicProjectDto(organization).setName("Project2"));
+    ComponentDto favouriteProject = db.components().insertComponent(newPrivateProjectDto().setName("Project1"));
+    ComponentDto nonFavouriteProject = db.components().insertComponent(newPublicProjectDto().setName("Project2"));
 
     doReturn(singletonList(favouriteProject)).when(favoriteFinder).list();
     componentIndexer.indexOnAnalysis(favouriteProject.projectUuid());
@@ -568,7 +534,7 @@ public class SuggestionsActionTest {
 
   @Test
   public void should_return_empty_qualifiers() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(organization));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     componentIndexer.indexOnAnalysis(project.projectUuid());
     authorizationIndexerTester.allowOnlyAnyone(project);
 
@@ -586,10 +552,10 @@ public class SuggestionsActionTest {
   public void should_only_provide_project_for_certain_qualifiers() {
     String query = randomAlphabetic(10);
 
-    ComponentDto app = db.components().insertPublicApplication(organization, v -> v.setName(query));
-    ComponentDto view = db.components().insertView(organization, v -> v.setName(query));
+    ComponentDto app = db.components().insertPublicApplication(v -> v.setName(query));
+    ComponentDto view = db.components().insertView(v -> v.setName(query));
     ComponentDto subView = db.components().insertComponent(ComponentTesting.newSubView(view).setName(query));
-    ComponentDto project = db.components().insertPrivateProject(organization, p -> p.setName(query));
+    ComponentDto project = db.components().insertPrivateProject(p -> p.setName(query));
     ComponentDto module = db.components().insertComponent(ComponentTesting.newModuleDto(project).setName(query));
     ComponentDto file = db.components().insertComponent(ComponentTesting.newFileDto(module).setName(query));
     ComponentDto test = db.components().insertComponent(ComponentTesting.newFileDto(module).setName(query).setQualifier(UNIT_TEST_FILE));
@@ -733,7 +699,7 @@ public class SuggestionsActionTest {
     String namePrefix = "MyProject";
 
     List<ComponentDto> projects = range(0, numberOfProjects)
-      .mapToObj(i -> db.components().insertComponent(newPublicProjectDto(organization).setName(namePrefix + i)))
+      .mapToObj(i -> db.components().insertComponent(newPublicProjectDto().setName(namePrefix + i)))
       .collect(Collectors.toList());
 
     componentIndexer.indexAll();
index 68e98c3f3fbc0a67c5b305fcbc8e986f16dee9d3..0a39eeccb5a470bd3ea3107359850330b5fd8858 100644 (file)
@@ -30,7 +30,6 @@ import javax.annotation.Nullable;
 import org.apache.commons.io.IOUtils;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.server.ws.Change;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.server.ws.WebService.Param;
@@ -42,19 +41,21 @@ import org.sonar.db.DbTester;
 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.server.component.ComponentFinder;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.tester.UserSessionRule;
+import org.sonar.server.ws.TestRequest;
 import org.sonar.server.ws.WsActionTester;
 import org.sonar.test.JsonAssert;
 import org.sonarqube.ws.Components;
 import org.sonarqube.ws.Components.Component;
 import org.sonarqube.ws.Components.TreeWsResponse;
 
+import static java.lang.String.format;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.api.Assertions.tuple;
 import static org.mockito.Mockito.mock;
 import static org.sonar.api.resources.Qualifiers.APP;
@@ -76,8 +77,6 @@ import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_QUA
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_STRATEGY;
 
 public class TreeActionTest {
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
   @Rule
   public UserSessionRule userSession = UserSessionRule.standalone();
   @Rule
@@ -132,7 +131,7 @@ public class TreeActionTest {
 
   @Test
   public void return_children() {
-    ComponentDto project = newPrivateProjectDto(db.organizations().insert(), "project-uuid");
+    ComponentDto project = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(project);
     ComponentDto module = newModuleDto("module-uuid-1", project);
     db.components().insertComponent(module);
@@ -162,7 +161,7 @@ public class TreeActionTest {
 
   @Test
   public void return_descendants() {
-    ComponentDto project = newPrivateProjectDto(db.getDefaultOrganization(), "project-uuid");
+    ComponentDto project = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(project);
     ComponentDto module = newModuleDto("module-uuid-1", project);
     db.components().insertComponent(module);
@@ -192,7 +191,7 @@ public class TreeActionTest {
 
   @Test
   public void filter_descendants_by_qualifier() {
-    ComponentDto project = newPrivateProjectDto(db.organizations().insert(), "project-uuid");
+    ComponentDto project = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(project);
     db.components().insertComponent(newFileDto(project, 1));
     db.components().insertComponent(newFileDto(project, 2));
@@ -210,7 +209,7 @@ public class TreeActionTest {
 
   @Test
   public void return_leaves() {
-    ComponentDto project = newPrivateProjectDto(db.getDefaultOrganization(), "project-uuid");
+    ComponentDto project = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(project);
     ComponentDto module = newModuleDto("module-uuid-1", project);
     db.components().insertComponent(module);
@@ -234,7 +233,7 @@ public class TreeActionTest {
 
   @Test
   public void sort_descendants_by_qualifier() {
-    ComponentDto project = newPrivateProjectDto(db.organizations().insert(), "project-uuid");
+    ComponentDto project = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(project);
     db.components().insertComponent(newFileDto(project, 1));
     db.components().insertComponent(newFileDto(project, 2));
@@ -254,10 +253,9 @@ public class TreeActionTest {
 
   @Test
   public void project_reference_from_portfolio() {
-    OrganizationDto organizationDto = db.organizations().insert();
-    ComponentDto view = newView(organizationDto, "view-uuid");
+    ComponentDto view = newView("view-uuid");
     db.components().insertViewAndSnapshot(view);
-    ComponentDto project = newPrivateProjectDto(organizationDto, "project-uuid-1").setName("project-name").setDbKey("project-key-1");
+    ComponentDto project = newPrivateProjectDto("project-uuid-1").setName("project-name").setDbKey("project-key-1");
     db.components().insertProjectAndSnapshot(project);
     db.components().insertComponent(newProjectCopy("project-uuid-1-copy", project, view));
     db.components().insertComponent(newSubView(view, "sub-view-uuid", "sub-view-key").setName("sub-view-name"));
@@ -300,7 +298,7 @@ public class TreeActionTest {
 
   @Test
   public void response_is_empty_on_provisioned_projects() {
-    ComponentDto project = db.components().insertPrivateProject(db.getDefaultOrganization(), "project-uuid");
+    ComponentDto project = db.components().insertPrivateProject("project-uuid");
     logInWithBrowsePermission(project);
 
     TreeWsResponse response = ws.newRequest()
@@ -315,9 +313,9 @@ public class TreeActionTest {
 
   @Test
   public void return_projects_composing_a_view() {
-    ComponentDto project = newPrivateProjectDto(db.organizations().insert(), "project-uuid");
+    ComponentDto project = newPrivateProjectDto("project-uuid");
     db.components().insertProjectAndSnapshot(project);
-    ComponentDto view = newView(db.getDefaultOrganization(), "view-uuid");
+    ComponentDto view = newView("view-uuid");
     db.components().insertViewAndSnapshot(view);
     ComponentDto projectCopy = db.components().insertComponent(newProjectCopy("project-copy-uuid", project, view));
     userSession.logIn()
@@ -385,12 +383,11 @@ public class TreeActionTest {
     userSession.addProjectPermission(UserRole.USER, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(String.format("Component key '%s' not found", branch.getDbKey()));
-
-    ws.newRequest()
-      .setParam(PARAM_COMPONENT, branch.getDbKey())
-      .executeProtobuf(Components.ShowWsResponse.class);
+    TestRequest request = ws.newRequest()
+      .setParam(PARAM_COMPONENT, branch.getDbKey());
+    assertThatThrownBy(() -> request.executeProtobuf(Components.ShowWsResponse.class))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component key '%s' not found", branch.getDbKey()));
   }
 
   @Test
@@ -399,107 +396,104 @@ public class TreeActionTest {
     userSession.addProjectPermission(UserRole.USER, project);
     ComponentDto branch = db.components().insertProjectBranch(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(String.format("Component key '%s' not found", branch.getDbKey()));
-
-    ws.newRequest()
-      .setParam(PARAM_COMPONENT, branch.getDbKey())
-      .executeProtobuf(Components.ShowWsResponse.class);
+    TestRequest request = ws.newRequest()
+      .setParam(PARAM_COMPONENT, branch.getDbKey());
+    assertThatThrownBy(() -> request.executeProtobuf(Components.ShowWsResponse.class))
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component key '%s' not found", branch.getDbKey()));
   }
 
   @Test
   public void fail_when_not_enough_privileges() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), "project-uuid"));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto("project-uuid"));
     userSession.logIn()
       .addProjectPermission(UserRole.CODEVIEWER, project);
     db.commit();
 
-    expectedException.expect(ForbiddenException.class);
-
-    ws.newRequest()
-      .setParam(PARAM_COMPONENT, project.getDbKey())
-      .execute();
+    TestRequest request = ws.newRequest()
+      .setParam(PARAM_COMPONENT, project.getDbKey());
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(ForbiddenException.class);
   }
 
   @Test
   public void fail_when_page_size_above_500() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("'ps' value (501) must be less than 500");
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.getDefaultOrganization(), "project-uuid"));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto("project-uuid"));
     db.commit();
 
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam(PARAM_COMPONENT, project.getDbKey())
-      .setParam(Param.PAGE_SIZE, "501")
-      .execute();
+      .setParam(Param.PAGE_SIZE, "501");
+
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("'ps' value (501) must be less than 500");
   }
 
   @Test
   public void fail_when_search_query_has_less_than_3_characters() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("'q' length (2) is shorter than the minimum authorized (3)");
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), "project-uuid"));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto("project-uuid"));
     db.commit();
 
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam(PARAM_COMPONENT, project.getDbKey())
-      .setParam(Param.TEXT_QUERY, "fi")
-      .execute();
+      .setParam(Param.TEXT_QUERY, "fi");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("'q' length (2) is shorter than the minimum authorized (3)");
   }
 
   @Test
   public void fail_when_sort_is_unknown() {
-    expectedException.expect(IllegalArgumentException.class);
-    db.components().insertComponent(newPrivateProjectDto(db.getDefaultOrganization(), "project-uuid"));
+    db.components().insertComponent(newPrivateProjectDto("project-uuid"));
     db.commit();
 
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam(PARAM_COMPONENT, "project-key")
-      .setParam(Param.SORT, "unknown-sort")
-      .execute();
+      .setParam(Param.SORT, "unknown-sort");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class);
   }
 
   @Test
   public void fail_when_strategy_is_unknown() {
-    expectedException.expect(IllegalArgumentException.class);
-    db.components().insertComponent(newPrivateProjectDto(db.organizations().insert(), "project-uuid"));
+    db.components().insertComponent(newPrivateProjectDto("project-uuid"));
     db.commit();
 
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam(PARAM_COMPONENT, "project-key")
-      .setParam(PARAM_STRATEGY, "unknown-strategy")
-      .execute();
+      .setParam(PARAM_STRATEGY, "unknown-strategy");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class);
   }
 
   @Test
   public void fail_when_base_component_not_found() {
-    expectedException.expect(NotFoundException.class);
-
-    ws.newRequest()
-      .setParam(PARAM_COMPONENT, "project-key")
-      .execute();
+    TestRequest request = ws.newRequest()
+      .setParam(PARAM_COMPONENT, "project-key");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(NotFoundException.class);
   }
 
   @Test
   public void fail_when_base_component_is_removed() {
-    ComponentDto project = db.components().insertComponent(newPrivateProjectDto(db.getDefaultOrganization()));
+    ComponentDto project = db.components().insertComponent(newPrivateProjectDto());
     db.components().insertComponent(ComponentTesting.newFileDto(project).setDbKey("file-key").setEnabled(false));
     logInWithBrowsePermission(project);
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage("Component key 'file-key' not found");
-
-    ws.newRequest()
-      .setParam(PARAM_COMPONENT, "file-key")
-      .execute();
+    TestRequest request = ws.newRequest()
+      .setParam(PARAM_COMPONENT, "file-key");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage("Component key 'file-key' not found");
   }
 
   @Test
   public void fail_when_no_base_component_parameter() {
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("The 'component' parameter is missing");
-
-    ws.newRequest().execute();
+    TestRequest request = ws.newRequest();
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'component' parameter is missing");
   }
 
   @Test
@@ -508,13 +502,12 @@ public class TreeActionTest {
     userSession.addProjectPermission(UserRole.USER, project);
     db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
 
-    expectedException.expect(NotFoundException.class);
-    expectedException.expectMessage(String.format("Component '%s' on branch '%s' not found", project.getKey(), "another_branch"));
-
-    ws.newRequest()
+    TestRequest request = ws.newRequest()
       .setParam(PARAM_COMPONENT, project.getKey())
-      .setParam(PARAM_BRANCH, "another_branch")
-      .execute();
+      .setParam(PARAM_BRANCH, "another_branch");
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(NotFoundException.class)
+      .hasMessage(format("Component '%s' on branch '%s' not found", project.getKey(), "another_branch"));
   }
 
   private static ComponentDto newFileDto(ComponentDto moduleOrProject, @Nullable ComponentDto directory, int i) {
@@ -529,13 +522,11 @@ public class TreeActionTest {
   }
 
   private ComponentDto initJsonExampleComponents() throws IOException {
-    OrganizationDto organizationDto = db.organizations().insertForKey("my-org-1");
-    ComponentDto project = db.components().insertPrivateProject(organizationDto,
-      c -> c.setUuid("MY_PROJECT_ID")
-        .setDescription("MY_PROJECT_DESCRIPTION")
-        .setDbKey("MY_PROJECT_KEY")
-        .setName("Project Name")
-        .setProjectUuid("MY_PROJECT_ID"),
+    ComponentDto project = db.components().insertPrivateProject(c -> c.setUuid("MY_PROJECT_ID")
+      .setDescription("MY_PROJECT_DESCRIPTION")
+      .setDbKey("MY_PROJECT_KEY")
+      .setName("Project Name")
+      .setProjectUuid("MY_PROJECT_ID"),
       p -> p.setTagsString("abc,def"));
     db.components().insertSnapshot(project);
 
@@ -546,7 +537,7 @@ public class TreeActionTest {
     for (int i = 0; i < components.size(); i++) {
       JsonElement componentAsJsonElement = components.get(i);
       JsonObject componentAsJsonObject = componentAsJsonElement.getAsJsonObject();
-      String uuid = String.format("child-component-uuid-%d", i);
+      String uuid = format("child-component-uuid-%d", i);
       db.components().insertComponent(newChildComponent(uuid, project, project)
         .setDbKey(getJsonField(componentAsJsonObject, "key"))
         .setName(getJsonField(componentAsJsonObject, "name"))
index 369ff2ecbcb7a3935908b17bf52de843d7b29b74..3175c3a8c50fd9397c2b9ab1514655372ba3857a 100644 (file)
@@ -93,7 +93,7 @@ public class CreateActionTest {
       new ProjectsWsSupport(db.getDbClient(), defaultOrganizationProvider, billingValidations),
       db.getDbClient(), userSession,
       new ComponentUpdater(db.getDbClient(), i18n, system2, permissionTemplateService, new FavoriteUpdater(db.getDbClient()),
-        projectIndexers, new SequenceUuidFactory())));
+        projectIndexers, new SequenceUuidFactory(), defaultOrganizationProvider)));
 
   @Test
   public void create_project() {
index b79e4b7abba976b6d4c6813226c9294ffd1fcc70..fc1c8b0f752b9860145d3017cc662d855f1259c2 100644 (file)
@@ -25,7 +25,6 @@ import java.util.Date;
 import java.util.List;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.sonar.api.resources.ResourceType;
 import org.sonar.api.resources.ResourceTypes;
 import org.sonar.api.server.ws.Change;
@@ -47,7 +46,6 @@ import org.sonar.db.component.ComponentDbTester;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.SnapshotDto;
 import org.sonar.db.metric.MetricDto;
-import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.permission.GlobalPermission;
 import org.sonar.db.project.ProjectDto;
 import org.sonar.db.property.PropertyDbTester;
@@ -59,17 +57,17 @@ import org.sonar.server.component.ComponentFinder;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
-import org.sonar.server.organization.BillingValidations;
-import org.sonar.server.organization.BillingValidationsProxy;
 import org.sonar.server.qualitygate.QualityGateFinder;
 import org.sonar.server.qualityprofile.QPMeasureData;
 import org.sonar.server.qualityprofile.QualityProfile;
 import org.sonar.server.tester.UserSessionRule;
 import org.sonar.server.ui.PageRepository;
+import org.sonar.server.ws.TestRequest;
 import org.sonar.server.ws.WsActionTester;
 import org.sonar.updatecenter.common.Version;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.api.Assertions.tuple;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
@@ -92,23 +90,20 @@ import static org.sonar.test.JsonAssert.assertJson;
 public class ComponentActionTest {
 
   @Rule
-  public ExpectedException expectedException = ExpectedException.none();
+  public final DbTester db = DbTester.create(System2.INSTANCE);
   @Rule
-  public DbTester db = DbTester.create(System2.INSTANCE);
-  @Rule
-  public UserSessionRule userSession = UserSessionRule.standalone();
+  public final UserSessionRule userSession = UserSessionRule.standalone();
 
-  private DbClient dbClient = db.getDbClient();
-  private ComponentDbTester componentDbTester = db.components();
-  private PropertyDbTester propertyDbTester = new PropertyDbTester(db);
-  private ResourceTypes resourceTypes = mock(ResourceTypes.class);
-  private BillingValidationsProxy billingValidations = mock(BillingValidationsProxy.class);
+  private final DbClient dbClient = db.getDbClient();
+  private final ComponentDbTester componentDbTester = db.components();
+  private final PropertyDbTester propertyDbTester = new PropertyDbTester(db);
+  private final ResourceTypes resourceTypes = mock(ResourceTypes.class);
 
   private WsActionTester ws;
 
   @Test
   public void return_info_if_user_has_browse_permission_on_project() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.logIn().addProjectPermission(UserRole.USER, project);
     init();
 
@@ -117,7 +112,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_info_if_user_has_administration_permission_on_project() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
     init();
 
@@ -126,7 +121,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_info_if_user_is_system_administrator() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.logIn().setSystemAdministrator();
     init();
 
@@ -135,7 +130,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_component_info_when_anonymous_no_snapshot() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.addProjectPermission(UserRole.USER, project);
     init();
 
@@ -144,7 +139,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_component_info_with_favourite() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     UserDto user = db.users().insertUser("obiwan");
     propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setComponentUuid(project.uuid()).setUserUuid(user.getUuid()));
     userSession.logIn(user).addProjectPermission(UserRole.USER, project);
@@ -155,7 +150,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_favourite_for_branch() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     ComponentDto branch = componentDbTester.insertProjectBranch(project, b -> b.setKey("feature1").setUuid("xyz"));
     UserDto user = db.users().insertUser("obiwan");
     propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setComponentUuid(project.uuid()).setUserUuid(user.getUuid()));
@@ -169,7 +164,6 @@ public class ComponentActionTest {
       .getInput();
 
     assertJson(json).isSimilarTo("{\n" +
-      "  \"organization\": \"my-org\",\n" +
       "  \"key\": \"polop\",\n" +
       "  \"isFavorite\": true,\n" +
       "  \"id\": \"xyz\",\n" +
@@ -181,7 +175,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_component_info_when_snapshot() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     db.components().insertSnapshot(project, snapshot -> snapshot
       .setCreatedAt(parseDateTime("2015-04-22T11:44:00+0200").getTime())
       .setProjectVersion("3.14"));
@@ -193,9 +187,8 @@ public class ComponentActionTest {
 
   @Test
   public void return_component_info_when_file_on_master() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org2"));
-    db.qualityGates().createDefaultQualityGate(organization);
-    ComponentDto main = componentDbTester.insertPrivateProject(organization, p -> p.setName("Sample").setDbKey("sample"));
+    db.qualityGates().createDefaultQualityGate();
+    ComponentDto main = componentDbTester.insertPrivateProject(p -> p.setName("Sample").setDbKey("sample"));
     userSession.addProjectPermission(UserRole.USER, main);
     init();
 
@@ -211,9 +204,8 @@ public class ComponentActionTest {
 
   @Test
   public void return_component_info_when_file_on_branch() {
-    OrganizationDto organization = db.organizations().insertForKey("my-org2");
-    db.qualityGates().createDefaultQualityGate(organization);
-    ComponentDto project = componentDbTester.insertPrivateProject(organization, p -> p.setName("Sample").setDbKey("sample"));
+    db.qualityGates().createDefaultQualityGate();
+    ComponentDto project = componentDbTester.insertPrivateProject(p -> p.setName("Sample").setDbKey("sample"));
     ComponentDto branch = componentDbTester.insertProjectBranch(project, b -> b.setKey("feature1"));
     userSession.addProjectPermission(UserRole.USER, project);
     init();
@@ -254,8 +246,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_quality_profiles_and_supports_deleted_ones() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
-    ComponentDto project = insertProject(organization);
+    ComponentDto project = insertProject();
     QProfileDto qp1 = db.qualityProfiles().insert(t -> t.setKee("qp1").setName("Sonar Way Java").setLanguage("java"));
     QProfileDto qp2 = db.qualityProfiles().insert(t -> t.setKee("qp2").setName("Sonar Way Xoo").setLanguage("xoo"));
     addQualityProfiles(project,
@@ -274,7 +265,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_empty_quality_profiles_when_no_measure() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.addProjectPermission(UserRole.USER, project);
     init();
 
@@ -283,10 +274,9 @@ public class ComponentActionTest {
 
   @Test
   public void return_quality_gate_defined_on_project() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
-    db.qualityGates().createDefaultQualityGate(organization);
-    ProjectDto project = db.components().insertPrivateProjectDto(organization);
-    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way"));
+    db.qualityGates().createDefaultQualityGate();
+    ProjectDto project = db.components().insertPrivateProjectDto();
+    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(qg -> qg.setName("Sonar way"));
     db.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
     userSession.addProjectPermission(UserRole.USER, project);
     init();
@@ -296,11 +286,10 @@ public class ComponentActionTest {
 
   @Test
   public void quality_gate_for_a_branch() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
-    db.qualityGates().createDefaultQualityGate(organization);
-    ProjectDto project = db.components().insertPrivateProjectDto(organization);
+    db.qualityGates().createDefaultQualityGate();
+    ProjectDto project = db.components().insertPrivateProjectDto();
     BranchDto branch = db.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.BRANCH));
-    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way"));
+    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(qg -> qg.setName("Sonar way"));
     db.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
     userSession.addProjectPermission(UserRole.USER, project);
     init();
@@ -316,9 +305,8 @@ public class ComponentActionTest {
 
   @Test
   public void return_default_quality_gate() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
-    ComponentDto project = db.components().insertPrivateProject(organization);
-    db.qualityGates().createDefaultQualityGate(organization, qg -> qg.setName("Sonar way"));
+    ComponentDto project = db.components().insertPrivateProject();
+    db.qualityGates().createDefaultQualityGate(qg -> qg.setName("Sonar way"));
     userSession.addProjectPermission(UserRole.USER, project);
     init();
 
@@ -327,7 +315,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_extensions() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.anonymous().addProjectPermission(UserRole.USER, project);
     init(createPages());
 
@@ -336,16 +324,15 @@ public class ComponentActionTest {
 
   @Test
   public void return_extensions_for_application() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
-    db.qualityGates().createDefaultQualityGate(organization);
-    ProjectDto project = db.components().insertPrivateProjectDto(organization);
+    db.qualityGates().createDefaultQualityGate();
+    ProjectDto project = db.components().insertPrivateProjectDto();
     Page page = Page.builder("my_plugin/app_page")
       .setName("App Page")
       .setScope(COMPONENT)
       .setComponentQualifiers(Qualifier.VIEW, Qualifier.APP)
       .build();
-    ComponentDto application = componentDbTester.insertPublicApplication(organization);
-    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way"));
+    ComponentDto application = componentDbTester.insertPublicApplication();
+    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(qg -> qg.setName("Sonar way"));
     db.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
     userSession.registerComponents(application);
     init(page);
@@ -359,7 +346,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_extensions_for_admin() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.anonymous()
       .addProjectPermission(UserRole.USER, project)
       .addProjectPermission(UserRole.ADMIN, project);
@@ -370,7 +357,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_configuration_for_admin() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     UserDto user = db.users().insertUser();
     userSession.logIn(user)
       .addProjectPermission(UserRole.USER, project)
@@ -394,7 +381,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_configuration_with_all_properties() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.anonymous()
       .addProjectPermission(UserRole.USER, project)
       .addProjectPermission(UserRole.ADMIN, project);
@@ -415,7 +402,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_configuration_for_quality_profile_admin() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.logIn()
       .addProjectPermission(UserRole.USER, project)
       .addPermission(ADMINISTER_QUALITY_PROFILES);
@@ -426,7 +413,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_configuration_for_quality_gate_admin() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.logIn()
       .addProjectPermission(UserRole.USER, project)
       .addPermission(ADMINISTER_QUALITY_GATES);
@@ -437,7 +424,7 @@ public class ComponentActionTest {
 
   @Test
   public void return_configuration_for_private_projects() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     UserSessionRule userSessionRule = userSession.logIn();
     init();
 
@@ -455,7 +442,7 @@ public class ComponentActionTest {
       "    \"showBackgroundTasks\": true,\n" +
       "    \"canApplyPermissionTemplate\": false,\n" +
       "    \"canBrowseProject\": false,\n" +
-      "    \"canUpdateProjectVisibilityToPrivate\": false\n" +
+      "    \"canUpdateProjectVisibilityToPrivate\": true\n" +
       "  }\n" +
       "}");
 
@@ -473,14 +460,14 @@ public class ComponentActionTest {
       "    \"showBackgroundTasks\": true,\n" +
       "    \"canApplyPermissionTemplate\": false,\n" +
       "    \"canBrowseProject\": true,\n" +
-      "    \"canUpdateProjectVisibilityToPrivate\": false\n" +
+      "    \"canUpdateProjectVisibilityToPrivate\": true\n" +
       "  }\n" +
       "}");
   }
 
   @Test
   public void return_bread_crumbs_on_several_levels() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     ComponentDto module = componentDbTester.insertComponent(newModuleDto("bcde", project).setDbKey("palap").setName("Palap"));
     ComponentDto directory = componentDbTester.insertComponent(newDirectory(module, "src/main/xoo"));
     ComponentDto file = componentDbTester.insertComponent(newFileDto(directory, directory, "cdef").setName("Source.xoo")
@@ -494,7 +481,7 @@ public class ComponentActionTest {
 
   @Test
   public void project_administrator_is_allowed_to_get_information() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     userSession.addProjectPermission(UserRole.ADMIN, project);
     init(createPages());
 
@@ -503,9 +490,8 @@ public class ComponentActionTest {
 
   @Test
   public void should_return_private_flag_for_project() {
-    OrganizationDto org = db.organizations().insert();
-    db.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = db.components().insertPrivateProject(org);
+    db.qualityGates().createDefaultQualityGate();
+    ComponentDto project = db.components().insertPrivateProject();
     init();
 
     userSession.logIn()
@@ -516,9 +502,8 @@ public class ComponentActionTest {
 
   @Test
   public void should_return_public_flag_for_project() {
-    OrganizationDto org = db.organizations().insert();
-    db.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = db.components().insertPublicProject(org);
+    db.qualityGates().createDefaultQualityGate();
+    ComponentDto project = db.components().insertPublicProject();
     init();
 
     userSession.logIn()
@@ -528,10 +513,9 @@ public class ComponentActionTest {
   }
 
   @Test
-  public void canApplyPermissionTemplate_is_true_if_logged_in_as_organization_administrator() {
-    OrganizationDto org = db.organizations().insert();
-    db.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = db.components().insertPrivateProject(org);
+  public void canApplyPermissionTemplate_is_true_if_logged_in_as_administrator() {
+    db.qualityGates().createDefaultQualityGate();
+    ComponentDto project = db.components().insertPrivateProject();
     init(createPages());
 
     userSession.logIn()
@@ -546,54 +530,49 @@ public class ComponentActionTest {
   }
 
   @Test
-  public void canUpdateProjectVisibilityToPrivate_is_true_if_logged_in_as_project_administrator_and_extension_returns_false() {
-    OrganizationDto org = db.organizations().insert();
-    db.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = db.components().insertPublicProject(org);
+  public void canUpdateProjectVisibilityToPrivate_is_true_if_logged_in_as_project_administrator() {
+    db.qualityGates().createDefaultQualityGate();
+    ComponentDto project = db.components().insertPublicProject();
     init(createPages());
 
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
-    when(billingValidations.canUpdateProjectVisibilityToPrivate(any(BillingValidations.Organization.class))).thenReturn(false);
-    assertJson(execute(project.getDbKey())).isSimilarTo("{\"configuration\": {\"canUpdateProjectVisibilityToPrivate\": false}}");
-
-    userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
-    when(billingValidations.canUpdateProjectVisibilityToPrivate(any(BillingValidations.Organization.class))).thenReturn(true);
     assertJson(execute(project.getDbKey())).isSimilarTo("{\"configuration\": {\"canUpdateProjectVisibilityToPrivate\": true}}");
   }
 
   @Test
   public void fail_on_missing_parameters() {
-    insertOrganizationAndProject();
+    insertProject();
     init();
 
-    expectedException.expect(IllegalArgumentException.class);
-    ws.newRequest().execute();
+    TestRequest request = ws.newRequest();
+    assertThatThrownBy(request::execute)
+      .isInstanceOf(IllegalArgumentException.class);
   }
 
   @Test
   public void fail_on_unknown_component_key() {
-    insertOrganizationAndProject();
+    insertProject();
     init();
 
-    expectedException.expect(NotFoundException.class);
-    execute("unknoen");
+    assertThatThrownBy(() -> execute("unknoen"))
+      .isInstanceOf(NotFoundException.class);
   }
 
   @Test
   public void throw_ForbiddenException_if_required_permission_is_not_granted() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     init();
     userSession.logIn();
 
-    expectedException.expect(ForbiddenException.class);
-    execute(project.getDbKey());
+    String projectDbKey = project.getDbKey();
+    assertThatThrownBy(() -> execute(projectDbKey))
+      .isInstanceOf(ForbiddenException.class);
   }
 
   @Test
   public void test_example_response() {
     init(createPages());
-    OrganizationDto organizationDto = db.organizations().insertForKey("my-org-1");
-    ComponentDto project = newPrivateProjectDto(organizationDto, "ABCD")
+    ComponentDto project = newPrivateProjectDto("ABCD")
       .setDbKey("org.codehaus.sonar:sonar")
       .setName("Sonarqube")
       .setDescription("Open source platform for continuous inspection of code quality");
@@ -609,7 +588,7 @@ public class ComponentActionTest {
     addQualityProfiles(project,
       createQProfile("qp1", "Sonar Way Java", "java"),
       createQProfile("qp2", "Sonar Way Xoo", "xoo"));
-    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(db.getDefaultOrganization(), qg -> qg.setName("Sonar way"));
+    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(qg -> qg.setName("Sonar way"));
     db.qualityGates().associateProjectToQualityGate(db.components().getProjectDto(project), qualityGateDto);
     userSession.logIn(user)
       .addProjectPermission(UserRole.USER, project)
@@ -644,7 +623,7 @@ public class ComponentActionTest {
 
   @Test(expected = BadRequestException.class)
   public void fail_on_module_key_as_param() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     ComponentDto module = componentDbTester.insertComponent(newModuleDto("bcde", project).setDbKey("palap").setName("Palap"));
     init();
 
@@ -653,7 +632,7 @@ public class ComponentActionTest {
 
   @Test(expected = BadRequestException.class)
   public void fail_on_directory_key_as_param() {
-    ComponentDto project = insertOrganizationAndProject();
+    ComponentDto project = insertProject();
     ComponentDto module = componentDbTester.insertComponent(newModuleDto("bcde", project).setDbKey("palap").setName("Palap"));
     ComponentDto directory = componentDbTester.insertComponent(newDirectory(module, "src/main/xoo"));
     userSession.addProjectPermission(UserRole.USER, project);
@@ -662,14 +641,9 @@ public class ComponentActionTest {
     execute(directory.getDbKey());
   }
 
-  private ComponentDto insertOrganizationAndProject() {
-    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
-    return insertProject(organization);
-  }
-
-  private ComponentDto insertProject(OrganizationDto organization) {
-    db.qualityGates().createDefaultQualityGate(organization);
-    return db.components().insertPrivateProject(organization, "abcd", p -> p.setDbKey("polop").setName("Polop").setDescription("test project"));
+  private ComponentDto insertProject() {
+    db.qualityGates().createDefaultQualityGate();
+    return db.components().insertPrivateProject("abcd", p -> p.setDbKey("polop").setName("Polop").setDescription("test project"));
   }
 
   private void init(Page... pages) {
@@ -686,7 +660,7 @@ public class ComponentActionTest {
     pageRepository.start();
     ws = new WsActionTester(
       new ComponentAction(dbClient, pageRepository, resourceTypes, userSession, new ComponentFinder(dbClient, resourceTypes),
-        new QualityGateFinder(dbClient), billingValidations));
+        new QualityGateFinder(dbClient)));
   }
 
   private String execute(String componentKey) {
index 58ab0611f4c0480b62dc4d7250bb3f50e0d72025..48844dacf26144d6f8020ef64e16160e06e08c22 100644 (file)
@@ -11,7 +11,7 @@
     "showBackgroundTasks": true,
     "canApplyPermissionTemplate": false,
     "canBrowseProject": true,
-    "canUpdateProjectVisibilityToPrivate": false,
+    "canUpdateProjectVisibilityToPrivate": true,
     "extensions": []
   }
 }
index c8ec18c42a8c825d24c791179aebce75b133935d..ba2c023eb3eeb3fe84ef518cdb045cc9e558083c 100644 (file)
@@ -31,7 +31,6 @@ public class ComponentsWsParameters {
   public static final String ACTION_SUGGESTIONS = "suggestions";
 
   // parameters
-  public static final String PARAM_ORGANIZATION = "organization";
   public static final String PARAM_QUALIFIERS = "qualifiers";
   public static final String PARAM_STRATEGY = "strategy";
   public static final String PARAM_FILTER = "filter";
index 7a43f5dcdb3f57f44f13b644c095f0b93f011c7a..17f44c7bcb027461a1b12e3b1ccd66ae4a46b3fa 100644 (file)
@@ -50,8 +50,7 @@ message ShowWsResponse {
 message SuggestionsWsResponse {
   repeated Category results = 1;
   optional string warning = 2;
-  repeated sonarqube.ws.commons.Organization organizations = 3;
-  repeated Project projects = 4;
+  repeated Project projects = 3;
 
   message Category {
        optional string q = 1;
@@ -63,7 +62,6 @@ message SuggestionsWsResponse {
     optional string key = 1;
     optional string name = 2;
     optional string match = 3;
-    optional string organization = 4;
     optional string project = 5;
     optional bool isRecentlyBrowsed = 6;
     optional bool isFavorite = 7;
@@ -78,9 +76,8 @@ message SuggestionsWsResponse {
 // WS api/components/search_projects
 message SearchProjectsWsResponse {
   optional sonarqube.ws.commons.Paging paging = 1;
-  repeated sonarqube.ws.commons.Organization organizations = 2;
-  repeated Component components = 3;
-  optional sonarqube.ws.commons.Facets facets = 4;
+  repeated Component components = 2;
+  optional sonarqube.ws.commons.Facets facets = 3;
 }
 
 // WS api/components/provisioned
@@ -98,7 +95,6 @@ message ProvisionedWsResponse {
 }
 
 message Component {
-  optional string organization = 12;
   optional string key = 2;
   optional string refId = 3;
   optional string refKey = 4;