use of org.sonar.server.rule.index.RuleQuery in project sonarqube by SonarSource.
the class ChangeParentActionMediumTest method fail_if_profile_key_and_name_both_set.
@Test(expected = IllegalArgumentException.class)
public void fail_if_profile_key_and_name_both_set() throws Exception {
QualityProfileDto child = createProfile("xoo", "Child");
session.commit();
assertThat(db.activeRuleDao().selectByProfileKey(session, child.getKey())).isEmpty();
assertThat(ruleIndex.search(new RuleQuery().setActivation(true).setQProfileKey(child.getKey()), new SearchOptions()).getIds()).isEmpty();
wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, "change_parent").setParam(QProfileRef.PARAM_PROFILE_KEY, child.getKee()).setParam(QProfileRef.PARAM_PROFILE_NAME, child.getName()).setParam("parentKey", "palap").execute();
}
use of org.sonar.server.rule.index.RuleQuery in project sonarqube by SonarSource.
the class ChangeParentActionMediumTest method change_parent_with_names.
@Test
public void change_parent_with_names() throws Exception {
QualityProfileDto parent1 = createProfile("xoo", "Parent 1");
QualityProfileDto parent2 = createProfile("xoo", "Parent 2");
QualityProfileDto child = createProfile("xoo", "Child");
RuleDto rule1 = createRule("xoo", "rule1");
RuleDto rule2 = createRule("xoo", "rule2");
createActiveRule(rule1, parent1);
createActiveRule(rule2, parent2);
session.commit();
ruleIndexer.index();
activeRuleIndexer.index();
assertThat(db.activeRuleDao().selectByProfileKey(session, child.getKey())).isEmpty();
// 1. Set parent 1
wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, "change_parent").setParam(QProfileRef.PARAM_LANGUAGE, "xoo").setParam(QProfileRef.PARAM_PROFILE_NAME, child.getName()).setParam("parentName", parent1.getName()).execute();
session.clearCache();
// 1. check rule 1 enabled
List<ActiveRuleDto> activeRules1 = db.activeRuleDao().selectByProfileKey(session, child.getKey());
assertThat(activeRules1).hasSize(1);
assertThat(activeRules1.get(0).getKey().ruleKey().rule()).isEqualTo("rule1");
assertThat(ruleIndex.search(new RuleQuery().setActivation(true).setQProfileKey(child.getKey()), new SearchOptions()).getIds()).hasSize(1);
// 2. Set parent 2
wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, "change_parent").setParam(QProfileRef.PARAM_LANGUAGE, "xoo").setParam(QProfileRef.PARAM_PROFILE_NAME, child.getName()).setParam("parentName", parent2.getName()).execute();
session.clearCache();
// 2. check rule 2 enabled
List<ActiveRuleDto> activeRules2 = db.activeRuleDao().selectByProfileKey(session, child.getKey());
assertThat(activeRules2).hasSize(1);
assertThat(activeRules2.get(0).getKey().ruleKey().rule()).isEqualTo("rule2");
// 3. Remove parent
wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, "change_parent").setParam(QProfileRef.PARAM_LANGUAGE, "xoo").setParam(QProfileRef.PARAM_PROFILE_NAME, child.getName()).setParam("parentName", "").execute();
session.clearCache();
// 3. check no rule enabled
List<ActiveRuleDto> activeRules = db.activeRuleDao().selectByProfileKey(session, child.getKey());
assertThat(activeRules).isEmpty();
assertThat(ruleIndex.search(new RuleQuery().setActivation(true).setQProfileKey(child.getKey()), new SearchOptions()).getIds()).isEmpty();
}
use of org.sonar.server.rule.index.RuleQuery in project sonarqube by SonarSource.
the class ChangeParentActionMediumTest method remove_parent.
@Test
public void remove_parent() throws Exception {
QualityProfileDto parent = createProfile("xoo", "Parent 1");
QualityProfileDto child = createProfile("xoo", "Child");
RuleDto rule1 = createRule("xoo", "rule1");
createActiveRule(rule1, parent);
session.commit();
ruleIndexer.index();
activeRuleIndexer.index();
// Set parent
tester.get(RuleActivator.class).setParent(session, child.getKey(), parent.getKey());
session.clearCache();
// Remove parent through WS
wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, "change_parent").setParam(QProfileRef.PARAM_PROFILE_KEY, child.getKey()).execute();
session.clearCache();
// Check no rule enabled
List<ActiveRuleDto> activeRules = db.activeRuleDao().selectByProfileKey(session, child.getKey());
assertThat(activeRules).isEmpty();
assertThat(ruleIndex.search(new RuleQuery().setActivation(true).setQProfileKey(child.getKey()), new SearchOptions()).getIds()).isEmpty();
}
use of org.sonar.server.rule.index.RuleQuery in project sonarqube by SonarSource.
the class QProfilesWsMediumTest method bulk_activate_rule_by_query_with_severity.
@Test
public void bulk_activate_rule_by_query_with_severity() throws Exception {
QualityProfileDto profile = createProfile("java");
RuleDto rule0 = createRule(profile.getLanguage(), "toto");
RuleDto rule1 = createRule(profile.getLanguage(), "tata");
session.commit();
ruIndexer.index();
// 0. Assert No Active Rule for profile
assertThat(db.activeRuleDao().selectByProfileKey(session, profile.getKey())).isEmpty();
// 2. Assert ActiveRule with BLOCKER severity
assertThat(tester.get(RuleIndex.class).search(new RuleQuery().setSeverities(ImmutableSet.of("BLOCKER")), new SearchOptions()).getIds()).hasSize(2);
// 1. Activate Rule with query returning 2 hits
WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, BulkRuleActivationActions.BULK_ACTIVATE_ACTION);
request.setParam(BulkRuleActivationActions.PROFILE_KEY, profile.getKey());
request.setParam(BulkRuleActivationActions.SEVERITY, "MINOR");
request.execute();
session.commit();
// 2. Assert ActiveRule with MINOR severity
assertThat(tester.get(ActiveRuleDao.class).selectByRuleId(session, rule0.getId()).get(0).getSeverityString()).isEqualTo("MINOR");
assertThat(tester.get(RuleIndex.class).searchAll(new RuleQuery().setQProfileKey(profile.getKey()).setKey(rule0.getKey().toString()).setActiveSeverities(Collections.singleton("MINOR")).setActivation(true))).hasSize(1);
}
use of org.sonar.server.rule.index.RuleQuery in project sonarqube by SonarSource.
the class QProfileCopierMediumTest method verifyOneActiveRule.
private void verifyOneActiveRule(String profileKey, String expectedSeverity, @Nullable String expectedInheritance, Map<String, String> expectedParams) {
// check in db
List<ActiveRuleDto> activeRules = db.activeRuleDao().selectByProfileKey(dbSession, profileKey);
assertThat(activeRules).hasSize(1);
ActiveRuleDto activeRule = activeRules.get(0);
assertThat(activeRule.getSeverityString()).isEqualTo(expectedSeverity);
assertThat(activeRule.getInheritance()).isEqualTo(expectedInheritance);
// verify parameters
ActiveRuleDto activeRuleDto = db.activeRuleDao().selectOrFailByKey(dbSession, activeRule.getKey());
List<ActiveRuleParamDto> params = db.activeRuleDao().selectParamsByActiveRuleId(dbSession, activeRuleDto.getId());
assertThat(params).hasSize(expectedParams.size());
Map<String, ActiveRuleParamDto> paramsByKey = ActiveRuleParamDto.groupByKey(params);
for (Map.Entry<String, String> entry : expectedParams.entrySet()) {
String value = paramsByKey.get(entry.getKey()).getValue();
assertThat(value).isEqualTo(entry.getValue());
}
// check in es
assertThat(tester.get(RuleIndex.class).searchAll(new RuleQuery().setQProfileKey(profileKey).setActivation(true))).hasSize(1);
}
Aggregations