From c0d695b5148348b30ad86590b43d0fa5570cc936 Mon Sep 17 00:00:00 2001 From: Matteo Mara Date: Thu, 30 Mar 2023 08:20:41 +0200 Subject: [PATCH] SONAR-18752 Drop the id field in the response of multiple endpoints --- .../qualitygate/ws/GetByProjectActionIT.java | 2 -- .../server/qualitygate/ws/ListActionIT.java | 20 +++++++-------- .../server/qualitygate/ws/ShowActionIT.java | 5 +--- .../server/usergroups/ws/SearchActionIT.java | 25 ++++++++++--------- .../qualitygate/ws/GetByProjectAction.java | 2 +- .../server/qualitygate/ws/ListAction.java | 2 +- .../server/qualitygate/ws/ShowAction.java | 2 +- .../server/usergroups/ws/SearchAction.java | 2 +- .../server/usergroups/ws/search-example.json | 2 -- 9 files changed, 28 insertions(+), 34 deletions(-) diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/GetByProjectActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/GetByProjectActionIT.java index d1027c778ea..ed2702f76b6 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/GetByProjectActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/GetByProjectActionIT.java @@ -38,7 +38,6 @@ import org.sonar.server.ws.WsActionTester; import org.sonarqube.ws.Qualitygates; import org.sonarqube.ws.Qualitygates.GetByProjectResponse; -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.assertj.core.api.Assertions.tuple; @@ -97,7 +96,6 @@ public class GetByProjectActionIT { .executeProtobuf(GetByProjectResponse.class); Qualitygates.QualityGate qualityGate = result.getQualityGate(); - assertThat(qualityGate.getId()).isEqualTo(dbQualityGate.getUuid()); assertThat(qualityGate.getName()).isEqualTo(dbQualityGate.getName()); assertThat(qualityGate.getDefault()).isTrue(); } diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java index 446ba750b74..b5f66629aee 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java @@ -80,10 +80,10 @@ public class ListActionIT { .executeProtobuf(ListWsResponse.class); assertThat(response.getQualitygatesList()) - .extracting(QualityGate::getId, QualityGate::getName, QualityGate::getIsDefault) + .extracting(QualityGate::getName, QualityGate::getIsDefault) .containsExactlyInAnyOrder( - tuple(defaultQualityGate.getUuid(), defaultQualityGate.getName(), true), - tuple(otherQualityGate.getUuid(), otherQualityGate.getName(), false)); + tuple(defaultQualityGate.getName(), true), + tuple(otherQualityGate.getName(), false)); } @Test @@ -96,10 +96,10 @@ public class ListActionIT { .executeProtobuf(ListWsResponse.class); assertThat(response.getQualitygatesList()) - .extracting(QualityGate::getId, QualityGate::getIsBuiltIn) + .extracting(QualityGate::getName, QualityGate::getIsBuiltIn) .containsExactlyInAnyOrder( - tuple(qualityGate1.getUuid(), true), - tuple(qualityGate2.getUuid(), false)); + tuple(qualityGate1.getName(), true), + tuple(qualityGate2.getName(), false)); } @Test @@ -117,11 +117,11 @@ public class ListActionIT { .executeProtobuf(ListWsResponse.class); assertThat(response.getQualitygatesList()) - .extracting(QualityGate::getId, QualityGate::getCaycStatus) + .extracting(QualityGate::getName, QualityGate::getCaycStatus) .containsExactlyInAnyOrder( - tuple(qualityGate1.getUuid(), COMPLIANT.toString()), - tuple(qualityGate2.getUuid(), NON_COMPLIANT.toString()), - tuple(qualityGate3.getUuid(), OVER_COMPLIANT.toString())); + tuple(qualityGate1.getName(), COMPLIANT.toString()), + tuple(qualityGate2.getName(), NON_COMPLIANT.toString()), + tuple(qualityGate3.getName(), OVER_COMPLIANT.toString())); } @Test diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java index 01c45c7ff3d..b28d10f96f9 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java @@ -85,7 +85,6 @@ public class ShowActionIT { .setParam("name", qualityGate.getName()) .executeProtobuf(ShowWsResponse.class); - assertThat(response.getId()).isEqualTo(qualityGate.getUuid()); assertThat(response.getName()).isEqualTo(qualityGate.getName()); assertThat(response.getIsBuiltIn()).isFalse(); assertThat(response.getConditionsList()).hasSize(2); @@ -122,7 +121,7 @@ public class ShowActionIT { } @Test - public void show_by_id() { + public void show_by_name() { QualityGateDto qualityGate = db.qualityGates().insertQualityGate(); db.qualityGates().setDefaultQualityGate(qualityGate); @@ -130,7 +129,6 @@ public class ShowActionIT { .setParam("name", qualityGate.getName()) .executeProtobuf(ShowWsResponse.class); - assertThat(response.getId()).isEqualTo(qualityGate.getUuid()); assertThat(response.getName()).isEqualTo(qualityGate.getName()); } @@ -143,7 +141,6 @@ public class ShowActionIT { .setParam("name", qualityGate.getName()) .executeProtobuf(ShowWsResponse.class); - assertThat(response.getId()).isEqualTo(qualityGate.getUuid()); assertThat(response.getName()).isEqualTo(qualityGate.getName()); assertThat(response.getConditionsList()).isEmpty(); } diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/usergroups/ws/SearchActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/usergroups/ws/SearchActionIT.java index 93ebda9a07c..c8951c475cb 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/usergroups/ws/SearchActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/usergroups/ws/SearchActionIT.java @@ -83,6 +83,7 @@ public class SearchActionIT { assertThat(action.responseExampleAsString()).isNotEmpty(); assertThat(action.params()).hasSize(5); assertThat(action.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly( + tuple("10.0", "Field 'id' in the response has been removed"), tuple("10.0", "New parameter 'managed' to optionally search by managed status"), tuple("10.0", "Response includes 'managed' field."), tuple("8.4", "Field 'id' in the response is deprecated. Format changes from integer to string."), @@ -246,23 +247,23 @@ public class SearchActionIT { loginAsAdmin(); assertThat(call(ws.newRequest()).getGroupsList()) - .extracting(Group::hasId, Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) - .containsOnly(tuple(true, true, true, true, true)); + .extracting(Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) + .containsOnly(tuple(true, true, true, true)); assertThat(call(ws.newRequest().setParam(FIELDS, "")).getGroupsList()) - .extracting(Group::hasId, Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) - .containsOnly(tuple(true, true, true, true, true)); + .extracting(Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) + .containsOnly(tuple(true, true, true, true)); assertThat(call(ws.newRequest().setParam(FIELDS, "name")).getGroupsList()) - .extracting(Group::hasId, Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) - .containsOnly(tuple(true, true, false, false, false)); + .extracting(Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) + .containsOnly(tuple(true, false, false, false)); assertThat(call(ws.newRequest().setParam(FIELDS, "description")).getGroupsList()) - .extracting(Group::hasId, Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) - .containsOnly(tuple(true, false, true, false, false)); + .extracting(Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) + .containsOnly(tuple(false, true, false, false)); assertThat(call(ws.newRequest().setParam(FIELDS, "membersCount")).getGroupsList()) - .extracting(Group::hasId, Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) - .containsOnly(tuple(true, false, false, true, false)); + .extracting(Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) + .containsOnly(tuple(false, false, true, false)); assertThat(call(ws.newRequest().setParam(FIELDS, "managed")).getGroupsList()) - .extracting(Group::hasId, Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) - .containsOnly(tuple(true, false, false, false, true)); + .extracting(Group::hasName, Group::hasDescription, Group::hasMembersCount, Group::hasManaged) + .containsOnly(tuple(false, false, false, true)); } @Test diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/GetByProjectAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/GetByProjectAction.java index 4ae6c5dd037..3b3f53c96bf 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/GetByProjectAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/GetByProjectAction.java @@ -69,6 +69,7 @@ public class GetByProjectAction implements QualityGatesWsAction { .setResponseExample(getClass().getResource("get_by_project-example.json")) .setHandler(this) .setChangelog( + new Change("10.0", "Field 'id' in the response has been removed"), new Change("8.4", "Field 'id' in the response is deprecated. Format changes from integer to string."), new Change("6.6", "The parameter 'projectId' has been removed"), new Change("6.6", "The parameter 'projectKey' has been renamed to 'project'"), @@ -100,7 +101,6 @@ public class GetByProjectAction implements QualityGatesWsAction { GetByProjectResponse.Builder response = GetByProjectResponse.newBuilder(); response.getQualityGateBuilder() - .setId(qg.getUuid()) .setName(qg.getName()) .setDefault(qg.isDefault()); diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java index 8a6362d1686..4841361bb54 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java @@ -59,6 +59,7 @@ public class ListAction implements QualityGatesWsAction { .setSince("4.3") .setResponseExample(Resources.getResource(this.getClass(), "list-example.json")) .setChangelog( + new Change("10.0", "Field 'id' in the response has been removed"), new Change("9.9", "'caycStatus' field is added on quality gate"), new Change("8.4", "Field 'id' in the response is deprecated. Format changes from integer to string."), new Change("7.0", "'isDefault' field is added on quality gate"), @@ -84,7 +85,6 @@ public class ListAction implements QualityGatesWsAction { .setActions(ListWsResponse.RootActions.newBuilder().setCreate(wsSupport.isQualityGateAdmin())) .addAllQualitygates(qualityGates.stream() .map(qualityGate -> QualityGate.newBuilder() - .setId(qualityGate.getUuid()) .setName(qualityGate.getName()) .setIsDefault(qualityGate.getUuid().equals(defaultUuid)) .setIsBuiltIn(qualityGate.isBuiltIn()) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java index 361b793ad1e..3920cb3c2ac 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java @@ -68,6 +68,7 @@ public class ShowAction implements QualityGatesWsAction { .setSince("4.3") .setResponseExample(Resources.getResource(this.getClass(), "show-example.json")) .setChangelog( + new Change("10.0", "Field 'id' in the response has been removed"), 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."), @@ -109,7 +110,6 @@ public class ShowAction implements QualityGatesWsAction { private ShowWsResponse buildResponse(DbSession dbSession, QualityGateDto qualityGate, QualityGateDto defaultQualityGate, Collection conditions, Map metricsByUuid, QualityGateCaycStatus caycStatus) { return ShowWsResponse.newBuilder() - .setId(qualityGate.getUuid()) .setName(qualityGate.getName()) .setIsBuiltIn(qualityGate.isBuiltIn()) .setCaycStatus(caycStatus.toString()) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java index f34b123314a..5cc43f25ef7 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java @@ -85,6 +85,7 @@ public class SearchAction implements UserGroupsWsAction { .addPagingParams(100, MAX_PAGE_SIZE) .addSearchQuery("sonar-users", "names") .setChangelog( + new Change("10.0", "Field 'id' in the response has been removed"), new Change("10.0", "New parameter 'managed' to optionally search by managed status"), new Change("10.0", "Response includes 'managed' field."), new Change("8.4", "Field 'id' in the response is deprecated. Format changes from integer to string."), @@ -176,7 +177,6 @@ public class SearchAction implements UserGroupsWsAction { private static Group toWsGroup(GroupDto group, Integer memberCount, Boolean isManaged, Set fields, boolean isDefault) { Group.Builder groupBuilder = Group.newBuilder() - .setId(group.getUuid()) .setDefault(isDefault); if (fields.contains(FIELD_NAME)) { groupBuilder.setName(group.getName()); diff --git a/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/usergroups/ws/search-example.json b/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/usergroups/ws/search-example.json index a2bd06211c4..b33f9f15fe8 100644 --- a/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/usergroups/ws/search-example.json +++ b/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/usergroups/ws/search-example.json @@ -6,7 +6,6 @@ }, "groups": [ { - "id": "AU-Tpxb--iU5OvuD2FLy", "name": "sonar-users", "description": "Users", "membersCount": 17, @@ -14,7 +13,6 @@ "managed": false }, { - "id": "AU-Tpxb--iU5OvuD2FLz", "name": "administrators", "description": "Administrators", "membersCount": 2, -- 2.39.5