import org.sonar.server.qualitygate.QualityGateUpdater;
import org.sonar.server.user.UserSession;
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_SOURCE_NAME;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
"Either 'sourceName' or 'id' must be provided. Requires the 'Administer Quality Gates' permission.")
.setPost(true)
.setChangelog(
+ new Change("10.0", "Parameter 'id' is removed. Use 'sourceName' instead."),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'sourceName' instead."),
new Change("8.4", "Parameter 'sourceName' added"))
.setSince("4.3")
.setHandler(this);
- action.createParam(PARAM_ID)
- .setDescription("The ID of the source quality gate. This parameter is deprecated. Use 'sourceName' instead.")
- .setRequired(false)
- .setDeprecatedSince("8.4")
- .setExampleValue(UUID_EXAMPLE_01);
-
action.createParam(PARAM_SOURCE_NAME)
.setDescription("The name of the quality gate to copy")
- .setRequired(false)
+ .setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("My Quality Gate");
@Override
public void handle(Request request, Response response) {
- String uuid = request.param(PARAM_ID);
- String sourceName = request.param(PARAM_SOURCE_NAME);
- checkArgument(sourceName != null ^ uuid != null, "Either 'id' or 'sourceName' must be provided, and not both");
+ String sourceName = request.mandatoryParam(PARAM_SOURCE_NAME);
String destinationName = request.mandatoryParam(PARAM_NAME);
try (DbSession dbSession = dbClient.openSession(false)) {
userSession.checkPermission(ADMINISTER_QUALITY_GATES);
- QualityGateDto qualityGate;
- if (uuid != null) {
- qualityGate = wsSupport.getByUuid(dbSession, uuid);
- } else {
- qualityGate = wsSupport.getByName(dbSession, sourceName);
- }
+ QualityGateDto qualityGate = wsSupport.getByName(dbSession, sourceName);
QualityGateDto copy = qualityGateUpdater.copy(dbSession, qualityGate, destinationName);
dbSession.commit();
"Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
.setChangelog(
+ new Change("10.0", "Field 'id' in the response is removed."),
new Change("8.4", "Field 'id' in the response is deprecated. Format changes from integer to string."))
.setResponseExample(getClass().getResource("create-example.json"))
.setHandler(this);
addCaycConditions(dbSession, newQualityGate);
CreateResponse.Builder createResponse = CreateResponse.newBuilder()
- .setId(newQualityGate.getUuid())
.setName(newQualityGate.getName());
dbSession.commit();
writeProtobuf(createResponse.build(), request, response);
import org.sonar.server.qualitygate.QualityGateConditionsUpdater;
import org.sonarqube.ws.Qualitygates.CreateConditionResponse;
-import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.server.qualitygate.ws.QualityGatesWs.addConditionParams;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.ACTION_CREATE_CONDITION;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERROR;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
new Change("7.6", "Made 'error' parameter mandatory"),
new Change("7.6", "Reduced the possible values of 'op' parameter to LT and GT"),
new Change("8.4", "Parameter 'gateName' added"),
- new Change("8.4", "Parameter 'gateId' is deprecated. Use 'gateName' instead."))
+ new Change("8.4", "Parameter 'gateId' is deprecated. Use 'gateName' instead."),
+ new Change("10.0", "Parameter 'gateId' is removed. Use 'gateName' instead."))
.setHandler(this);
- createCondition
- .createParam(PARAM_GATE_ID)
- .setDeprecatedSince("8.4")
- .setRequired(false)
- .setDescription("ID of the quality gate. This parameter is deprecated. Use 'gateName' instead.")
- .setExampleValue("1");
-
createCondition
.createParam(PARAM_GATE_NAME)
- .setRequired(false)
+ .setRequired(true)
.setDescription("Name of the quality gate")
.setExampleValue("SonarSource way");
@Override
public void handle(Request request, Response response) {
- String gateUuid = request.param(PARAM_GATE_ID);
- String gateName = request.param(PARAM_GATE_NAME);
+ String gateName = request.mandatoryParam(PARAM_GATE_NAME);
String metric = request.mandatoryParam(PARAM_METRIC);
String operator = request.mandatoryParam(PARAM_OPERATOR);
String error = request.mandatoryParam(PARAM_ERROR);
- checkArgument(gateName != null ^ gateUuid != null, "One of 'gateId' or 'gateName' must be provided, and not both");
try (DbSession dbSession = dbClient.openSession(false)) {
- QualityGateDto qualityGate;
- if (gateUuid != null) {
- qualityGate = wsSupport.getByUuid(dbSession, gateUuid);
- } else {
- qualityGate = wsSupport.getByName(dbSession, gateName);
- }
+ QualityGateDto qualityGate = wsSupport.getByName(dbSession, gateName);
+
wsSupport.checkCanLimitedEdit(dbSession, qualityGate);
QualityGateConditionDto condition = qualityGateConditionsUpdater.createCondition(dbSession, qualityGate, metric, operator, error);
CreateConditionResponse.Builder createConditionResponse = CreateConditionResponse.newBuilder()
import org.sonar.server.qualitygate.QualityGateFinder;
import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
public class DestroyAction implements QualityGatesWsAction {
.setSince("4.3")
.setPost(true)
.setChangelog(
+ new Change("10.0", "Parameter 'name' is removed. Use 'name' instead."),
new Change("8.4", "Parameter 'name' added"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."))
.setHandler(this);
- action.createParam(QualityGatesWsParameters.PARAM_ID)
- .setDescription("ID of the quality gate to delete. This parameter is deprecated. Use 'name' instead.")
- .setRequired(false)
- .setDeprecatedSince("8.4")
- .setExampleValue(UUID_EXAMPLE_01);
-
action.createParam(QualityGatesWsParameters.PARAM_NAME)
.setDescription("Name of the quality gate to delete")
- .setRequired(false)
+ .setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("SonarSource Way");
@Override
public void handle(Request request, Response response) {
- String uuid = request.param(QualityGatesWsParameters.PARAM_ID);
- String name = request.param(QualityGatesWsParameters.PARAM_NAME);
+ String name = request.mandatoryParam(QualityGatesWsParameters.PARAM_NAME);
- checkArgument(name != null ^ uuid != null, "One of 'id' or 'name' must be provided, and not both");
try (DbSession dbSession = dbClient.openSession(false)) {
QualityGateDto qualityGate;
- if (uuid != null) {
- qualityGate = wsSupport.getByUuid(dbSession, uuid);
- } else {
- qualityGate = wsSupport.getByName(dbSession, name);
- }
+ qualityGate = wsSupport.getByName(dbSession, name);
QualityGateDto defaultQualityGate = finder.getDefault(dbSession);
checkArgument(!defaultQualityGate.getUuid().equals(qualityGate.getUuid()), "The default quality gate cannot be removed");
public static final String PARAM_ERROR = "error";
public static final String PARAM_OPERATOR = "op";
public static final String PARAM_METRIC = "metric";
- public static final String PARAM_GATE_ID = "gateId";
public static final String PARAM_GATE_NAME = "gateName";
public static final String PARAM_ID = "id";
public static final String PARAM_SOURCE_NAME = "sourceName";
import org.sonarqube.ws.Qualitygates.QualityGate;
import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_CURRENT_NAME;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
"Either 'id' or 'currentName' must be specified. Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
.setChangelog(
+ new Change("10.0", "Parameter 'id' is removed. Use 'currentName' instead."),
new Change("8.4", "Parameter 'currentName' added"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'currentName' instead."))
.setHandler(this);
- action.createParam(PARAM_ID)
- .setRequired(false)
- .setDeprecatedSince("8.4")
- .setDescription("ID of the quality gate to rename. This parameter is deprecated. Use 'currentName' instead.")
- .setExampleValue(UUID_EXAMPLE_01);
-
action.createParam(PARAM_CURRENT_NAME)
- .setRequired(false)
+ .setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setDescription("Current name of the quality gate")
@Override
public void handle(Request request, Response response) {
- String uuid = request.param(PARAM_ID);
- String currentName = request.param(PARAM_CURRENT_NAME);
-
- checkArgument(uuid != null ^ currentName != null, "One of 'id' or 'currentName' must be provided, and not both");
+ String currentName = request.mandatoryParam(PARAM_CURRENT_NAME);
try (DbSession dbSession = dbClient.openSession(false)) {
QualityGateDto qualityGate;
- if (uuid != null) {
- qualityGate = wsSupport.getByUuid(dbSession, uuid);
- } else {
- qualityGate = wsSupport.getByName(dbSession, currentName);
- }
+
+ qualityGate = wsSupport.getByName(dbSession, currentName);
+
QualityGateDto renamedQualityGate = rename(dbSession, qualityGate, request.mandatoryParam(PARAM_NAME));
writeProtobuf(QualityGate.newBuilder()
.setId(renamedQualityGate.getUuid())
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.Qualitygates;
-import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.api.server.ws.WebService.Param.SELECTED;
import static org.sonar.api.utils.Paging.forPageIndex;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.db.qualitygate.ProjectQgateAssociationQuery.ANY;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE_SIZE;
.setSince("4.3")
.setResponseExample(Resources.getResource(this.getClass(), "search-example.json"))
.setChangelog(
+ new Change("10.0", "Parameter 'gateId' is removed. Use 'gateName' instead."),
new Change("8.4", "Parameter 'gateName' added"),
new Change("8.4", "Parameter 'gateId' is deprecated. Format changes from integer to string. Use 'gateName' instead."),
new Change("7.9", "New field 'paging' in response"),
new Change("7.9", "Field 'more' is deprecated in the response"))
.setHandler(this);
- action.createParam(PARAM_GATE_ID)
- .setDescription("Quality Gate ID. This parameter is deprecated. Use 'gateName' instead.")
- .setRequired(false)
- .setDeprecatedSince("8.4")
- .setExampleValue(UUID_EXAMPLE_01);
-
action.createParam(PARAM_GATE_NAME)
.setDescription("Quality Gate name")
- .setRequired(false)
+ .setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("SonarSource Way");
public void handle(Request request, Response response) {
try (DbSession dbSession = dbClient.openSession(false)) {
- String gateUuid = request.param(PARAM_GATE_ID);
- String gateName = request.param(PARAM_GATE_NAME);
+ String gateName = request.mandatoryParam(PARAM_GATE_NAME);
- checkArgument(gateName != null ^ gateUuid != null, "One of 'gateId' or 'gateName' must be provided, and not both");
QualityGateDto qualityGate;
- if (gateUuid != null) {
- qualityGate = wsSupport.getByUuid(dbSession, gateUuid);
- } else {
- qualityGate = wsSupport.getByName(dbSession, gateName);
- }
+
+ qualityGate = wsSupport.getByName(dbSession, gateName);
ProjectQgateAssociationQuery projectQgateAssociationQuery = ProjectQgateAssociationQuery.builder()
.qualityGate(qualityGate)
import org.sonar.db.project.ProjectDto;
import org.sonar.db.qualitygate.QualityGateDto;
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.ACTION_SELECT;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PROJECT_KEY;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
.setSince("4.3")
.setHandler(this)
.setChangelog(
+ new Change("10.0", "Parameter 'gateId' is removed. Use 'gateName' instead."),
new Change("8.4", "Parameter 'gateName' added"),
new Change("8.4", "Parameter 'gateId' is deprecated. Format changes from integer to string. Use 'gateName' instead."),
new Change("8.3", "The parameter 'projectId' was removed"));
- action.createParam(PARAM_GATE_ID)
- .setDescription("Quality gate ID. This parameter is deprecated. Use 'gateName' instead.")
- .setRequired(false)
- .setDeprecatedSince("8.4")
- .setExampleValue(UUID_EXAMPLE_01);
-
action.createParam(PARAM_GATE_NAME)
- .setRequired(false)
+ .setRequired(true)
.setDescription("Name of the quality gate")
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
@Override
public void handle(Request request, Response response) {
- String gateUuid = request.param(PARAM_GATE_ID);
- String gateName = request.param(PARAM_GATE_NAME);
+ String gateName = request.mandatoryParam(PARAM_GATE_NAME);
String projectKey = request.mandatoryParam(PARAM_PROJECT_KEY);
- checkArgument(gateName != null ^ gateUuid != null, "Either 'gateId' or 'gateName' must be provided, and not both");
try (DbSession dbSession = dbClient.openSession(false)) {
QualityGateDto qualityGate;
- if (gateUuid != null) {
- qualityGate = wsSupport.getByUuid(dbSession, gateUuid);
- } else {
- qualityGate = wsSupport.getByName(dbSession, gateName);
- }
+ qualityGate = wsSupport.getByName(dbSession, gateName);
ProjectDto project = wsSupport.getProject(dbSession, projectKey);
wsSupport.checkCanAdminProject(project);
import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.user.UserSession;
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
public class SetAsDefaultAction implements QualityGatesWsAction {
"Either 'id' or 'name' must be specified. Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
.setChangelog(
+ new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
new Change("8.4", "Parameter 'name' added"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."))
.setPost(true)
.setHandler(this);
- action.createParam(PARAM_ID)
- .setDescription("ID of the quality gate to set as default. This parameter is deprecated. Use 'name' instead.")
- .setDeprecatedSince("8.4")
- .setRequired(false)
- .setExampleValue(UUID_EXAMPLE_01);
-
action.createParam(PARAM_NAME)
.setDescription("Name of the quality gate to set as default")
- .setRequired(false)
+ .setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("SonarSource Way");
@Override
public void handle(Request request, Response response) {
- String uuid = request.param(PARAM_ID);
- String name = request.param(PARAM_NAME);
- checkArgument(name != null ^ uuid != null, "One of 'id' or 'name' must be provided, and not both");
+ String name = request.mandatoryParam(PARAM_NAME);
try (DbSession dbSession = dbClient.openSession(false)) {
userSession.checkPermission(ADMINISTER_QUALITY_GATES);
QualityGateDto qualityGate;
- if (uuid != null) {
- qualityGate = wsSupport.getByUuid(dbSession, uuid);
- } else {
- qualityGate = wsSupport.getByName(dbSession, name);
- }
+ qualityGate = wsSupport.getByName(dbSession, name);
+
dbClient.propertiesDao().saveProperty(new PropertyDto().setKey(DEFAULT_QUALITY_GATE_PROPERTY_NAME).setValue(qualityGate.getUuid()));
dbSession.commit();
}
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
-import javax.annotation.Nullable;
import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.server.qualitygate.QualityGateFinder;
import org.sonarqube.ws.Qualitygates.ShowWsResponse;
-import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Optional.ofNullable;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
.setSince("4.3")
.setResponseExample(Resources.getResource(this.getClass(), "show-example.json"))
.setChangelog(
+ new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
new Change("9.9", "'caycStatus' field is added to the response"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."),
new Change("8.4", "Field 'id' in the response is deprecated."),
new Change("7.0", "'actions' field is added in the response"))
.setHandler(this);
- action.createParam(PARAM_ID)
- .setDescription("ID of the quality gate. Either id or name must be set")
- .setExampleValue(UUID_EXAMPLE_01);
-
action.createParam(PARAM_NAME)
+ .setRequired(true)
.setDescription("Name of the quality gate. Either id or name must be set")
.setExampleValue("My Quality Gate");
}
@Override
public void handle(Request request, Response response) {
- String id = request.param(PARAM_ID);
- String name = request.param(PARAM_NAME);
- checkOneOfIdOrNamePresent(id, name);
+ String name = request.mandatoryParam(PARAM_NAME);
try (DbSession dbSession = dbClient.openSession(false)) {
- QualityGateDto qualityGate = getByNameOrUuid(dbSession, name, id);
+ QualityGateDto qualityGate = wsSupport.getByName(dbSession, name);
Collection<QualityGateConditionDto> conditions = getConditions(dbSession, qualityGate);
Map<String, MetricDto> metricsByUuid = getMetricsByUuid(dbSession, conditions);
QualityGateDto defaultQualityGate = qualityGateFinder.getDefault(dbSession);
}
}
- private QualityGateDto getByNameOrUuid(DbSession dbSession, @Nullable String name, @Nullable String uuid) {
- if (name != null) {
- return wsSupport.getByName(dbSession, name);
- }
- if (uuid != null) {
- return wsSupport.getByUuid(dbSession, uuid);
- }
- throw new IllegalArgumentException("No parameter has been set to identify a quality gate");
- }
-
public Collection<QualityGateConditionDto> getConditions(DbSession dbSession, QualityGateDto qualityGate) {
return dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGate.getUuid());
}
};
}
- private static void checkOneOfIdOrNamePresent(@Nullable String qGateUuid, @Nullable String qGateName) {
- checkArgument(qGateUuid == null ^ qGateName == null, "Either '%s' or '%s' must be provided", PARAM_ID, PARAM_NAME);
- }
}
import static org.assertj.core.api.AssertionsForClassTypes.tuple;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_PROFILES;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_SOURCE_NAME;
@RunWith(DataProviderRunner.class)
public class CopyActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
- tuple("id", false),
- tuple("sourceName", false),
+ tuple("sourceName", true),
tuple("name", true));
}
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric);
ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid())
+ .setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.execute();
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qualityGateDto -> qualityGateDto.setBuiltIn(true));
ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid())
+ .setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.execute();
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
QualityGate response = ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid())
+ .setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.executeProtobuf(QualityGate.class);
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid())
+ .setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.execute())
.isInstanceOf(ForbiddenException.class);
}
@Test
- public void fail_when_id_parameter_is_missing() {
+ public void fail_when_source_name_parameter_is_missing() {
userSession.addPermission(ADMINISTER_QUALITY_GATES);
assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_NAME, "new-name")
.execute())
.isInstanceOf(IllegalArgumentException.class)
- .hasMessageContaining("Either 'id' or 'sourceName' must be provided, and not both");
+ .hasMessageContaining("The 'sourceName' parameter is missing");
}
@Test
- public void fail_when_quality_gate_id_is_not_found() {
+ public void fail_when_quality_gate_name_is_not_found() {
userSession.addPermission(ADMINISTER_QUALITY_GATES);
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, "123")
+ .setParam(PARAM_SOURCE_NAME, "unknown")
.setParam(PARAM_NAME, "new-name")
.execute())
.isInstanceOf(NotFoundException.class)
- .hasMessageContaining("No quality gate has been found for id 123");
+ .hasMessageContaining("No quality gate has been found for name unknown");
}
@Test
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
TestRequest request = ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid());
+ .setParam(PARAM_SOURCE_NAME, qualityGate.getName());
ofNullable(nameParameter).ifPresent(t -> request.setParam(PARAM_NAME, t));
assertThatThrownBy(() -> request.execute())
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid())
+ .setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, existingQualityGate.getName())
.execute())
.isInstanceOf(IllegalArgumentException.class)
CreateResponse response = executeRequest(qgName);
assertThat(response.getName()).isEqualTo(qgName);
- assertThat(response.getId()).isNotNull();
dbSession.commit();
QualityGateDto qualityGateDto = dbClient.qualityGateDao().selectByName(dbSession, qgName);
import static org.sonar.api.measures.Metric.ValueType.INT;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERROR;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
MetricDto metric = insertMetric();
ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
MetricDto metric = insertMetric();
ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
MetricDto metric = insertMetric();
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()).setHidden(false).setDirection(0));
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "ABC")
.setParam(PARAM_ERROR, "90")
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()).setHidden(false).setDirection(direction));
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, operator)
.setParam(PARAM_ERROR, "90")
MetricDto metric = insertMetric();
CreateConditionResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "45")
userSession.logIn(user);
TestResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
userSession.logIn(user).setGroups(group);
TestResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
userSession.logIn();
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_GATE_ID, qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
- tuple("gateId", false),
- tuple("gateName", false),
+ tuple("gateName", true),
tuple("metric", true),
tuple("error", true),
tuple("op", false));
import static java.lang.String.format;
import static java.lang.String.valueOf;
-import static org.apache.commons.lang.StringUtils.EMPTY;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.tuple;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.db.qualitygate.SearchQualityGatePermissionQuery.builder;
import static org.sonar.db.user.SearchPermissionQuery.IN;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);
ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid())
+ .setParam(PARAM_NAME, qualityGate.getName())
.execute();
assertThat(db.getDbClient().qualityGateDao().selectByUuid(dbSession, qualityGate.getUuid())).isNull();
userSession.addPermission(ADMINISTER_QUALITY_GATES);
ws.newRequest()
- .setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_NAME, qualityGate.getName())
.execute();
assertThat(db.getDbClient().qualityGateDao().selectByUuid(dbSession, qualityGate.getUuid())).isNull();
userSession.addPermission(ADMINISTER_QUALITY_GATES);
ws.newRequest()
- .setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_NAME, qualityGate.getName())
.execute();
assertThat(db.getDbClient().projectQgateAssociationDao().selectQGateUuidByProjectUuid(dbSession, prj1.getUuid()))
userSession.addPermission(ADMINISTER_QUALITY_GATES);
ws.newRequest()
- .setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_NAME, qualityGate.getName())
.execute();
assertThat(db.getDbClient().qualityGateGroupPermissionsDao().selectByQuery(dbSession, builder()
userSession.addPermission(ADMINISTER_QUALITY_GATES);
ws.newRequest()
- .setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_NAME, qualityGate.getName())
.execute();
assertThat(db.getDbClient().qualityGateUserPermissionDao().selectByQuery(dbSession, builder()
userSession.addPermission(ADMINISTER_QUALITY_GATES);
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, valueOf(builtInQualityGate.getUuid()))
+ .setParam(PARAM_NAME, valueOf(builtInQualityGate.getName()))
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining(format("Operation forbidden for built-in Quality Gate '%s'", builtInQualityGate.getName()));
}
@Test
- public void fail_when_missing_id() {
+ public void fail_when_missing_name() {
userSession.addPermission(ADMINISTER_QUALITY_GATES);
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, EMPTY)
.execute())
- .isInstanceOf(NotFoundException.class);
+ .isInstanceOf(IllegalArgumentException.class);
}
@Test
userSession.addPermission(ADMINISTER_QUALITY_GATES);
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, valueOf(defaultQualityGate.getUuid()))
+ .setParam(PARAM_NAME, valueOf(defaultQualityGate.getName()))
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("The default quality gate cannot be removed");
userSession.addPermission(ADMINISTER_QUALITY_GATES);
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, "123")
+ .setParam(PARAM_NAME, "unknown")
.execute())
.isInstanceOf(NotFoundException.class);
}
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_PROFILES);
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_ID, qualityGate.getUuid())
+ .setParam(PARAM_NAME, qualityGate.getName())
.execute())
.isInstanceOf(ForbiddenException.class);
}
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
- tuple("id", false),
- tuple("name", false));
+ tuple("name", true));
}
}
import static org.assertj.core.api.AssertionsForClassTypes.tuple;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_PROFILES;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_CURRENT_NAME;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
public class RenameActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
- tuple("id", false),
- tuple("currentName", false),
- tuple("name", true));
+ tuple(PARAM_CURRENT_NAME, true),
+ tuple(PARAM_NAME, true));
}
@Test
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_GATES);
ws.newRequest()
- .setParam("id", qualityGate.getUuid())
- .setParam("name", "new name")
+ .setParam(PARAM_CURRENT_NAME, qualityGate.getName())
+ .setParam(PARAM_NAME, "new name")
.execute();
assertThat(db.getDbClient().qualityGateDao().selectByUuid(db.getSession(), qualityGate.getUuid()).getName()).isEqualTo("new name");
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("old name"));
QualityGate result = ws.newRequest()
- .setParam("id", qualityGate.getUuid())
- .setParam("name", "new name")
+ .setParam(PARAM_CURRENT_NAME, qualityGate.getName())
+ .setParam(PARAM_NAME, "new name")
.executeProtobuf(QualityGate.class);
assertThat(result.getId()).isEqualTo(qualityGate.getUuid());
@Test
public void rename_with_same_name() {
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_GATES);
- QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("name"));
+ QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName(PARAM_NAME));
ws.newRequest()
- .setParam("id", qualityGate.getUuid())
- .setParam("name", "name")
+ .setParam(PARAM_CURRENT_NAME, qualityGate.getName())
+ .setParam(PARAM_NAME, "name")
.execute();
- assertThat(db.getDbClient().qualityGateDao().selectByUuid(db.getSession(), qualityGate.getUuid()).getName()).isEqualTo("name");
+ assertThat(db.getDbClient().qualityGateDao().selectByUuid(db.getSession(), qualityGate.getUuid()).getName()).isEqualTo(PARAM_NAME);
}
@Test
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setBuiltIn(true));
assertThatThrownBy(() -> ws.newRequest()
- .setParam("id", qualityGate.getUuid())
- .setParam("name", "name")
+ .setParam(PARAM_CURRENT_NAME, qualityGate.getName())
+ .setParam(PARAM_NAME, "name")
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining(format("Operation forbidden for built-in Quality Gate '%s'", qualityGate.getName()));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
assertThatThrownBy(() -> ws.newRequest()
- .setParam("id", qualityGate.getUuid())
- .setParam("name", "")
+ .setParam(PARAM_CURRENT_NAME, qualityGate.getName())
+ .setParam(PARAM_NAME, "")
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("The 'name' parameter is missing");
QualityGateDto qualityGate2 = db.qualityGates().insertQualityGate();
assertThatThrownBy(() -> ws.newRequest()
- .setParam("id", qualityGate1.getUuid())
- .setParam("name", qualityGate2.getName())
+ .setParam(PARAM_CURRENT_NAME, qualityGate1.getName())
+ .setParam(PARAM_NAME, qualityGate2.getName())
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining(format("Name '%s' has already been taken", qualityGate2.getName()));
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_GATES);
assertThatThrownBy(() -> ws.newRequest()
- .setParam("id", "123")
- .setParam("name", "new name")
+ .setParam(PARAM_CURRENT_NAME, "unknown")
+ .setParam(PARAM_NAME, "new name")
.execute())
.isInstanceOf(NotFoundException.class);
}
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("old name"));
assertThatThrownBy(() -> ws.newRequest()
- .setParam("id", qualityGate.getUuid())
- .setParam("name", "new name")
+ .setParam(PARAM_CURRENT_NAME, qualityGate.getName())
+ .setParam(PARAM_NAME, "new name")
.execute())
.isInstanceOf(ForbiddenException.class);
}
import static org.sonar.api.server.ws.WebService.SelectionMode.SELECTED;
import static org.sonar.api.web.UserRole.USER;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE_SIZE;
import static org.sonarqube.ws.client.user.UsersWsParameters.PARAM_SELECTED;
db.qualityGates().associateProjectToQualityGate(db.components().getProjectDto(project), qualityGate);
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.executeProtobuf(SearchResponse.class);
assertThat(response.getResultsList())
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.executeProtobuf(SearchResponse.class);
assertThat(response.getResultsList()).isEmpty();
db.qualityGates().associateProjectToQualityGate(associatedProject, qualityGate);
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.executeProtobuf(SearchResponse.class);
db.qualityGates().associateProjectToQualityGate(associatedProject, qualityGate);
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, SELECTED.value())
.executeProtobuf(SearchResponse.class);
db.qualityGates().associateProjectToQualityGate(associatedProject, qualityGate);
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, DESELECTED.value())
.executeProtobuf(SearchResponse.class);
userSession.logIn(user);
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.executeProtobuf(SearchResponse.class);
// Return partial result on first page
assertThat(ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "1")
.setParam(PARAM_PAGE_SIZE, "1")
// Return partial result on second page
assertThat(ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "2")
.setParam(PARAM_PAGE_SIZE, "1")
// Return partial result on first page
assertThat(ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "1")
.setParam(PARAM_PAGE_SIZE, "2")
// Return all result on first page
assertThat(ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "1")
.setParam(PARAM_PAGE_SIZE, "3")
// Return no result as page index is off limit
assertThat(ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "3")
.setParam(PARAM_PAGE_SIZE, "3")
userSession.addPermission(ADMINISTER_QUALITY_GATES);
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_PAGE_SIZE, valueOf(5))
.setParam(PARAM_PAGE, valueOf(2))
.executeProtobuf(SearchResponse.class);
userSession.addPermission(ADMINISTER_QUALITY_GATES);
SearchResponse response = ws.newRequest()
- .setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
+ .setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_PAGE_SIZE, valueOf(100))
.setParam(PARAM_PAGE, valueOf(1))
.executeProtobuf(SearchResponse.class);
@Test
public void fail_on_unknown_quality_gate() {
assertThatThrownBy(() -> ws.newRequest()
- .setParam(PARAM_GATE_ID, "42")
+ .setParam(PARAM_GATE_NAME, "unknown")
.executeProtobuf(SearchResponse.class))
.isInstanceOf(NotFoundException.class)
- .hasMessageContaining("No quality gate has been found for id 42");
+ .hasMessageContaining("No quality gate has been found for name unknown");
}
@Test
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
- tuple("gateId", false),
- tuple("gateName", false),
+ tuple("gateName", true),
tuple("query", false),
tuple("selected", false),
tuple("page", false),
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsActionTester;
-import static java.lang.String.format;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.sonar.api.web.UserRole.ADMIN;
import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
public class SelectActionTest {
ComponentDto project = db.components().insertPrivateProject();
ws.newRequest()
- .setParam("gateId", qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();
ComponentDto project = db.components().insertPrivateProject();
ws.newRequest()
- .setParam("gateId", initialQualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, initialQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();
ws.newRequest()
- .setParam("gateId", secondQualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, secondQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();
ComponentDto project = db.components().insertPrivateProject();
ws.newRequest()
- .setParam("gateId", initialQualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, initialQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();
ws.newRequest()
- .setParam("gateId", initialQualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, initialQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();
userSession.logIn().addProjectPermission(ADMIN, project);
ws.newRequest()
- .setParam("gateId", qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();
ComponentDto project = db.components().insertPrivateProject();
ws.newRequest()
- .setParam("gateId", qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();
ComponentDto project = db.components().insertPrivateProject();
assertThatThrownBy(() -> ws.newRequest()
- .setParam("gateId", "1")
+ .setParam(PARAM_GATE_NAME, "unknown")
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(NotFoundException.class);
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
assertThatThrownBy(() -> ws.newRequest()
- .setParam("gateId", qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", "unknown")
.execute())
.isInstanceOf(NotFoundException.class);
userSession.anonymous();
assertThatThrownBy(() -> ws.newRequest()
- .setParam("gateId", qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(ForbiddenException.class);
userSession.logIn().addProjectPermission(ISSUE_ADMIN, project);
assertThatThrownBy(() -> ws.newRequest()
- .setParam("gateId", qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(ForbiddenException.class);
userSession.logIn();
assertThatThrownBy(() -> ws.newRequest()
- .setParam("gateId", qualityGate.getUuid())
+ .setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(ForbiddenException.class);
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.tuple;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
+import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
public class SetAsDefaultActionTest {
@Rule
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
- tuple("id", false),
- tuple("name", false));
+ tuple("name", true));
}
@Test
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("name"));
ws.newRequest()
- .setParam("name", "name")
+ .setParam(PARAM_NAME, "name")
.execute();
assertThat(db.getDbClient().propertiesDao().selectGlobalProperty(db.getSession(), "qualitygate.default").getValue())
db.qualityGates().setDefaultQualityGate(qualityGate);
ShowWsResponse response = ws.newRequest()
- .setParam("id", qualityGate.getUuid())
+ .setParam("name", qualityGate.getName())
.executeProtobuf(ShowWsResponse.class);
assertThat(response.getId()).isEqualTo(qualityGate.getUuid());
}
@Test
- public void fail_when_no_name_or_id() {
+ public void fail_when_no_name() {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
assertThatThrownBy(() -> ws.newRequest().execute())
.isInstanceOf(IllegalArgumentException.class)
- .hasMessageContaining("Either 'id' or 'name' must be provided");
- }
-
- @Test
- public void fail_when_both_name_or_id() {
- QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
-
- assertThatThrownBy(() -> ws.newRequest()
- .setParam("name", qualityGate.getName())
- .setParam("id", qualityGate.getUuid())
- .execute())
- .isInstanceOf(IllegalArgumentException.class)
- .hasMessageContaining("Either 'id' or 'name' must be provided");
+ .hasMessageContaining("The 'name' parameter is missing");
}
@Test
.hasMessageContaining("No quality gate has been found for name UNKNOWN");
}
- @Test
- public void fail_when_quality_id_does_not_exist() {
- QualityGateDto qualityGate = db.qualityGates().insertQualityGate();
-
- assertThatThrownBy(() -> ws.newRequest()
- .setParam("id", "123")
- .execute())
- .isInstanceOf(NotFoundException.class)
- .hasMessageContaining("No quality gate has been found for id 123");
- }
-
@Test
public void json_example() {
userSession.logIn("admin").addPermission(ADMINISTER_QUALITY_GATES);
assertThat(action.params())
.extracting(Param::key, Param::isRequired)
.containsExactlyInAnyOrder(
- tuple("id", false),
- tuple("name", false));
+ tuple("name", true));
}
}
@Generated("sonar-ws-generator")
public class CopyRequest {
- private String id;
+ private String sourceName;
private String name;
- /**
- * This is a mandatory parameter.
- * Example value: "1"
- */
- public CopyRequest setId(String id) {
- this.id = id;
- return this;
+
+ public String getSourceName() {
+ return sourceName;
}
- public String getId() {
- return id;
+ public CopyRequest setSourceName(String sourceName) {
+ this.sourceName = sourceName;
+ return this;
}
/**
public class CreateConditionRequest {
private String error;
- private String gateId;
+ private String gateName;
private String metric;
private String op;
* This is a mandatory parameter.
* Example value: "1"
*/
- public CreateConditionRequest setGateId(String gateId) {
- this.gateId = gateId;
+ public CreateConditionRequest setGateName(String gateName) {
+ this.gateName = gateName;
return this;
}
- public String getGateId() {
- return gateId;
+ public String getGateName() {
+ return gateName;
}
/**
@Generated("sonar-ws-generator")
public class DestroyRequest {
- private String id;
+ private String name;
- /**
- * This is a mandatory parameter.
- * Example value: "1"
- */
- public DestroyRequest setId(String id) {
- this.id = id;
- return this;
+ public String getName() {
+ return name;
}
- public String getId() {
- return id;
+ public DestroyRequest setName(String name) {
+ this.name = name;
+ return this;
}
}
Qualitygates.CreateResponse.Builder builder = Qualitygates.CreateResponse.newBuilder();
String json = readInputStream(input);
JsonObject jobj = new Gson().fromJson(json, JsonObject.class);
- builder.setId(jobj.get("id").getAsString());
builder.setName(jobj.get("name").getAsString());
return builder.build();
}
public void copy(CopyRequest request) {
call(
new PostRequest(path("copy"))
- .setParam("id", request.getId())
+ .setParam("sourceName", request.getSourceName())
.setParam("name", request.getName())
.setMediaType(MediaTypes.JSON)).content();
}
return call(
new PostRequest(path("create_condition"))
.setParam("error", request.getError())
- .setParam("gateId", request.getGateId())
+ .setParam("gateName", request.getGateName())
.setParam("metric", request.getMetric())
.setParam("op", request.getOp()),
CreateConditionResponse.parser());
public void destroy(DestroyRequest request) {
call(
new PostRequest(path("destroy"))
- .setParam("id", request.getId())
+ .setParam("name", request.getName())
.setMediaType(MediaTypes.JSON)).content();
}
public SearchResponse search(SearchRequest request) {
return call(
new GetRequest(path("search"))
- .setParam("gateId", request.getGateId())
+ .setParam("gateName", request.getGateName())
.setParam("page", request.getPage())
.setParam("pageSize", request.getPageSize())
.setParam("query", request.getQuery())
public void select(SelectRequest request) {
call(
new PostRequest(path("select"))
- .setParam("gateId", request.getGateId())
- .setParam("projectId", request.getProjectId())
+ .setParam("gateName", request.getGateName())
.setParam("projectKey", request.getProjectKey())
.setMediaType(MediaTypes.JSON)).content();
}
public void setAsDefault(SetAsDefaultRequest request) {
call(
new PostRequest(path("set_as_default"))
- .setParam("id", request.getId())
+ .setParam("name", request.getName())
.setMediaType(MediaTypes.JSON)).content();
}
public ShowWsResponse show(ShowRequest request) {
return call(
new GetRequest(path("show"))
- .setParam("id", request.getId())
.setParam("name", request.getName()),
ShowWsResponse.parser());
}
@Generated("sonar-ws-generator")
public class SearchRequest {
- private String gateId;
+ private String gateName;
private String page;
private String pageSize;
private String query;
* This is a mandatory parameter.
* Example value: "1"
*/
- public SearchRequest setGateId(String gateId) {
- this.gateId = gateId;
+ public SearchRequest setGateName(String gateName) {
+ this.gateName = gateName;
return this;
}
- public String getGateId() {
- return gateId;
+ public String getGateName() {
+ return gateName;
}
/**
@Generated("sonar-ws-generator")
public class SelectRequest {
- private String gateId;
- private String projectId;
+ private String gateName;
private String projectKey;
/**
* This is a mandatory parameter.
* Example value: "1"
*/
- public SelectRequest setGateId(String gateId) {
- this.gateId = gateId;
+ public SelectRequest setGateName(String gateName) {
+ this.gateName = gateName;
return this;
}
- public String getGateId() {
- return gateId;
- }
-
- /**
- * Example value: "AU-Tpxb--iU5OvuD2FLy"
- */
- public SelectRequest setProjectId(String projectId) {
- this.projectId = projectId;
- return this;
- }
-
- public String getProjectId() {
- return projectId;
+ public String getGateName() {
+ return gateName;
}
/**
@Generated("sonar-ws-generator")
public class SetAsDefaultRequest {
- private String id;
+ private String name;
- /**
- * This is a mandatory parameter.
- * Example value: "1"
- */
- public SetAsDefaultRequest setId(String id) {
- this.id = id;
- return this;
+ public String getName() {
+ return name;
}
- public String getId() {
- return id;
+ public SetAsDefaultRequest setName(String name) {
+ this.name = name;
+ return this;
}
}
@Generated("sonar-ws-generator")
public class ShowRequest {
- private String id;
private String name;
- /**
- * Example value: "1"
- */
- public ShowRequest setId(String id) {
- this.id = id;
- return this;
- }
-
- public String getId() {
- return id;
- }
-
/**
* Example value: "My Quality Gate"
*/
// POST api/qualitygates/create
message CreateResponse {
- optional string id = 1;
+ reserved 1; //drop id in web-api response
optional string name = 2;
}