]> source.dussan.org Git - sonarqube.git/commitdiff
use NotFoundException in api/rules/show
authorDaniel Schwarz <daniel.schwarz@sonarsource.com>
Thu, 27 Apr 2017 08:43:53 +0000 (10:43 +0200)
committerDaniel Schwarz <bartfastiel@users.noreply.github.com>
Thu, 27 Apr 2017 15:09:58 +0000 (17:09 +0200)
server/sonar-server/src/main/java/org/sonar/server/rule/ws/ShowAction.java
server/sonar-server/src/test/java/org/sonar/server/rule/ws/ShowActionTest.java

index f179e90b3ed0b30f65890a8d01f7b84aff6a13a4..c737494272e9166b83b15dd8b68145a719b903a3 100644 (file)
@@ -34,9 +34,9 @@ import org.sonar.db.rule.RuleDto;
 import org.sonar.db.rule.RuleParamDto;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.organization.DefaultOrganizationProvider;
+import org.sonar.server.ws.WsUtils;
 import org.sonarqube.ws.Rules.ShowResponse;
 
-import static java.lang.String.format;
 import static java.util.Collections.singletonList;
 import static java.util.Optional.ofNullable;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -126,8 +126,9 @@ public class ShowAction implements RulesWsAction {
   private OrganizationDto getOrganization(Request request, DbSession dbSession) {
     String organizationKey = ofNullable(request.param(PARAM_ORGANIZATION))
       .orElseGet(() -> defaultOrganizationProvider.get().getKey());
-    return dbClient.organizationDao().selectByKey(dbSession, organizationKey)
-      .orElseThrow(() -> new IllegalStateException(format("Cannot load organization '%s'", organizationKey)));
+    return WsUtils.checkFoundWithOptional(
+      dbClient.organizationDao().selectByKey(dbSession, organizationKey),
+      "No organization with key '%s'", organizationKey);
   }
 
   private ShowResponse buildResponse(DbSession dbSession, OrganizationDto organization, Request request, SearchAction.SearchResult searchResult) {
index bc672870c34add69c41234ed20e164203be7c6a5..e385e5beae1ec9638fb966bdca20f406ffdbf086 100644 (file)
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.function.Consumer;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 import org.sonar.api.config.MapSettings;
@@ -34,12 +35,12 @@ import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.DbTester;
 import org.sonar.db.organization.OrganizationDto;
-import org.sonar.db.qualityprofile.ActiveRuleDto;
 import org.sonar.db.qualityprofile.QualityProfileDto;
 import org.sonar.db.rule.RuleDefinitionDto;
 import org.sonar.db.rule.RuleMetadataDto;
 import org.sonar.server.es.EsClient;
 import org.sonar.server.es.EsTester;
+import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.qualityprofile.QProfileTesting;
@@ -53,7 +54,7 @@ import org.sonar.server.ws.WsActionTester;
 import org.sonarqube.ws.Rules;
 import org.sonarqube.ws.Rules.Rule;
 
-import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
 import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Matchers.any;
@@ -72,6 +73,8 @@ public class ShowActionTest {
   @org.junit.Rule
   public EsTester esTester = new EsTester(
     new RuleIndexDefinition(new MapSettings()));
+  @org.junit.Rule
+  public ExpectedException thrown = ExpectedException.none();
 
   private DbClient dbClient = dbTester.getDbClient();
   private EsClient esClient = esTester.client();
@@ -145,9 +148,8 @@ public class ShowActionTest {
       .setInherit(randomAlphanumeric(5))
       .setSeverity(randomAlphanumeric(5))
       .build();
-    Mockito.doReturn(asList(active)).when(activeRuleCompleter).completeShow(any(DbSession.class), orgCaptor.capture(), ruleCaptor.capture());
+    Mockito.doReturn(singletonList(active)).when(activeRuleCompleter).completeShow(any(DbSession.class), orgCaptor.capture(), ruleCaptor.capture());
 
-    ActiveRuleDto activeRule = dbTester.qualityProfiles().activateRule(profile, rule, a -> a.setSeverity("BLOCKER"));
     new ActiveRuleIndexer(System2.INSTANCE, dbClient, esClient).index();
 
     TestResponse response = actionTester.newRequest().setMethod("GET")
@@ -198,6 +200,18 @@ public class ShowActionTest {
     assertThat(actives).isEmpty();
   }
 
+  @Test
+  public void throw_NotFoundException_if_organization_cannot_be_found() throws Exception {
+    RuleDefinitionDto rule = dbTester.rules().insert();
+
+    thrown.expect(NotFoundException.class);
+
+    actionTester.newRequest().setMethod("POST")
+      .setParam("key", rule.getKey().toString())
+      .setParam("organization", "foo")
+      .execute();
+  }
+
   private void assertEqual(RuleDefinitionDto rule, RuleMetadataDto ruleMetadata, Rule resultRule) {
     assertThat(resultRule.getKey()).isEqualTo(rule.getKey().toString());
     assertThat(resultRule.getRepo()).isEqualTo(rule.getRepositoryKey());