diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-09-06 08:38:34 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-09-06 08:38:34 +0200 |
commit | 4ebe1bc9da5bd338a2d221cebbf60949d9a229d0 (patch) | |
tree | aae665e24efe5cba2a8f1dce8a0dc95085044be0 | |
parent | 5549ed6df77e23249027fe204a683a15f604fe13 (diff) |
Revert "Return user object instead of user id from listUser in UserManagement (#10455)"
This reverts commit 5549ed6df77e23249027fe204a683a15f604fe13.
Sister PR broke unit tests
6 files changed, 10 insertions, 84 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java index 5ebea6c8d87..b6524deb4d1 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java @@ -1,6 +1,5 @@ package com.yahoo.vespa.hosted.controller.api.integration.stubs; -import com.yahoo.vespa.hosted.controller.api.integration.user.User; import com.yahoo.vespa.hosted.controller.api.integration.user.UserId; import com.yahoo.vespa.hosted.controller.api.integration.user.UserManagement; import com.yahoo.vespa.hosted.controller.api.role.Role; @@ -11,14 +10,13 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; /** * @author jonmv */ public class MockUserManagement implements UserManagement { - private final Map<Role, Set<User>> memberships = new HashMap<>(); + private final Map<Role, Set<UserId>> memberships = new HashMap<>(); @Override public void createRole(Role role) { @@ -35,10 +33,7 @@ public class MockUserManagement implements UserManagement { @Override public void addUsers(Role role, Collection<UserId> users) { - List<User> userObjs = users.stream() - .map(id -> new User(id.value(), id.value(), null, null)) - .collect(Collectors.toList()); - memberships.get(role).addAll(userObjs); + memberships.get(role).addAll(users); } @Override @@ -47,7 +42,7 @@ public class MockUserManagement implements UserManagement { } @Override - public List<User> listUsers(Role role) { + public List<UserId> listUsers(Role role) { return List.copyOf(memberships.get(role)); } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/User.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/User.java deleted file mode 100644 index 35dcd54799b..00000000000 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/User.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.yahoo.vespa.hosted.controller.api.integration.user; - -import java.util.Objects; - -public class User { - - private final String name; - private final String email; - private final String nickname; - private final String picture; - - public User(String email, String name, String nickname, String picture) { - Objects.requireNonNull(email); - Objects.requireNonNull(name); - - this.name = name; - this.email = email; - this.nickname = nickname; - this.picture = picture; - } - - public String name() { - return name; - } - - public String email() { - return email; - } - - public String nickname() { - return nickname; - } - - public String picture() { - return picture; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - User user = (User) o; - return Objects.equals(name, user.name) && - Objects.equals(email, user.email) && - Objects.equals(nickname, user.nickname) && - Objects.equals(picture, user.picture); - } - - @Override - public int hashCode() { - return Objects.hash(name, email, nickname, picture); - } -} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java index f56a9f66288..ff25e779d30 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java @@ -25,6 +25,6 @@ public interface UserManagement { void removeUsers(Role role, Collection<UserId> users); /** Returns all users in the given role, or throws if the role does not exist. */ - List<User> listUsers(Role role); + List<UserId> listUsers(Role role); } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java index c32ab6726e9..7a76f13392d 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java @@ -14,7 +14,6 @@ import com.yahoo.slime.Inspector; import com.yahoo.slime.Slime; import com.yahoo.vespa.config.SlimeUtils; import com.yahoo.vespa.hosted.controller.api.integration.user.Roles; -import com.yahoo.vespa.hosted.controller.api.integration.user.User; import com.yahoo.vespa.hosted.controller.api.integration.user.UserId; import com.yahoo.vespa.hosted.controller.api.integration.user.UserManagement; import com.yahoo.vespa.hosted.controller.api.role.Role; @@ -130,11 +129,11 @@ public class UserApiHandler extends LoggingRequestHandler { for (Role role : roles) rolesArray.addString(valueOf(role)); - Map<User, List<Role>> memberships = new LinkedHashMap<>(); + Map<UserId, List<Role>> memberships = new LinkedHashMap<>(); List<Role> allRoles = new ArrayList<>(superRoles); // Membership in a super role may imply membership in a role. allRoles.addAll(roles); for (Role role : allRoles) - for (User user : users.listUsers(role)) { + for (UserId user : users.listUsers(role)) { memberships.putIfAbsent(user, new ArrayList<>()); memberships.get(user).add(role); } @@ -142,15 +141,7 @@ public class UserApiHandler extends LoggingRequestHandler { Cursor usersArray = root.setArray("users"); memberships.forEach((user, userRoles) -> { Cursor userObject = usersArray.addObject(); - userObject.setString("name", user.name()); - userObject.setString("email", user.email()); - if (user.nickname() != null) { - userObject.setString("nickname", user.nickname()); - } - if (user.picture()!= null) { - userObject.setString("picture", user.picture()); - } - + userObject.setString("name", user.value()); Cursor rolesObject = userObject.setObject("roles"); for (Role role : roles) { Cursor roleObject = rolesObject.setObject(valueOf(role)); @@ -183,14 +174,12 @@ public class UserApiHandler extends LoggingRequestHandler { String roleName = require("roleName", Inspector::asString, requestObject); UserId user = new UserId(require("user", Inspector::asString, requestObject)); Role role = Roles.toRole(TenantName.from(tenantName), roleName); - List<User> currentUsers = users.listUsers(role); - if (role.definition() == RoleDefinition.tenantOwner - && currentUsers.size() == 1 - && currentUsers.get(0).email().equals(user.value())) + if ( role.definition() == RoleDefinition.tenantOwner + && users.listUsers(role).equals(List.of(user))) throw new IllegalArgumentException("Can't remove the last owner of a tenant."); users.removeUsers(role, List.of(user)); - return new MessageResponse(user+" is no longer a member of "+role); + return new MessageResponse(user + " is no longer a member of " + role); } private HttpResponse removeApplicationRoleMember(String tenantName, String applicationName, HttpRequest request) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/application-roles.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/application-roles.json index e23ab918135..45a5df5f6ce 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/application-roles.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/application-roles.json @@ -10,7 +10,6 @@ "users": [ { "name": "owner@tenant", - "email":"owner@tenant", "roles": { "applicationAdmin": { "explicit": false, @@ -32,7 +31,6 @@ }, { "name": "operator@tenant", - "email":"operator@tenant", "roles": { "applicationAdmin": { "explicit": true, @@ -54,7 +52,6 @@ }, { "name": "reader@app", - "email":"reader@app", "roles": { "applicationAdmin": { "explicit": false, diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-roles.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-roles.json index fa528fe2ab7..74e5196db6e 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-roles.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-roles.json @@ -8,7 +8,6 @@ "users": [ { "name": "owner@tenant", - "email":"owner@tenant", "roles": { "tenantOwner": { "explicit": true, @@ -26,7 +25,6 @@ }, { "name": "operator@tenant", - "email":"operator@tenant", "roles": { "tenantOwner": { "explicit": false, |