*/
package org.sonar.server.rule.ws;
+import com.google.common.io.Resources;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
.setPost(true)
.setDescription("Create a custom rule.<br>" +
"Requires the 'Administer Quality Profiles' permission")
+ .setResponseExample(Resources.getResource(getClass(), "example-create.json"))
.setSince("4.4")
.setChangelog(
new Change("5.5", "Creating manual rule is not more possible"))
package org.sonar.server.rule.ws;
import com.google.common.base.Splitter;
+import com.google.common.io.Resources;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
WebService.NewAction action = controller
.createAction("update")
.setPost(true)
+ .setResponseExample(Resources.getResource(getClass(), "example-update.json"))
.setDescription("Update an existing rule.<br>" +
"Requires the 'Administer Quality Profiles' permission")
.setSince("4.4")
--- /dev/null
+{
+ "rule":{
+ "key":"squid:forbidSonar",
+ "repo":"squid",
+ "name":"forbidSonar",
+ "createdAt":"2018-06-06T16:04:28+0200",
+ "htmlDesc":"Forbid classes with name starting with Sonar",
+ "mdDesc":"Forbid classes with name starting with Sonar",
+ "severity":"MAJOR",
+ "status":"READY",
+ "isTemplate":false,
+ "templateKey":"squid:S3688",
+ "sysTags":[],
+ "lang":"java",
+ "langName":"Java",
+ "params":[
+ {
+ "key":"className",
+ "htmlDesc":"Fully qualified name of the forbidden class. Use a regex to forbid a package.",
+ "defaultValue":"**/Sonar*",
+ "type":"STRING"
+ }
+ ],
+ "scope":"MAIN",
+ "isExternal":false,
+ "type":"CODE_SMELL"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "rule":{
+ "key":"squid:forbidSonar",
+ "repo":"squid",
+ "name":"forbidSonar",
+ "createdAt":"2018-06-06T16:09:09+0200",
+ "htmlDesc":"Forbid classes with name starting with Sonar",
+ "mdDesc":"Forbid classes with name starting with Sonar",
+ "severity":"MAJOR",
+ "status":"READY",
+ "isTemplate":false,
+ "templateKey":"squid:S3688",
+ "tags":[],
+ "sysTags":[],
+ "lang":"java",
+ "langName":"Java",
+ "params":[
+ {
+ "key":"className",
+ "htmlDesc":"Fully qualified name of the forbidden class. Use a regex to forbid a package.",
+ "defaultValue":"**/Sonar*","type":"STRING"
+ }
+ ],
+ "debtOverloaded":false,
+ "remFnOverloaded":false,
+ "scope":"MAIN",
+ "isExternal":false,
+ "type":"CODE_SMELL"
+ }
+}
\ No newline at end of file
new RuleMapper(new Languages(), createMacroInterpreter()),
new RuleWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider)));
+ @Test
+ public void check_definition() {
+ assertThat(ws.getDef().isPost()).isTrue();
+ assertThat(ws.getDef().isInternal()).isFalse();
+ assertThat(ws.getDef().responseExampleAsString()).isNotNull();
+ assertThat(ws.getDef().description()).isNotNull();
+ }
+
@Test
public void create_custom_rule() {
logInAsQProfileAdministrator();
private WsAction underTest = new UpdateAction(dbClient, ruleUpdater, mapper, userSession, new RuleWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider));
private WsActionTester ws = new WsActionTester(underTest);
+ @Test
+ public void check_definition() {
+ assertThat(ws.getDef().isPost()).isTrue();
+ assertThat(ws.getDef().isInternal()).isFalse();
+ assertThat(ws.getDef().responseExampleAsString()).isNotNull();
+ assertThat(ws.getDef().description()).isNotNull();
+ }
+
@Test
public void update_custom_rule() {
logInAsQProfileAdministrator();