@@ -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); | |||
} | |||
} |
@@ -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; | |||
} | |||
@@ -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); | |||
} | |||
@@ -4,6 +4,7 @@ | |||
"organization": "my-org", | |||
"name": "some-product-bu", | |||
"description": "Business Unit for Some Awesome Product", | |||
"membersCount": 0 | |||
"membersCount": 0, | |||
"default": false | |||
} | |||
} |
@@ -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"); | |||
} |
@@ -48,4 +48,5 @@ message Group { | |||
optional string name = 3; | |||
optional string description = 4; | |||
optional int32 membersCount = 5; | |||
optional bool default = 6; | |||
} |