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);
}
}
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;
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;
}
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);
}
"organization": "my-org",
"name": "some-product-bu",
"description": "Business Unit for Some Awesome Product",
- "membersCount": 0
+ "membersCount": 0,
+ "default": false
}
}
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");
.execute();
}
+
private WsTester.TestRequest newRequest() {
return ws.newPostRequest("api/user_groups", "create");
}
optional string name = 3;
optional string description = 4;
optional int32 membersCount = 5;
+ optional bool default = 6;
}