From: Daniel Schwarz Date: Thu, 27 Apr 2017 08:43:53 +0000 (+0200) Subject: use NotFoundException in api/rules/show X-Git-Tag: 6.4-RC1~184 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=40d27d700c2cc36dea76e7746501e1cb6e398040;p=sonarqube.git use NotFoundException in api/rules/show --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ShowAction.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ShowAction.java index f179e90b3ed..c737494272e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ShowAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ShowAction.java @@ -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) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/ShowActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/ShowActionTest.java index bc672870c34..e385e5beae1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/ShowActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/ShowActionTest.java @@ -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());