From: Stephane Gamard Date: Fri, 23 May 2014 07:20:48 +0000 (+0200) Subject: SONAR-SONAR-5237 - Fixed Rule Search Medium WS X-Git-Tag: 4.4-RC1~882 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3dae6cb6563cb82af56765021a9649e01e4fd39c;p=sonarqube.git SONAR-SONAR-5237 - Fixed Rule Search Medium WS --- diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java index e39e2fe8c49..3b4a1267ed1 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java @@ -321,18 +321,7 @@ public class RuleIndex extends BaseIndex { } } - if ((query.getLanguages() != null && !query.getLanguages().isEmpty()) || - (query.getRepositories() != null && !query.getRepositories().isEmpty()) || - (query.getSeverities() != null && !query.getSeverities().isEmpty()) || - (query.getTags() != null && !query.getTags().isEmpty()) || - (query.getStatuses() != null && !query.getStatuses().isEmpty()) || - (query.getKey() != null && !query.getKey().isEmpty()) || - (query.getDebtCharacteristics() != null && !query.getDebtCharacteristics().isEmpty()) || - (query.getActivation() != null)) { - return fb; - } else { - return FilterBuilders.matchAllFilter(); - } + return fb.hasClauses() ? fb : FilterBuilders.matchAllFilter(); } protected void setFacets(SearchRequestBuilder query) { diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java index 1b3558822a4..42752fa53c4 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java @@ -23,7 +23,6 @@ import com.google.common.collect.ImmutableSet; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; -import org.junit.Ignore; import org.junit.Test; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.RuleStatus; @@ -41,14 +40,13 @@ import org.sonar.core.rule.RuleDto; import org.sonar.core.rule.RuleParamDto; import org.sonar.server.qualityprofile.persistence.ActiveRuleDao; import org.sonar.server.rule2.persistence.RuleDao; +import org.sonar.server.search.ws.SearchOptions; import org.sonar.server.tester.ServerTester; import org.sonar.server.user.MockUserSession; import org.sonar.server.ws.WsTester; import static org.fest.assertions.Assertions.assertThat; -@Ignore -//TODO FIx BaseDoc for unknown fields in Mapper public class RulesWebServiceTest { @ClassRule @@ -110,12 +108,18 @@ public class RulesWebServiceTest { MockUserSession.set(); - // 1. Default Activation + // 1. With Activation WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "show"); - request.setParam("key", rule.getKey().toString()); + request.setParam(ShowAction.PARAM_KEY, rule.getKey().toString()); + request.setParam(ShowAction.PARAM_ACTIVES, "true"); WsTester.Result result = request.execute(); + result.assertJson(this.getClass(), "show_rule_active.json", false); - result.assertJson(this.getClass(), "show_rule_active.json"); + // 1. Default Activation (defaults to false) + request = wsTester.newGetRequest("api/rules", "show"); + request.setParam(ShowAction.PARAM_KEY, rule.getKey().toString()); + result = request.execute(); + result.assertJson(this.getClass(), "show_rule_no_active.json", false); } @@ -156,8 +160,8 @@ public class RulesWebServiceTest { MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); + request.setParam(SearchOptions.PARAM_FIELDS, "debtRemFn,debtChar"); WsTester.Result result = request.execute(); - result.assertJson(this.getClass(), "search_debt_rule.json"); } @@ -178,8 +182,9 @@ public class RulesWebServiceTest { MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); - request.setParam("q", "S001"); - request.setParam("activation", "all"); + request.setParam(SearchOptions.PARAM_TEXT_QUERY, "S001"); + request.setParam(SearchAction.PARAM_ACTIVATION, "true"); + request.setParam(SearchOptions.PARAM_FIELDS, ""); WsTester.Result result = request.execute(); result.assertJson(this.getClass(), "search_active_rules.json"); @@ -209,11 +214,11 @@ public class RulesWebServiceTest { MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); - request.setParam("q", "S001"); - request.setParam("activation", "true"); - request.setParam("qprofile", profile2.getKey().toString()); + request.setParam(SearchOptions.PARAM_TEXT_QUERY, "S001"); + request.setParam(SearchAction.PARAM_ACTIVATION, "true"); + request.setParam(SearchAction.PARAM_QPROFILE, profile2.getKey().toString()); + request.setParam(SearchOptions.PARAM_FIELDS, ""); WsTester.Result result = request.execute(); - result.assertJson(this.getClass(), "search_profile_active_rules.json"); } @@ -256,9 +261,9 @@ public class RulesWebServiceTest { MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); - request.setParam("q", "S001"); - request.setParam("activation", "all"); - + request.setParam(SearchOptions.PARAM_TEXT_QUERY, "S001"); + request.setParam(SearchAction.PARAM_ACTIVATION, "true"); + request.setParam(SearchOptions.PARAM_FIELDS, "params"); WsTester.Result result = request.execute(); result.assertJson(this.getClass(), "search_active_rules_params.json", false); @@ -302,8 +307,8 @@ public class RulesWebServiceTest { MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); + request.setParam(SearchOptions.PARAM_FIELDS, "htmlNote, mdNote"); WsTester.Result result = request.execute(); - result.assertJson(this.getClass(), "get_note_as_markdown_and_html.json"); } @@ -319,7 +324,8 @@ public class RulesWebServiceTest { MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); - request.setParam("tags", "tag1"); + request.setParam(SearchAction.PARAM_TAGS, "tag1"); + request.setParam(SearchOptions.PARAM_FIELDS, "sysTags, tags"); WsTester.Result result = request.execute(); result.assertJson(this.getClass(), "filter_by_tags.json"); } diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json index 3fe2e343648..7c70cd1351b 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json @@ -1,19 +1,7 @@ -{"total": 1, "p": 1, "ps": 25, "rules": [ - { - "key": "java:S001", - "repo": "java", - "name": "Rule S001", - "htmlDesc": "Description S001", - "severity": "INFO", - "status": "READY", - "internalKey": "InternalKeyS001", - "template": false, - "tags": [], - "sysTags": ["tag1"], - "debtRemFnType": "LINEAR", - "debtRemFnCoeff": "1h", - "debtRemFnOffset": "5min", - "lang": "js", - "params": [] - } -], "actives": {}} +{"total": 1, "p": 1, "ps": 10, "rules": [ + { + "key": "java:S001", + "sysTags": ["tag1"], + "tags": [] + } +]} \ No newline at end of file diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_note_as_markdown_and_html.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_note_as_markdown_and_html.json index ea1df5579a3..76f3cbb9f53 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_note_as_markdown_and_html.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_note_as_markdown_and_html.json @@ -1,21 +1,7 @@ -{"total": 1, "p": 1, "ps": 25, "rules": [ +{"total": 1, "p": 1, "ps": 10, "rules": [ { "key": "java:S001", - "repo": "java", - "name": "Rule S001", - "lang": "js", - "htmlDesc": "Description S001", - "status": "READY", - "severity": "INFO", - "template": false, - "internalKey": "InternalKeyS001", - "mdNote": "this is *bold*", "htmlNote": "this is bold", - "tags": [], - "sysTags": [], - "debtRemFnType": "LINEAR", - "debtRemFnCoeff": "1h", - "debtRemFnOffset": "5min", - "params": [] + "mdNote": "this is *bold*" } -], "actives": {}} +]} \ No newline at end of file diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_tags.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_tags.json index 2f23ecfb2b7..14764b48180 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_tags.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_tags.json @@ -1 +1 @@ -{"tags":["hello","sys1","java","world"]} \ No newline at end of file +{"tags": ["hello", "sys1", "java", "world"]} \ No newline at end of file diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json index 0f18abaeb47..ea0909a52d9 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json @@ -1,4 +1,4 @@ -{"total": 2, "p": 1, "ps": 25, "rules": [ +{"total": 2, "p": 1, "ps": 10, "rules": [ { "key": "javascript:S002", "repo": "javascript", diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules.json index 68cfa284c66..09c87c6cc5a 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules.json @@ -1,28 +1,5 @@ -{"total": 1, "p": 1, "ps": 25, "rules": [ +{"total": 1, "p": 1, "ps": 10, "rules": [ { - "key": "java:S001", - "repo": "java", - "name": "Rule S001", - "lang": "js", - "htmlDesc": "Description S001", - "status": "READY", - "severity": "INFO", - "template": false, - "internalKey": "InternalKeyS001", - "tags": [], - "sysTags": [], - "debtRemFnType": "LINEAR", - "debtRemFnCoeff": "1h", - "debtRemFnOffset": "5min", - "params": [] + "key": "java:S001" } -], "actives": { - "java:S001": [ - { - "qProfile": "My Profile:java", - "inherit": "NONE", - "severity": "BLOCKER", - "params": [] - } - ] -}} +]} diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules_params.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules_params.json index fc30d831d06..ba129e8c998 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules_params.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules_params.json @@ -1,19 +1,6 @@ -{"total": 1, "p": 1, "ps": 25, "rules": [ +{"total": 1, "p": 1, "ps": 10, "rules": [ { "key": "java:S001", - "repo": "java", - "name": "Rule S001", - "lang": "js", - "htmlDesc": "Description S001", - "status": "READY", - "severity": "INFO", - "template": false, - "internalKey": "InternalKeyS001", - "tags": [], - "sysTags": [], - "debtRemFnType": "LINEAR", - "debtRemFnCoeff": "1h", - "debtRemFnOffset": "5min", "params": [ { "key": "my_var", @@ -27,22 +14,5 @@ } ] } -], "actives": { - "java:S001": [ - { - "qProfile": "My Profile:java", - "inherit": "NONE", - "severity": "BLOCKER", - "params": [ - { - "key": "the_var", - "value": "The Other Value" - }, - { - "key": "my_var", - "value": "The VALUE" - } - ] - } - ] -}} +] +} diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_debt_rule.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_debt_rule.json index 30da25759e3..65442c32bc4 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_debt_rule.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_debt_rule.json @@ -1,20 +1,8 @@ -{"total": 1, "p": 1, "ps": 25, "rules": [ +{"total": 1, "p": 1, "ps": 10, "rules": [ { "key": "javascript:S001", - "repo": "javascript", - "name": "Rule S001", - "lang": "js", - "htmlDesc": "Description S001", - "status": "READY", - "severity": "INFO", - "template": false, - "internalKey": "InternalKeyS001", - "tags": [], - "sysTags": [], - "debtSubChar": "1", "debtRemFnType": "LINEAR", "debtRemFnCoeff": "1h", - "debtRemFnOffset": "5min", - "params": [] + "debtRemFnOffset": "5min" } -], "actives": {}} +]} diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_no_rules.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_no_rules.json index 9aed4375270..d07bd5729f1 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_no_rules.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_no_rules.json @@ -1,7 +1,7 @@ { "total": 0, "p": 1, - "ps": 25, + "ps": 10, "rules": [], "actives": {} } diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_profile_active_rules.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_profile_active_rules.json index b91bcb245d2..aa8d5598533 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_profile_active_rules.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_profile_active_rules.json @@ -1,34 +1,10 @@ { "total": 1, "p": 1, - "ps": 25, + "ps": 10, "rules": [ { - "key": "java:S001", - "repo": "java", - "name": "Rule S001", - "lang": "js", - "htmlDesc": "Description S001", - "status": "READY", - "severity": "INFO", - "template": false, - "internalKey": "InternalKeyS001", - "tags": [], - "sysTags": [], - "debtRemFnType": "LINEAR", - "debtRemFnCoeff": "1h", - "debtRemFnOffset": "5min", - "params": [] + "key": "java:S001" } - ], - "actives": { - "java:S001": [ - { - "qProfile": "p2:java", - "inherit": "NONE", - "severity": "BLOCKER", - "params": [] - } - ] - } + ] } diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_active.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_active.json index 0bc30fb7f6b..97e4c23b920 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_active.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_active.json @@ -1,27 +1,27 @@ { - "actives": [ - { - "inherit": "NONE", - "params": [], - "qProfile": "My Profile:java", - "severity": "BLOCKER" - } - ], - "rule": { - "debtRemFnCoeff": "1h", - "debtRemFnOffset": "5min", - "debtRemFnType": "LINEAR", - "htmlDesc": "Description S001", - "internalKey": "InternalKeyS001", - "key": "java:S001", - "lang": "js", - "name": "Rule S001", - "params": [], - "repo": "java", - "severity": "INFO", - "status": "READY", - "sysTags": [], - "tags": [], - "template": false + "actives": [ + { + "inherit": "NONE", + "params": [], + "qProfile": "My Profile:java", + "severity": "BLOCKER" } + ], + "rule": { + "debtRemFnCoeff": "1h", + "debtRemFnOffset": "5min", + "debtRemFnType": "LINEAR", + "htmlDesc": "Description S001", + "internalKey": "InternalKeyS001", + "key": "java:S001", + "lang": "js", + "name": "Rule S001", + "params": [], + "repo": "java", + "severity": "INFO", + "status": "READY", + "sysTags": [], + "tags": [], + "template": false + } } diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_no_active.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_no_active.json new file mode 100644 index 00000000000..c96026422a9 --- /dev/null +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_no_active.json @@ -0,0 +1,19 @@ +{ + "rule": { + "debtRemFnCoeff": "1h", + "debtRemFnOffset": "5min", + "debtRemFnType": "LINEAR", + "htmlDesc": "Description S001", + "internalKey": "InternalKeyS001", + "key": "java:S001", + "lang": "js", + "name": "Rule S001", + "params": [], + "repo": "java", + "severity": "INFO", + "status": "READY", + "sysTags": [], + "tags": [], + "template": false + } +}