import org.sonar.server.qualityprofile.QProfileResult;
import org.sonar.server.qualityprofile.index.ActiveRuleIndexer;
import org.sonar.server.user.UserSession;
-import org.sonar.server.util.LanguageParamUtils;
import org.sonarqube.ws.QualityProfiles.CreateWsResponse;
import org.sonarqube.ws.client.qualityprofile.CreateRequest;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.server.qualityprofile.ws.QProfileWsSupport.createOrganizationParam;
+import static org.sonar.server.util.LanguageParamUtils.getLanguageKeys;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
import static org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters.ACTION_CREATE;
import static org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters.PARAM_LANGUAGE;
public class CreateAction implements QProfileWsAction {
private static final String PARAM_BACKUP_FORMAT = "backup_%s";
+ static final int NAME_MAXIMUM_LENGTH = 100;
private final DbClient dbClient;
private final QProfileFactory profileFactory;
@Override
public void define(WebService.NewController controller) {
NewAction create = controller.createAction(ACTION_CREATE)
- .setSince("5.2")
- .setDescription("Create a quality profile.<br>" +
- "Requires to be logged in and the 'Administer Quality Profiles' permission.")
.setPost(true)
+ .setDescription("Create a quality profile.<br>" +
+ "Requires to be logged in and the 'Administer Quality Profiles' permission.")
.setResponseExample(getClass().getResource("create-example.json"))
+ .setSince("5.2")
.setHandler(this);
createOrganizationParam(create)
.setSince("6.4");
create.createParam(PARAM_NAME)
+ .setRequired(true)
+ .setMaximumLength(NAME_MAXIMUM_LENGTH)
.setDescription("Quality profile name")
.setExampleValue("My Sonar way")
- .setDeprecatedKey("profileName", "6.6")
- .setRequired(true);
+ .setDeprecatedKey("profileName", "6.6");
create.createParam(PARAM_LANGUAGE)
+ .setRequired(true)
.setDescription("Quality profile language")
.setExampleValue("js")
- .setPossibleValues(LanguageParamUtils.getLanguageKeys(languages))
- .setRequired(true);
+ .setPossibleValues(getLanguageKeys(languages));
for (ProfileImporter importer : importers) {
create.createParam(getBackupParamName(importer.getKey()))
import static java.lang.String.format;
import static java.util.Optional.ofNullable;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
+import static org.sonar.server.qualityprofile.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.ws.WsUtils.checkRequest;
import static org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters.PARAM_KEY;
import static org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters.PARAM_NAME;
@Override
public void define(WebService.NewController controller) {
NewAction setDefault = controller.createAction("rename")
- .setSince("5.2")
+ .setPost(true)
.setDescription("Rename a quality profile.<br> " +
"Requires one of the following permissions:" +
"<ul>" +
" <li>'Administer Quality Profiles'</li>" +
" <li>Edit right on the specified quality profile</li>" +
"</ul>")
- .setPost(true)
+ .setSince("5.2")
.setHandler(this);
setDefault.createParam(PARAM_KEY)
+ .setRequired(true)
.setDescription("Quality profile key")
- .setExampleValue(UUID_EXAMPLE_01)
- .setRequired(true);
+ .setExampleValue(UUID_EXAMPLE_01);
setDefault.createParam(PARAM_NAME)
+ .setRequired(true)
+ .setMaximumLength(NAME_MAXIMUM_LENGTH)
.setDescription("New quality profile name")
- .setExampleValue("My Sonar way")
- .setRequired(true);
+ .setExampleValue("My Sonar way");
}
assertThat(reloaded.getName()).isEqualTo("Duplicated name");
}
- @Test
- public void allow_100_characters_as_name_and_not_more() throws Exception {
- logInAsQProfileAdministrator();
- String qualityProfileKey = createNewValidQualityProfileKey();
-
- String a100charName = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
- call(qualityProfileKey, a100charName);
-
- expectedException.expect(BadRequestException.class);
- expectedException.expectMessage("Name is too long (>100 characters)");
-
- String a101charName = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901";
- call(qualityProfileKey, a101charName);
- }
-
@Test
public void as_qprofile_editor() {
QProfileDto qualityProfile = db.qualityProfiles().insert(organization);