Add console users screen (#2576)

This commit is contained in:
Pavlo Tkach
2024-10-08 16:00:47 +00:00
committed by GitHub
parent 5e41e84b8d
commit 6e77c89cd6
15 changed files with 298 additions and 82 deletions
@@ -372,6 +372,8 @@ credentialOAuth:
delegatedCredentialOauthScopes:
# View and manage groups on your domain in Directory API.
- https://www.googleapis.com/auth/admin.directory.group
# View and manage users in Google Workspace
- https://www.googleapis.com/auth/admin.directory.user
# View and manage group settings in Group Settings API.
- https://www.googleapis.com/auth/apps.groups.settings
# Send email through Gmail.
@@ -95,10 +95,18 @@ public class ConsoleUsersAction extends ConsoleApiAction {
@Override
protected void getHandler(User user) {
checkPermission(user, registrarId, ConsolePermission.MANAGE_USERS);
List<User> users =
List<ImmutableMap> users =
getAllUsers().stream()
.filter(u -> u.getUserRoles().getRegistrarRoles().containsKey(registrarId))
.map(
u ->
ImmutableMap.of(
"emailAddress",
u.getEmailAddress(),
"role",
u.getUserRoles().getRegistrarRoles().get(registrarId)))
.collect(Collectors.toList());
consoleApiParams.response().setPayload(gson.toJson(users));
consoleApiParams.response().setStatus(SC_OK);
}
@@ -141,7 +149,12 @@ public class ConsoleUsersAction extends ConsoleApiAction {
.setPayload(
gson.toJson(
ImmutableMap.of(
"password", newUser.getPassword(), "email", newUser.getPrimaryEmail())));
"password",
newUser.getPassword(),
"emailAddress",
newUser.getPrimaryEmail(),
"role",
ACCOUNT_MANAGER)));
}
private ImmutableList<User> getAllUsers() {
@@ -41,9 +41,7 @@ import google.registry.testing.FakeResponse;
import google.registry.util.StringGenerator;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Optional;
import java.util.stream.Collectors;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -117,9 +115,9 @@ class ConsoleUsersActionTest {
createAction(Optional.of(ConsoleApiParamsUtils.createFake(authResult)), Optional.of("GET"));
action.run();
var response = ((FakeResponse) consoleApiParams.response());
User[] users = GSON.fromJson(response.getPayload(), User[].class);
assertThat(Arrays.stream(users).map(u -> u.getEmailAddress()).collect(Collectors.toList()))
.containsExactlyElementsIn(ImmutableList.of("test1@test.com", "test2@test.com"));
assertThat(response.getPayload())
.isEqualTo(
"[{\"emailAddress\":\"test1@test.com\",\"role\":\"PRIMARY_CONTACT\"},{\"emailAddress\":\"test2@test.com\",\"role\":\"PRIMARY_CONTACT\"}]");
}
@Test
@@ -155,7 +153,8 @@ class ConsoleUsersActionTest {
var response = ((FakeResponse) consoleApiParams.response());
assertThat(response.getStatus()).isEqualTo(SC_OK);
assertThat(response.getPayload())
.contains("{\"password\":\"abcdefghijklmnop\",\"email\":\"email-1@email.com\"}");
.contains(
"{\"password\":\"abcdefghijklmnop\",\"emailAddress\":\"email-1@email.com\",\"role\":\"ACCOUNT_MANAGER\"}");
}
@Test