assertThat(updatedRule).isNotNull(); assertThat(updatedRule.getKey()).isEqualTo(rule.getKey().toString()); assertThat(updatedRule.getDefaultRemFnType()).isEqualTo(rule.getDefRemediationFunction()); assertThat(updatedRule.getDefaultRemFnGapMultiplier()).isEqualTo(rule.getDefRemediationGapMultiplier()); assertThat(updatedRule.getDefaultRemFnBaseEffort()).isEqualTo(""); assertThat(updatedRule.getGapDescription()).isEqualTo(rule.getGapDescription()); assertThat(updatedRule.getRemFnType()).isEqualTo(newOffset); assertThat(updatedRule.getRemFnGapMultiplier()).isEqualTo(newMultiplier); assertThat(updatedRule.getRemFnBaseEffort()).isEqualTo(newEffort);
ActiveList activeList = actives.get(r.getKey()); Active active = activeList.getActiveList(0); loadedRule.setRuleKey(RuleKey.parse(r.getKey())); loadedRule.setName(r.getName()); loadedRule.setSeverity(active.getSeverity()); loadedRule.setCreatedAt(dateToLong(parseDateTime(active.getCreatedAt()))); loadedRule.setUpdatedAt(dateToLong(parseDateTime(active.getUpdatedAt()))); loadedRule.setLanguage(r.getLang()); loadedRule.setInternalKey(r.getInternalKey()); if (r.hasTemplateKey()) { RuleKey templateRuleKey = RuleKey.parse(r.getTemplateKey()); loadedRule.setTemplateRuleKey(templateRuleKey.rule()); for (Rules.Rule.Param param : r.getParams().getParamsList()) { params.put(param.getKey(), param.getDefaultValue());
@Test public void encode_html_description_of_custom_rule() { // Template rule RuleDto templateRule = newTemplateRule(RuleKey.of("java", "S001")); db.rules().insert(templateRule.getDefinition()); // Custom rule RuleDefinitionDto customRule = newCustomRule(templateRule.getDefinition()) .setDescription("<div>line1\nline2</div>") .setDescriptionFormat(MARKDOWN); db.rules().insert(customRule); doReturn("<div>line1<br/>line2</div>").when(macroInterpreter).interpret("<div>line1\nline2</div>"); ShowResponse result = ws.newRequest() .setParam("key", customRule.getKey().toString()) .executeProtobuf(ShowResponse.class); assertThat(result.getRule().getHtmlDesc()).isEqualTo(INTERPRETED); assertThat(result.getRule().getTemplateKey()).isEqualTo(templateRule.getKey().toString()); verify(macroInterpreter).interpret("<div>line1<br/>line2</div>"); }
private static void readPage(Rules.Builder rulesBuilder, Map<String, ActiveRules.Builder> activeRulesBuildersByQProfile, SearchResponse response) { Builder ruleBuilder = Rules.Rule.newBuilder(); for (Rule r : response.getRulesList()) { RuleKey ruleKey = RuleKey.parse(r.getKey()); .setRepo(ruleKey.repository()) .setKey(ruleKey.rule()) .setName(r.getName()) .setSeverity(r.getSeverity()) .setLang(r.getLang()) .setInternalKey(r.getInternalKey()) .setHtmlDesc(r.getHtmlDesc()) .setHtmlNote(r.getHtmlNote()) .setIsTemplate(r.getIsTemplate()) .setTemplateKey(r.getTemplateKey()); String type = typeToString(r.getType()); if (type != null) { ruleBuilder.setType(type); rulesBuilder.putRulesByKey(r.getKey(), ruleBuilder.build());
ActiveList activeList = actives.get(r.getKey()); Active active = activeList.getActiveList(0); loadedRule.setRuleKey(RuleKey.parse(r.getKey())); loadedRule.setName(r.getName()); loadedRule.setSeverity(active.getSeverity()); loadedRule.setCreatedAt(dateToLong(parseDateTime(active.getCreatedAt()))); loadedRule.setUpdatedAt(dateToLong(parseDateTime(active.getUpdatedAt()))); loadedRule.setLanguage(r.getLang()); loadedRule.setInternalKey(r.getInternalKey()); if (r.hasTemplateKey()) { RuleKey templateRuleKey = RuleKey.parse(r.getTemplateKey()); loadedRule.setTemplateRuleKey(templateRuleKey.rule()); for (Rules.Rule.Param param : r.getParams().getParamsList()) { params.put(param.getKey(), param.getDefaultValue());
ActiveList activeList = actives.get(r.getKey()); Active active = activeList.getActiveList(0); loadedRule.setRuleKey(RuleKey.parse(r.getKey())); loadedRule.setName(r.getName()); loadedRule.setSeverity(active.getSeverity()); loadedRule.setLanguage(r.getLang()); loadedRule.setInternalKey(r.getInternalKey()); if (r.hasTemplateKey()) { RuleKey templateRuleKey = RuleKey.parse(r.getTemplateKey()); loadedRule.setTemplateRuleKey(templateRuleKey.rule()); for (org.sonarqube.ws.Rules.Rule.Param param : r.getParams().getParamsList()) { params.put(param.getKey(), param.getDefaultValue());
private Rule toRule(Rules.ShowResponse showResponse) { Rules.Rule rule = showResponse.getRule(); if (rule == null) { return Rule.newBuilder().build(); } return Rule.newBuilder() .key(rule.getKey()) .repo(rule.getRepo()) .name(rule.getName()) .description(rule.getMdDesc()) .type(rule.getType() != null ? rule.getType().name() : null) .debtRemFnType(rule.getDebtRemFnType()) .debtRemFnBaseEffort(rule.getRemFnBaseEffort()) .build(); } }
public Rule getRule(String key) { Rules.Rule rule = sonarClient.rules().show(null, key).getRule(); return new Rule(rule.getKey(), rule.getName(), rule.getSeverity(), rule.getLang(), rule.getLangName(), rule.getHtmlDesc()); }
assertThat(updatedRule).isNotNull(); assertThat(updatedRule.getKey()).isEqualTo(rule.getKey().toString()); assertThat(updatedRule.getDefaultRemFnType()).isEqualTo(rule.getDefRemediationFunction()); assertThat(updatedRule.getDefaultRemFnGapMultiplier()).isEqualTo(rule.getDefRemediationGapMultiplier()); assertThat(updatedRule.getDefaultRemFnBaseEffort()).isEqualTo(rule.getDefRemediationBaseEffort()); assertThat(updatedRule.getEffortToFixDescription()).isEqualTo(rule.getGapDescription()); assertThat(updatedRule.getRemFnType()).isEqualTo(newType); assertThat(updatedRule.getDebtRemFnCoeff()).isEqualTo(newCoeff); assertThat(updatedRule.getDebtRemFnOffset()).isEqualTo(newOffset); assertThat(updatedRule.getRemFnType()).isEqualTo(newType); assertThat(updatedRule.getRemFnGapMultiplier()).isEqualTo(newCoeff); assertThat(updatedRule.getRemFnBaseEffort()).isEqualTo(newOffset); assertThat(updatedRule.getGapDescription()).isEqualTo(rule.getGapDescription());
@Test public void update_tags_for_specific_organization() { OrganizationDto organization = db.organizations().insert(); logInAsQProfileAdministrator(organization.getUuid()); RuleDefinitionDto rule = db.rules().insert(setSystemTags("stag1", "stag2")); db.rules().insertOrUpdateMetadata(rule, organization, setTags("tagAlt1", "tagAlt2"), m -> m.setNoteData(null).setNoteUserUuid(null)); Rules.UpdateResponse result = ws.newRequest().setMethod("POST") .setParam(PARAM_KEY, rule.getKey().toString()) .setParam(PARAM_TAGS, "tag2,tag3") .setParam(PARAM_ORGANIZATION, organization.getKey()) .executeProtobuf(Rules.UpdateResponse.class); Rules.Rule updatedRule = result.getRule(); assertThat(updatedRule).isNotNull(); // check response assertThat(updatedRule.getKey()).isEqualTo(rule.getKey().toString()); assertThat(updatedRule.getSysTags().getSysTagsList()).containsExactly(rule.getSystemTags().toArray(new String[0])); assertThat(updatedRule.getTags().getTagsList()).containsExactly("tag2", "tag3"); // check database RuleMetadataDto metadataOfSpecificOrg = db.getDbClient().ruleDao().selectMetadataByKey(db.getSession(), rule.getKey(), organization) .orElseThrow(() -> new IllegalStateException("Cannot load metadata")); assertThat(metadataOfSpecificOrg.getTags()).containsExactly("tag2", "tag3"); }
@Test public void return_subset_of_fields() { RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java")); indexRules(); Rules.SearchResponse response = ws.newRequest() .setParam(WebService.Param.FIELDS, "createdAt,langName") .executeProtobuf(Rules.SearchResponse.class); Rules.Rule result = response.getRules(0); // mandatory fields assertThat(result.getKey()).isEqualTo(rule.getKey().toString()); assertThat(result.getType().getNumber()).isEqualTo(rule.getType()); // selected fields assertThat(result.getCreatedAt()).isNotEmpty(); assertThat(result.getLangName()).isNotEmpty(); // not returned fields assertThat(result.hasEffortToFixDescription()).isFalse(); assertThat(result.hasHtmlDesc()).isFalse(); assertThat(result.hasIsTemplate()).isFalse(); assertThat(result.hasLang()).isFalse(); assertThat(result.hasName()).isFalse(); assertThat(result.hasSeverity()).isFalse(); assertThat(result.hasRepo()).isFalse(); }
@Test public void search_all_active_rules() { OrganizationDto organization = db.organizations().insert(); QProfileDto profile = db.qualityProfiles().insert(organization, p -> p.setLanguage("java")); RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java")); RuleActivation activation = RuleActivation.create(rule.getId(), BLOCKER, null); qProfileRules.activateAndCommit(db.getSession(), profile, singleton(activation)); indexRules(); SearchResponse result = ws.newRequest() .setParam("q", rule.getName()) .setParam("activation", "true") .setParam("organization", organization.getKey()) .executeProtobuf(SearchResponse.class); assertThat(result.getTotal()).isEqualTo(1); assertThat(result.getRulesCount()).isEqualTo(1); Rule searchedRule = result.getRules(0); assertThat(searchedRule).isNotNull(); assertThat(searchedRule.getKey()).isEqualTo(rule.getRepositoryKey() + ":" + rule.getRuleKey()); assertThat(searchedRule.getName()).isEqualTo(rule.getName()); }
@Test public void search_custom_rules_from_template_key() { RuleDefinitionDto templateRule = db.rules().insert(r -> r.setLanguage("java") .setIsTemplate(true)); RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java") .setTemplateId(templateRule.getId())); indexRules(); SearchResponse result = ws.newRequest() .setParam("f", "templateKey") .setParam("template_key", templateRule.getRepositoryKey() + ":" + templateRule.getRuleKey()) .executeProtobuf(SearchResponse.class); assertThat(result.getTotal()).isEqualTo(1); assertThat(result.getRulesCount()).isEqualTo(1); Rule searchedRule = result.getRules(0); assertThat(searchedRule).isNotNull(); assertThat(searchedRule.getKey()).isEqualTo(rule.getRepositoryKey() + ":" + rule.getRuleKey()); assertThat(searchedRule.getTemplateKey()).isEqualTo(templateRule.getRepositoryKey() + ":" + templateRule.getRuleKey()); }
@Test public void search_template_rules() { RuleDefinitionDto templateRule = db.rules().insert(r -> r.setLanguage("java") .setIsTemplate(true)); RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java") .setTemplateId(templateRule.getId())); indexRules(); SearchResponse result = ws.newRequest() .setParam("f", "isTemplate") .setParam("is_template", "true") .executeProtobuf(SearchResponse.class); assertThat(result.getTotal()).isEqualTo(1); assertThat(result.getRulesCount()).isEqualTo(1); Rule searchedRule = result.getRules(0); assertThat(searchedRule).isNotNull(); assertThat(searchedRule.getIsTemplate()).isTrue(); assertThat(searchedRule.getKey()).isEqualTo(templateRule.getRepositoryKey() + ":" + templateRule.getRuleKey()); }
@Test public void show_rule_with_basic_info() { RuleDefinitionDto rule = db.rules().insert(); RuleParamDto ruleParam = db.rules().insertRuleParam(rule); ShowResponse result = ws.newRequest() .setParam(PARAM_KEY, rule.getKey().toString()) .executeProtobuf(ShowResponse.class); Rule resultRule = result.getRule(); assertThat(resultRule.getKey()).isEqualTo(rule.getKey().toString()); assertThat(resultRule.getRepo()).isEqualTo(rule.getRepositoryKey()); assertThat(resultRule.getName()).isEqualTo(rule.getName()); assertThat(resultRule.getSeverity()).isEqualTo(rule.getSeverityString()); assertThat(resultRule.getStatus().toString()).isEqualTo(rule.getStatus().toString()); assertThat(resultRule.getInternalKey()).isEqualTo(rule.getConfigKey()); assertThat(resultRule.getIsTemplate()).isEqualTo(rule.isTemplate()); assertThat(resultRule.getLang()).isEqualTo(rule.getLanguage()); assertThat(resultRule.getParams().getParamsList()) .extracting(Rule.Param::getKey, Rule.Param::getHtmlDesc, Rule.Param::getDefaultValue) .containsExactlyInAnyOrder(tuple(ruleParam.getName(), ruleParam.getDescription(), ruleParam.getDefaultValue())); }
@Test public void return_all_rule_fields_by_default() { RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java")); indexRules(); Rules.SearchResponse response = ws.newRequest().executeProtobuf(Rules.SearchResponse.class); Rules.Rule result = response.getRules(0); assertThat(result.getCreatedAt()).isNotEmpty(); assertThat(result.getEffortToFixDescription()).isNotEmpty(); assertThat(result.getHtmlDesc()).isNotEmpty(); assertThat(result.hasIsTemplate()).isTrue(); assertThat(result.getLang()).isEqualTo(rule.getLanguage()); assertThat(result.getLangName()).isEqualTo(languages.get(rule.getLanguage()).getName()); assertThat(result.getName()).isNotEmpty(); assertThat(result.getRepo()).isNotEmpty(); assertThat(result.getSeverity()).isNotEmpty(); assertThat(result.getType().name()).isEqualTo(RuleType.valueOf(rule.getType()).name()); }
@Test public void update_tags_for_default_organization() { logInAsQProfileAdministrator(); RuleDefinitionDto rule = db.rules().insert(setSystemTags("stag1", "stag2")); db.rules().insertOrUpdateMetadata(rule, db.getDefaultOrganization(), setTags("tag1", "tag2"), m -> m.setNoteData(null).setNoteUserUuid(null)); Rules.UpdateResponse result = ws.newRequest().setMethod("POST") .setParam(PARAM_KEY, rule.getKey().toString()) .setParam(PARAM_TAGS, "tag2,tag3") .executeProtobuf(Rules.UpdateResponse.class); Rules.Rule updatedRule = result.getRule(); assertThat(updatedRule).isNotNull(); assertThat(updatedRule.getKey()).isEqualTo(rule.getKey().toString()); assertThat(updatedRule.getSysTags().getSysTagsList()).containsExactly(rule.getSystemTags().toArray(new String[0])); assertThat(updatedRule.getTags().getTagsList()).containsExactly("tag2", "tag3"); }
@Test public void show_external_rule() { RuleDefinitionDto externalRule = db.rules().insert(r -> r .setIsExternal(true) .setName("ext rule name")); ShowResponse result = ws.newRequest() .setParam(PARAM_KEY, externalRule.getKey().toString()) .executeProtobuf(ShowResponse.class); Rule resultRule = result.getRule(); assertThat(resultRule.getName()).isEqualTo("ext rule name"); }
private void verify(Consumer<TestRequest> requestPopulator, RuleDefinitionDto... expectedRules) { TestRequest request = ws.newRequest(); requestPopulator.accept(request); Rules.SearchResponse response = request .executeProtobuf(Rules.SearchResponse.class); assertThat(response.getP()).isEqualTo(1); RuleKey[] expectedRuleKeys = stream(expectedRules).map(RuleDefinitionDto::getKey).collect(MoreCollectors.toList()).toArray(new RuleKey[0]); assertThat(response.getRulesList()) .extracting(r -> RuleKey.parse(r.getKey())) .containsExactlyInAnyOrder(expectedRuleKeys); assertThat(response.getTotal()).isEqualTo(expectedRules.length); assertThat(response.getRulesCount()).isEqualTo(expectedRules.length); }