/* * SonarQube * Copyright (C) 2009-2017 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.sonarqube.ws.client.rule; import com.google.common.collect.Lists; import java.util.List; import org.junit.Rule; import org.junit.Test; import org.sonarqube.ws.Rules; import org.sonarqube.ws.Rules.SearchResponse; import org.sonarqube.ws.client.GetRequest; import org.sonarqube.ws.client.ServiceTester; import org.sonarqube.ws.client.WsConnector; import static com.google.common.collect.Lists.newArrayList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_ACTIVATION; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_ACTIVE_SEVERITIES; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_AVAILABLE_SINCE; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_INHERITANCE; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_IS_TEMPLATE; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_LANGUAGES; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_QPROFILE; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_REPOSITORIES; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_RULE_KEY; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_SEVERITIES; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_STATUSES; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_TAGS; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_TEMPLATE_KEY; import static org.sonarqube.ws.client.rule.RulesWsParameters.PARAM_TYPES; public class RulesServiceTest { static final boolean ACTIVATION_VALUE = true; static final List<String> ACTIVE_SEVERITIES_VALUE = Lists.newArrayList("CRITICAL", "BLOCKER"); static final String ACTIVE_SEVERITIES_VALUE_INLINED = "CRITICAL,BLOCKER"; static final boolean ASC_VALUE = false; static final String AVAILABLE_SINCE_VALUE = "2015-06-22"; static final List<String> FIELDS_VALUE = newArrayList("repo", "name"); static final String FIELDS_VALUE_INLINED = "repo,name"; static final List<String> FACETS_VALUE = newArrayList("languages", "repositories"); static final String FACETS_VALUE_INLINED = "languages,repositories"; static final List<String> INHERITANCE_VALUE = newArrayList("INHERITED", "OVERRIDES"); static final String INHERITANCE_VALUE_INLINED = "INHERITED,OVERRIDES"; static final boolean IS_TEMPLATE_VALUE = true; static final List<String> LANGUAGES_VALUE = newArrayList("java", "js"); static final String LANGUAGES_VALUE_INLINED = "java,js"; static final int PAGE_VALUE = 12; static final int PAGE_SIZE_VALUE = 42; static final String QUERY_VALUE = "query-value"; static final String QPROFILE_VALUE = "qprofile-key"; static final List<String> REPOSITORIES_VALUE = newArrayList("findbugs", "checkstyle"); static final String REPOSITORIES_VALUE_INLINED = "findbugs,checkstyle"; static final String RULE_KEY_VALUE = "rule-key-value"; static final String SORT_VALUE = "name"; static final List<String> SEVERITIES_VALUE = newArrayList("INFO", "MINOR"); static final String SEVERITIES_VALUE_INLINED = "INFO,MINOR"; static final List<String> STATUSES_VALUE = newArrayList("BETA", "DEPRECATED"); static final String STATUSES_VALUE_INLINED = "BETA,DEPRECATED"; static final List<String> TAGS_VALUE = newArrayList("clumsy", "java8"); static final String TAGS_VALUE_INLINED = "clumsy,java8"; static final String TEMPLATE_KEY_VALUE = "template-key-value"; static final List<String> TYPES_VALUE = newArrayList("CODE_SMELL", "BUG"); static final String TYPES_VALUE_INLINED = "CODE_SMELL,BUG"; @Rule public ServiceTester<RulesService> serviceTester = new ServiceTester<>(new RulesService(mock(WsConnector.class))); private RulesService underTest = serviceTester.getInstanceUnderTest(); @Test public void test_search() { underTest.search(new SearchWsRequest() .setActivation(ACTIVATION_VALUE) .setActiveSeverities(ACTIVE_SEVERITIES_VALUE) .setAsc(ASC_VALUE) .setAvailableSince(AVAILABLE_SINCE_VALUE) .setFields(FIELDS_VALUE) .setFacets(FACETS_VALUE) .setInheritance(INHERITANCE_VALUE) .setIsTemplate(IS_TEMPLATE_VALUE) .setLanguages(LANGUAGES_VALUE) .setPage(PAGE_VALUE) .setPageSize(PAGE_SIZE_VALUE) .setQuery(QUERY_VALUE) .setQProfile(QPROFILE_VALUE) .setRepositories(REPOSITORIES_VALUE) .setRuleKey(RULE_KEY_VALUE) .setSort(SORT_VALUE) .setSeverities(SEVERITIES_VALUE) .setStatuses(STATUSES_VALUE) .setTags(TAGS_VALUE) .setTemplateKey(TEMPLATE_KEY_VALUE) .setTypes(TYPES_VALUE)); assertThat(serviceTester.getGetParser()).isSameAs(SearchResponse.parser()); GetRequest getRequest = serviceTester.getGetRequest(); serviceTester.assertThat(getRequest) .hasPath("search") .hasParam(PARAM_ACTIVATION, ACTIVATION_VALUE) .hasParam(PARAM_ACTIVE_SEVERITIES, ACTIVE_SEVERITIES_VALUE_INLINED) .hasParam("asc", ASC_VALUE) .hasParam(PARAM_AVAILABLE_SINCE, AVAILABLE_SINCE_VALUE) .hasParam("f", FIELDS_VALUE_INLINED) .hasParam("facets", FACETS_VALUE_INLINED) .hasParam(PARAM_INHERITANCE, INHERITANCE_VALUE_INLINED) .hasParam(PARAM_IS_TEMPLATE, IS_TEMPLATE_VALUE) .hasParam("p", PAGE_VALUE) .hasParam("ps", PAGE_SIZE_VALUE) .hasParam("q", QUERY_VALUE) .hasParam(PARAM_QPROFILE, QPROFILE_VALUE) .hasParam(PARAM_REPOSITORIES, REPOSITORIES_VALUE_INLINED) .hasParam(PARAM_RULE_KEY, RULE_KEY_VALUE) .hasParam(PARAM_LANGUAGES, LANGUAGES_VALUE_INLINED) .hasParam("s", SORT_VALUE) .hasParam(PARAM_SEVERITIES, SEVERITIES_VALUE_INLINED) .hasParam(PARAM_STATUSES, STATUSES_VALUE_INLINED) .hasParam(PARAM_TAGS, TAGS_VALUE_INLINED) .hasParam(PARAM_TEMPLATE_KEY, TEMPLATE_KEY_VALUE) .hasParam(PARAM_TYPES, TYPES_VALUE_INLINED) .andNoOtherParam(); } @Test public void test_show() { underTest.show("the-org", "the-rule/key"); assertThat(serviceTester.getGetParser()).isSameAs(Rules.ShowResponse.parser()); GetRequest getRequest = serviceTester.getGetRequest(); serviceTester.assertThat(getRequest) .hasPath("show") .hasParam("organization", "the-org") .hasParam("key", "the-rule/key") .andNoOtherParam(); } }