Sfoglia il codice sorgente

SONAR-9016 Return 'default' in api/user_groups/create WS

tags/6.4-RC1
Julien Lancelot 7 anni fa
parent
commit
e550af84ee

+ 2
- 1
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/CreateAction.java Vedi 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);
}
}

+ 5
- 5
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java Vedi 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;
}


+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java Vedi 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);
}


+ 2
- 1
server/sonar-server/src/main/resources/org/sonar/server/usergroups/ws/create-example.json Vedi 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
}
}

+ 20
- 0
server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/CreateActionTest.java Vedi 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");
}

+ 1
- 0
sonar-ws/src/main/protobuf/ws-user_groups.proto Vedi File

@@ -48,4 +48,5 @@ message Group {
optional string name = 3;
optional string description = 4;
optional int32 membersCount = 5;
optional bool default = 6;
}

Loading…
Annulla
Salva