]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-9016 Return 'default' in api/user_groups/create WS
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 3 Apr 2017 12:46:58 +0000 (14:46 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 13 Apr 2017 09:51:55 +0000 (11:51 +0200)
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/CreateAction.java
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
server/sonar-server/src/main/resources/org/sonar/server/usergroups/ws/create-example.json
server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/CreateActionTest.java
sonar-ws/src/main/protobuf/ws-user_groups.proto

index ca57ed969319be0ab3a5f11ba396a29fae13b770..554adff2c4dc33da1667c9c9f62b64bc01d7b9ec 100644 (file)
@@ -104,7 +104,8 @@ public class CreateAction implements UserGroupsWsAction {
 
   private void writeResponse(Request request, Response response, OrganizationDto organization, GroupDto group) {
     WsUserGroups.CreateWsResponse.Builder respBuilder = WsUserGroups.CreateWsResponse.newBuilder();
-    respBuilder.setGroup(toProtobuf(organization, group, 0));
+    // 'default' is always false as it's not possible to create a default group
+    respBuilder.setGroup(toProtobuf(organization, group, 0, false));
     writeProtobuf(respBuilder.build(), request, response);
   }
 }
index 2fa8788bc5b5fb77b466aeec0ad6eb3ced80b18f..f088eb21373c7f97508962f01a7430ba2dc5354f 100644 (file)
@@ -34,6 +34,7 @@ import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonarqube.ws.WsUserGroups;
 
 import static com.google.common.base.Preconditions.checkArgument;
+import static org.sonar.core.util.Protobuf.setNullable;
 import static org.sonar.server.user.UserUpdater.SONAR_USERS_GROUP_NAME;
 import static org.sonar.server.ws.WsUtils.checkFound;
 import static org.sonar.server.ws.WsUtils.checkFoundWithOptional;
@@ -152,15 +153,14 @@ public class GroupWsSupport {
     checkArgument(!SONAR_USERS_GROUP_NAME.equals(groupDto.getName()), "Default group '%s' cannot be used to perform this action", SONAR_USERS_GROUP_NAME);
   }
 
-  static WsUserGroups.Group.Builder toProtobuf(OrganizationDto organization, GroupDto group, int membersCount) {
+  static WsUserGroups.Group.Builder toProtobuf(OrganizationDto organization, GroupDto group, int membersCount, boolean isDefault) {
     WsUserGroups.Group.Builder wsGroup = WsUserGroups.Group.newBuilder()
       .setId(group.getId())
       .setOrganization(organization.getKey())
       .setName(group.getName())
-      .setMembersCount(membersCount);
-    if (group.getDescription() != null) {
-      wsGroup.setDescription(group.getDescription());
-    }
+      .setMembersCount(membersCount)
+      .setDefault(isDefault);
+    setNullable(group.getDescription(), wsGroup::setDescription);
     return wsGroup;
   }
 
index 97713d237f835cae1d9f9bff2591ac45462c9ab1..57b7191fbd9fda30bb0b49e6ac2e018fdfca3fcb 100644 (file)
@@ -130,7 +130,7 @@ public class UpdateAction implements UserGroupsWsAction {
     int membersCount = dbClient.groupMembershipDao().countMembers(dbSession, query);
 
     WsUserGroups.UpdateWsResponse.Builder respBuilder = WsUserGroups.UpdateWsResponse.newBuilder();
-    respBuilder.setGroup(toProtobuf(organization, group, membersCount));
+    respBuilder.setGroup(toProtobuf(organization, group, membersCount, false));
     writeProtobuf(respBuilder.build(), request, response);
   }
 
index 91ea7df4d1ac455012dc6ffddc45bf214aa83b0a..909f1491ab62fbdf35b72dba3c7c4fb9abb5d7e4 100644 (file)
@@ -4,6 +4,7 @@
     "organization": "my-org",
     "name": "some-product-bu",
     "description": "Business Unit for Some Awesome Product",
-    "membersCount": 0
+    "membersCount": 0,
+    "default": false
   }
 }
index ba6b7b9040fb19004f84fce1e87b575ee3e99669..7bbcaf7a7323eee92bee68ca05c444fcc006e04e 100644 (file)
@@ -99,6 +99,25 @@ public class CreateActionTest {
     assertThat(createdGroup.getOrganizationUuid()).isEqualTo(org.getUuid());
   }
 
+  @Test
+  public void return_default_field() throws Exception {
+    loginAsAdminOnDefaultOrganization();
+
+    newRequest()
+      .setParam("name", "some-product-bu")
+      .setParam("description", "Business Unit for Some Awesome Product")
+      .execute()
+      .assertJson("{" +
+        "  \"group\": {" +
+        "    \"organization\": \"" + getDefaultOrganization().getKey() + "\"," +
+        "    \"name\": \"some-product-bu\"," +
+        "    \"description\": \"Business Unit for Some Awesome Product\"," +
+        "    \"membersCount\": 0," +
+        "    \"default\": false" +
+        "  }" +
+        "}");
+  }
+
   @Test
   public void fail_if_not_administrator() throws Exception {
     userSession.logIn("not-admin");
@@ -210,6 +229,7 @@ public class CreateActionTest {
       .execute();
   }
 
+
   private WsTester.TestRequest newRequest() {
     return ws.newPostRequest("api/user_groups", "create");
   }
index d9fc797f4840b4c3e416aa820542a9fbd5166674..25c7704ce9f6f4f8bc20c85e4ae09555ba786c9b 100644 (file)
@@ -48,4 +48,5 @@ message Group {
   optional string name = 3;
   optional string description = 4;
   optional int32 membersCount = 5;
+  optional bool default = 6;
 }