import org.sonar.api.rule.RuleKey; | import org.sonar.api.rule.RuleKey; | ||||
import org.sonar.api.rule.RuleScope; | import org.sonar.api.rule.RuleScope; | ||||
import org.sonar.api.rule.RuleStatus; | import org.sonar.api.rule.RuleStatus; | ||||
import org.sonar.api.rules.RuleType; | |||||
import org.sonar.api.server.debt.DebtRemediationFunction; | |||||
import org.sonar.api.server.rule.RulesDefinition; | import org.sonar.api.server.rule.RulesDefinition; | ||||
import static org.assertj.core.api.Assertions.assertThat; | import static org.assertj.core.api.Assertions.assertThat; | ||||
import static org.mockito.Mockito.mock; | |||||
public class DefaultNewRuleTest { | public class DefaultNewRuleTest { | ||||
@Rule | @Rule | ||||
rule.addDeprecatedRuleKey("deprecatedrepo", "deprecatedkey"); | rule.addDeprecatedRuleKey("deprecatedrepo", "deprecatedkey"); | ||||
assertThat(rule.deprecatedRuleKeys()).containsOnly(RuleKey.of("deprecatedrepo", "deprecatedkey")); | assertThat(rule.deprecatedRuleKeys()).containsOnly(RuleKey.of("deprecatedrepo", "deprecatedkey")); | ||||
rule.setStatus(RuleStatus.READY); | |||||
assertThat(rule.status()).isEqualTo(RuleStatus.READY); | |||||
rule.addCwe(12); | |||||
rule.addCwe(10); | |||||
assertThat(rule.securityStandards()).containsOnly("cwe:10", "cwe:12"); | |||||
rule.setType(RuleType.SECURITY_HOTSPOT); | |||||
assertThat(rule.type()).isEqualTo(RuleType.SECURITY_HOTSPOT); | |||||
DebtRemediationFunction f = mock(DebtRemediationFunction.class); | |||||
rule.setDebtRemediationFunction(f); | |||||
assertThat(rule.debtRemediationFunction()).isEqualTo(f); | |||||
rule.setSeverity("MAJOR"); | |||||
assertThat(rule.severity()).isEqualTo("MAJOR"); | |||||
} | } | ||||
@Test | |||||
public void validate_fails() { | |||||
rule.setHtmlDescription("html"); | |||||
exception.expect(IllegalStateException.class); | |||||
rule.validate(); | |||||
} | |||||
@Test | |||||
public void validate_succeeds() { | |||||
rule.setHtmlDescription("html"); | |||||
rule.setName("name"); | |||||
rule.validate(); | |||||
} | |||||
@Test | |||||
public void set_markdown_description() { | |||||
rule.setMarkdownDescription("markdown"); | |||||
assertThat(rule.markdownDescription()).isEqualTo("markdown"); | |||||
} | |||||
@Test | @Test | ||||
public void fail_if_severity_is_invalid() { | public void fail_if_severity_is_invalid() { | ||||
exception.expect(IllegalArgumentException.class); | exception.expect(IllegalArgumentException.class); |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 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.api.impl.server; | |||||
import org.junit.Test; | |||||
import static org.assertj.core.api.Assertions.assertThat; | |||||
import static org.mockito.Mockito.mock; | |||||
public class DefaultRepositoryTest { | |||||
@Test | |||||
public void create_simple_repo() { | |||||
RulesDefinitionContext ctx = mock(RulesDefinitionContext.class); | |||||
DefaultNewRepository newRepo = new DefaultNewRepository(ctx, "key", "lang", false); | |||||
newRepo.createRule("rule1") | |||||
.setName("rule1") | |||||
.setHtmlDescription("desc"); | |||||
newRepo.setName("name"); | |||||
DefaultRepository repo = new DefaultRepository(newRepo, null); | |||||
assertThat(repo.isExternal()).isFalse(); | |||||
assertThat(repo.key()).isEqualTo("key"); | |||||
assertThat(repo.language()).isEqualTo("lang"); | |||||
assertThat(repo.isExternal()).isFalse(); | |||||
assertThat(repo.name()).isEqualTo("name"); | |||||
assertThat(repo.rules()).extracting(r -> r.key()).containsOnly("rule1"); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 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.api.impl.server; | |||||
import org.junit.Test; | |||||
import org.sonar.api.rule.RuleKey; | |||||
import org.sonar.api.rule.RuleScope; | |||||
import org.sonar.api.rule.RuleStatus; | |||||
import org.sonar.api.rules.RuleType; | |||||
import org.sonar.api.server.debt.DebtRemediationFunction; | |||||
import org.sonar.api.server.rule.RulesDefinition; | |||||
import static org.assertj.core.api.Assertions.assertThat; | |||||
import static org.mockito.Mockito.mock; | |||||
public class DefaultRuleTest { | |||||
@Test | |||||
public void getters() { | |||||
DefaultRepository repo = mock(DefaultRepository.class); | |||||
DefaultNewRule rule = new DefaultNewRule("plugin", "repo", "key"); | |||||
rule.setScope(RuleScope.MAIN); | |||||
rule.setName(" name "); | |||||
rule.setHtmlDescription(" html "); | |||||
rule.setTemplate(true); | |||||
rule.setActivatedByDefault(true); | |||||
RulesDefinition.NewParam param1 = rule.createParam("param1"); | |||||
rule.setTags("tag1", "tag2"); | |||||
rule.addTags("tag3"); | |||||
rule.setEffortToFixDescription("effort"); | |||||
rule.setGapDescription("gap"); | |||||
rule.setInternalKey("internal"); | |||||
rule.addDeprecatedRuleKey("deprecatedrepo", "deprecatedkey"); | |||||
rule.setStatus(RuleStatus.READY); | |||||
rule.addCwe(12); | |||||
rule.addCwe(10); | |||||
rule.setType(RuleType.SECURITY_HOTSPOT); | |||||
DebtRemediationFunction f = mock(DebtRemediationFunction.class); | |||||
rule.setDebtRemediationFunction(f); | |||||
rule.setSeverity("MAJOR"); | |||||
DefaultRule defaultRule = new DefaultRule(repo, rule); | |||||
assertThat(defaultRule.scope()).isEqualTo(RuleScope.MAIN); | |||||
assertThat(defaultRule.name()).isEqualTo("name"); | |||||
assertThat(defaultRule.htmlDescription()).isEqualTo("html"); | |||||
assertThat(defaultRule.template()).isTrue(); | |||||
assertThat(defaultRule.activatedByDefault()).isTrue(); | |||||
assertThat(defaultRule.params()).containsOnly(new DefaultParam(new DefaultNewParam("param1"))); | |||||
assertThat(defaultRule.tags()).containsOnly("tag1", "tag2", "tag3"); | |||||
assertThat(defaultRule.effortToFixDescription()).isEqualTo("gap"); | |||||
assertThat(defaultRule.gapDescription()).isEqualTo("gap"); | |||||
assertThat(defaultRule.internalKey()).isEqualTo("internal"); | |||||
assertThat(defaultRule.deprecatedRuleKeys()).containsOnly(RuleKey.of("deprecatedrepo", "deprecatedkey")); | |||||
assertThat(defaultRule.status()).isEqualTo(RuleStatus.READY); | |||||
assertThat(rule.securityStandards()).containsOnly("cwe:10", "cwe:12"); | |||||
assertThat(defaultRule.type()).isEqualTo(RuleType.SECURITY_HOTSPOT); | |||||
assertThat(defaultRule.debtRemediationFunction()).isEqualTo(f); | |||||
assertThat(defaultRule.markdownDescription()).isNull(); | |||||
assertThat(defaultRule.severity()).isEqualTo("MAJOR"); | |||||
} | |||||
@Test | |||||
public void to_string() { | |||||
DefaultRepository repo = mock(DefaultRepository.class); | |||||
DefaultNewRule rule = new DefaultNewRule("plugin", "repo", "key"); | |||||
DefaultRule defaultRule = new DefaultRule(repo, rule); | |||||
assertThat(defaultRule.toString()).isEqualTo("[repository=repo, key=key]"); | |||||
} | |||||
} |