--- a/server/src/main/java/org/iri_research/renkan/controller/admin/GroupsAdminController.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/controller/admin/GroupsAdminController.java Tue Jan 14 18:02:42 2014 +0100
@@ -16,6 +16,7 @@
import org.iri_research.renkan.forms.GroupFormValidator;
import org.iri_research.renkan.models.Group;
import org.iri_research.renkan.repositories.GroupsRepository;
+import org.iri_research.renkan.repositories.UsersRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.propertyeditors.StringTrimmerEditor;
@@ -46,6 +47,9 @@
@Inject
private GroupsRepository groupsRepository;
+ @Inject
+ private UsersRepository usersRepository;
+
@InitBinder(value = { "group" })
protected void initBinder(WebDataBinder binder) {
@@ -94,6 +98,7 @@
groupForm = new GroupForm(group);
model.addAttribute("group", groupForm);
+ model.addAttribute("allUsers", this.usersRepository.findAll());
return "admin/groupEdit";
}
--- a/server/src/main/java/org/iri_research/renkan/controller/admin/UsersAdminController.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/controller/admin/UsersAdminController.java Tue Jan 14 18:02:42 2014 +0100
@@ -18,6 +18,7 @@
import org.iri_research.renkan.forms.UserForm;
import org.iri_research.renkan.forms.UserFormValidator;
import org.iri_research.renkan.models.User;
+import org.iri_research.renkan.repositories.GroupsRepository;
import org.iri_research.renkan.repositories.ProjectsRepository;
import org.iri_research.renkan.repositories.UsersRepository;
import org.slf4j.Logger;
@@ -54,6 +55,9 @@
@Inject
private ProjectsRepository projectsRepository;
+ @Inject
+ private GroupsRepository groupsRepository;
+
@Resource(name="renkanPasswordEncoder")
private PasswordEncoder passwordEncoder;
@@ -105,6 +109,7 @@
userForm = new UserForm(user);
model.addAttribute("user", userForm);
+ model.addAttribute("allGroups", this.groupsRepository.findAll());
return "admin/userEdit";
}
--- a/server/src/main/java/org/iri_research/renkan/forms/GroupForm.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/forms/GroupForm.java Tue Jan 14 18:02:42 2014 +0100
@@ -1,7 +1,7 @@
package org.iri_research.renkan.forms;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
import org.iri_research.renkan.Constants;
import org.iri_research.renkan.models.Group;
@@ -12,7 +12,7 @@
public class GroupForm extends RenkanForm<String, Group> {
private String avatar;
- private List<String> users;
+ private Set<String> users;
private GroupsRepository groupsRepository;
@@ -25,7 +25,7 @@
super(model);
if (model != null) {
this.avatar = model.getAvatar();
- this.setUsers(new ArrayList<String>());
+ this.setUsers(new HashSet<>(model.getUsers()));
if(model.getUsers() != null) {
this.getUsers().addAll(model.getUsers());
}
@@ -72,11 +72,11 @@
this.groupsRepository = groupsRepository;
}
- public List<String> getUsers() {
+ public Set<String> getUsers() {
return users;
}
- public void setUsers(List<String> users) {
+ public void setUsers(Set<String> users) {
this.users = users;
}
--- a/server/src/main/java/org/iri_research/renkan/forms/UserForm.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/forms/UserForm.java Tue Jan 14 18:02:42 2014 +0100
@@ -1,7 +1,9 @@
package org.iri_research.renkan.forms;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.iri_research.renkan.Constants;
import org.iri_research.renkan.models.User;
@@ -28,6 +30,7 @@
private boolean locked;
private String password;
private String passwordConfirm;
+ private Set<String> groups;
private List<String> userAuthorities;
private UsersRepository usersRepository;
@@ -53,6 +56,7 @@
this.enabled = model.isEnabled();
this.locked = model.isLocked();
this.userAuthorities = model.getUserAuthorities()!=null?new ArrayList<String>(model.getUserAuthorities()):new ArrayList<String>();
+ this.setGroups(new HashSet<>(model.getGroups()));
}
}
@@ -114,6 +118,9 @@
this.model.setEnabled(this.enabled);
this.model.setLocked(this.locked);
this.model.setUserAuthorities((this.userAuthorities!=null && !this.userAuthorities.isEmpty())?new ArrayList<String>(this.userAuthorities):null);
+ if(this.getGroups() != null) {
+ this.usersRepository.setGroupsList(this.model, this.getGroups());
+ }
if(this.password != null && this.password.length() > 0) {
this.model.setPassword(this.passwordEncoder.encode(this.password));
}
@@ -165,4 +172,12 @@
this.userAuthorities = userAuthorities;
}
+ public Set<String> getGroups() {
+ return groups;
+ }
+
+ public void setGroups(Set<String> groups) {
+ this.groups = groups;
+ }
+
}
--- a/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryCustom.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryCustom.java Tue Jan 14 18:02:42 2014 +0100
@@ -1,9 +1,17 @@
package org.iri_research.renkan.repositories;
-import java.util.List;
+import java.util.Collection;
+import java.util.Map;
import org.iri_research.renkan.models.Group;
+import org.iri_research.renkan.models.User;
public interface GroupsRepositoryCustom {
- public void setUsersList(Group group, List<String> userIds);
+ /**
+ * Set the list of user for the group
+ * @param group: the group.
+ * @param userIds: the collection of user ids. This parameter must not be null.
+ */
+ public void setUsersList(Group group, Collection<String> userIds);
+ public Map<String, User> getUsersMap(Group group);
}
--- a/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryImpl.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryImpl.java Tue Jan 14 18:02:42 2014 +0100
@@ -1,7 +1,10 @@
package org.iri_research.renkan.repositories;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.commons.collections4.IteratorUtils;
import org.iri_research.renkan.models.Group;
@@ -18,7 +21,9 @@
@Override
// TODO: implement a transaction mecanism...
- public void setUsersList(Group group, List<String> userIds) {
+ public void setUsersList(Group group, Collection<String> userIds) {
+
+ assert userIds != null : "list of user ids must not be null";
// takes previous user list
List<String> oldUsers = new ArrayList<>(group.getUsers());
@@ -47,4 +52,15 @@
this.groupsRepository.save(group);
}
+ @Override
+ public Map<String, User> getUsersMap(Group group) {
+ HashMap<String, User> res = new HashMap<>(group.getUsers().size());
+
+ for (User user : this.usersRepository.findAll(group.getUsers())) {
+ res.put(user.getId(), user);
+ }
+
+ return res;
+ }
+
}
--- a/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryCustom.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryCustom.java Tue Jan 14 18:02:42 2014 +0100
@@ -1,9 +1,17 @@
package org.iri_research.renkan.repositories;
-import java.util.List;
+import java.util.Collection;
+import java.util.Map;
+import org.iri_research.renkan.models.Group;
import org.iri_research.renkan.models.User;
public interface UsersRepositoryCustom {
- public void setGroupsList(User user, List<String> groupIds);
+ /**
+ * Set the users group list.
+ * @param user : the user
+ * @param groupIds : the list of group ids. this parameter must not be null.
+ */
+ public void setGroupsList(User user, Collection<String> groupIds);
+ public Map<String, Group> getGroupsMap(User user);
}
--- a/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryImpl.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryImpl.java Tue Jan 14 18:02:42 2014 +0100
@@ -1,7 +1,10 @@
package org.iri_research.renkan.repositories;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.commons.collections4.IteratorUtils;
import org.iri_research.renkan.models.Group;
@@ -18,7 +21,9 @@
@Override
// TODO: implement a transaction mecanism...
- public void setGroupsList(User user, List<String> groupIds) {
+ public void setGroupsList(User user, Collection<String> groupIds) {
+
+ assert groupIds != null : "list of group ids must not be null";
// takes previous user list
List<String> oldGroups = new ArrayList<>(user.getGroups());
@@ -47,4 +52,15 @@
this.usersRepository.save(user);
}
+ @Override
+ public Map<String, Group> getGroupsMap(User user) {
+ HashMap<String, Group> res = new HashMap<>(user.getGroups().size());
+
+ for (Group group : this.groupsRepository.findAll(user.getGroups())) {
+ res.put(group.getId(), group);
+ }
+
+ return res;
+ }
+
}
--- a/server/src/main/webapp/WEB-INF/i18n/messages.properties Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/webapp/WEB-INF/i18n/messages.properties Tue Jan 14 18:02:42 2014 +0100
@@ -70,7 +70,7 @@
renkanAdmin.form.space.compact = Compact
renkanAdmin.form.avatar = Avatar
-renkanAdmin.form.credentialExpirationDate = Cred. exp. date
+renkanAdmin.form.credentialsExpirationDate = Cred. exp. date
renkanAdmin.form.expirationDate = Exp. date
renkanAdmin.form.email = Email
renkanAdmin.form.enabled = Enabled
@@ -78,6 +78,8 @@
renkanAdmin.form.password = Password
renkanAdmin.form.passwordConfirm = Confirm password
renkanAdmin.form.roles = Roles
+renkanAdmin.form.groups = Groups
+renkanAdmin.form.users = Users
renkanAdmin.form.user.submit = Ok
renkan.error.title.empty = Title must not be empty or null
--- a/server/src/main/webapp/WEB-INF/i18n/messages_en.properties Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/webapp/WEB-INF/i18n/messages_en.properties Tue Jan 14 18:02:42 2014 +0100
@@ -79,7 +79,7 @@
renkanAdmin.user_confirm_delete = Do you want to delete the user with username "{0}" ?
renkanAdmin.form.avatar = Avatar
-renkanAdmin.form.credentialExpirationDate = Cred. exp. date
+renkanAdmin.form.credentialsExpirationDate = Cred. exp. date
renkanAdmin.form.expirationDate = Exp. date
renkanAdmin.form.email = Email
renkanAdmin.form.enabled = Enabled
@@ -87,6 +87,8 @@
renkanAdmin.form.password = Password
renkanAdmin.form.passwordConfirm = Confirm password
renkanAdmin.form.roles = Roles
+renkanAdmin.form.groups = Groups
+renkanAdmin.form.users = Users
renkanAdmin.form.user.submit = Ok
--- a/server/src/main/webapp/WEB-INF/i18n/messages_fr.properties Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/webapp/WEB-INF/i18n/messages_fr.properties Tue Jan 14 18:02:42 2014 +0100
@@ -77,7 +77,7 @@
renkanAdmin.user_confirm_delete = Do you want to delete the user with username "{0}" ?
renkanAdmin.form.avatar = Avatar
-renkanAdmin.form.credentialExpirationDate = Date exp. mdp.
+renkanAdmin.form.credentialsExpirationDate = Date exp. mdp.
renkanAdmin.form.expirationDate = Date exp.
renkanAdmin.form.email = Email
renkanAdmin.form.enabled = Actif
@@ -85,6 +85,8 @@
renkanAdmin.form.password = Mot de passe
renkanAdmin.form.passwordConfirm = Conf. mot de passe
renkanAdmin.form.roles = RĂ´les
+renkanAdmin.form.groups = Groupes
+renkanAdmin.form.users = Utilisateurs
renkanAdmin.form.user.submit = Ok
--- a/server/src/main/webapp/WEB-INF/templates/admin/groupsList.html Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/webapp/WEB-INF/templates/admin/groupsList.html Tue Jan 14 18:02:42 2014 +0100
@@ -21,7 +21,7 @@
<h1><a href="renkanIndex.html" th:href="@{/admin}" th:text="#{renkanAdmin.renkan_admin}" id="home-link">Renkan administration</a></h1>
<div id="headerNav" th:include="fragment/pageFragment :: headerNavFragment"></div>
</header>
- <h2 th:text="#{renkanAdmin.object_list(#{renkanAdmin.user_objects_name})}">List of objects</h2>
+ <h2 th:text="#{renkanAdmin.object_list(#{renkanAdmin.group_objects_name})}">List of objects</h2>
<div th:include="fragment/paginationFragment :: paginationFragment" class="pagination-container">
<div>
<a href="#?p.page=1"><<</a>
--- a/server/src/main/webapp/WEB-INF/templates/fragment/groupForm.html Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/webapp/WEB-INF/templates/fragment/groupForm.html Tue Jan 14 18:02:42 2014 +0100
@@ -65,6 +65,13 @@
<label for="avatar" th:text="#{renkanAdmin.form.avatar}">Avatar: </label>
<input type="text" th:field="*{avatar}" />
</div>
+<!-- todo: only user managing the group can see that -->
+ <div>
+ <label for="users" th:text="#{renkanAdmin.form.users}">Groups: </label>
+ <select th:field="*{users}" multiple="multiple">
+ <option th:each="user: ${allUsers}" th:value="${user.id}" th:text="${user.title}">USER</option>
+ </select>
+ </div>
<div class="submit">
<button type="submit" name="save" th:text="#{renkanAdmin.form.user.submit}">Save</button>
<!--button type="button" name="cancel" th:text="#{renkanAdmin.form.user.cancel}" th:onclick="location">Cancel</button-->
--- a/server/src/main/webapp/WEB-INF/templates/fragment/userForm.html Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/webapp/WEB-INF/templates/fragment/userForm.html Tue Jan 14 18:02:42 2014 +0100
@@ -130,6 +130,13 @@
<label for="locked" th:text="#{renkanAdmin.form.locked}">Locked: </label>
<input type="checkbox" th:field="*{locked}" />
</div>
+<!-- todo: only user of admin group can see that -->
+ <div>
+ <label for="groups" th:text="#{renkanAdmin.form.groups}">Groups: </label>
+ <select th:field="*{groups}" multiple="multiple">
+ <option th:each="group: ${allGroups}" th:value="${group.id}" th:text="${group.title}">GROUP</option>
+ </select>
+ </div>
<div>
<label for="userAuthorities" th:text="#{renkanAdmin.form.roles}">Roles: </label>
<select th:field="*{userAuthorities}" multiple="multiple">
--- a/server/src/main/webapp/static/css/index.css Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/main/webapp/static/css/index.css Tue Jan 14 18:02:42 2014 +0100
@@ -269,7 +269,7 @@
float: left;
}
-.form-fields input, .form-fields textarea {
+.form-fields input, .form-fields textarea, .form-fields select {
width:200px;
}
--- a/server/src/test/java/org/iri_research/renkan/test/controller/GroupsAdminControllerTest.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/test/java/org/iri_research/renkan/test/controller/GroupsAdminControllerTest.java Tue Jan 14 18:02:42 2014 +0100
@@ -447,5 +447,38 @@
this.groupsRepository.count());
}
+
+ @Test
+ public void testUpdateUserGroups() throws Exception {
+
+ MockHttpServletRequestBuilder post = MockMvcRequestBuilders
+ .post("/admin/groups/save");
+ post = post.param("id", this.groupsUuids.get(0));
+ post = post.param("title", "New name");
+ post = post.param("description", "New description");
+ post = post.param("uri", "http://ldt.iri.centrepompidou.fr/new/uri");
+ post = post.param("color", "#ffffff");
+ post = post.param("users", this.usersUuids.toArray(new String[GroupsAdminControllerTest.GROUP_NB]));
+
+ this.mvc.perform(post)
+ .andExpect(MockMvcResultMatchers.status().isSeeOther())
+ .andExpect(MockMvcResultMatchers.redirectedUrl("/admin/groups"));
+
+ Group group = this.groupsRepository.findOne(this.groupsUuids.get(0));
+
+ Assert.assertNotNull("Should find group", group);
+ Assert.assertEquals("Title equals", "New name", group.getTitle());
+ Assert.assertEquals("Description equals", "New description",
+ group.getDescription());
+ Assert.assertEquals("Uri equals",
+ "http://ldt.iri.centrepompidou.fr/new/uri", group.getUri());
+ Assert.assertEquals("Color equals", "#ffffff", group.getColor());
+
+ Assert.assertNotNull("Users must be set", group.getUsers());
+ Assert.assertEquals("all users must be set", USER_NB, group.getUsers().size());
+ Assert.assertTrue("users list must contains all users", this.usersUuids.containsAll(group.getUsers()));
+
+ }
+
}
--- a/server/src/test/java/org/iri_research/renkan/test/controller/UsersAdminControllerTest.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/test/java/org/iri_research/renkan/test/controller/UsersAdminControllerTest.java Tue Jan 14 18:02:42 2014 +0100
@@ -9,9 +9,11 @@
import java.util.UUID;
import org.apache.commons.codec.binary.Hex;
+import org.iri_research.renkan.models.Group;
import org.iri_research.renkan.models.Project;
import org.iri_research.renkan.models.Space;
import org.iri_research.renkan.models.User;
+import org.iri_research.renkan.repositories.GroupsRepository;
import org.iri_research.renkan.repositories.ProjectsRepository;
import org.iri_research.renkan.repositories.SpacesRepository;
import org.iri_research.renkan.repositories.UsersRepository;
@@ -49,6 +51,7 @@
private final static int SPACE_NB = 3;
private final static int USER_NB = 3;
+ private final static int GROUP_NB = 4;
private Logger logger = LoggerFactory.getLogger(UsersAdminControllerTest.class);
@@ -58,7 +61,10 @@
private ProjectsRepository projectsRepository;
@Autowired
private UsersRepository usersRepository;
-
+ @Autowired
+ private GroupsRepository groupsRepository;
+
+
@Autowired
private PasswordEncoder renkanPasswordEncoder;
@@ -70,6 +76,8 @@
private Map<String, User> usersList = new HashMap<String, User>(USER_NB);
private List<String> usersUuids = new ArrayList<>(USER_NB);
+ private Map<String, Group> groupsList = new HashMap<String, Group>(GROUP_NB);
+ private List<String> groupsUuids = new ArrayList<>(GROUP_NB);
@Autowired
private WebApplicationContext context;
@@ -98,6 +106,21 @@
this.usersList.put(uuid, user);
}
+ for(int i=0; i < GROUP_NB; i++) {
+ String uuid = UUID.randomUUID().toString();
+ Group group = new Group(uuid, "group" + i, "Group nb " + i, "http://www.iri.centrepompidou.fr/group/"+uuid, "#ababab");
+ group.setAvatar("A pretty group picture " + i);
+ group = groupsRepository.save(group);
+ this.groupsUuids.add(uuid);
+ this.groupsList.put(uuid, group);
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ }
+
ArrayList<Project> pl = new ArrayList<Project>();
for (int i = 0; i < SPACE_NB; i++) {
DateTime creationDate = new DateTime();
@@ -490,5 +513,37 @@
this.usersRepository.count());
}
+
+ @Test
+ public void testUpdateUserGroups() throws Exception {
+
+ MockHttpServletRequestBuilder post = MockMvcRequestBuilders
+ .post("/admin/users/save");
+ post = post.param("id", this.usersUuids.get(0));
+ post = post.param("title", "New name");
+ post = post.param("description", "New description");
+ post = post.param("uri", "http://ldt.iri.centrepompidou.fr/new/uri");
+ post = post.param("color", "#ffffff");
+ post = post.param("groups", this.groupsUuids.toArray(new String[UsersAdminControllerTest.GROUP_NB]));
+
+ this.mvc.perform(post)
+ .andExpect(MockMvcResultMatchers.status().isSeeOther())
+ .andExpect(MockMvcResultMatchers.redirectedUrl("/admin/users"));
+
+ User user = this.usersRepository.findOne(this.usersUuids.get(0));
+
+ Assert.assertNotNull("Should find user", user);
+ Assert.assertEquals("Title equals", "New name", user.getTitle());
+ Assert.assertEquals("Description equals", "New description",
+ user.getDescription());
+ Assert.assertEquals("Uri equals",
+ "http://ldt.iri.centrepompidou.fr/new/uri", user.getUri());
+ Assert.assertEquals("Color equals", "#ffffff", user.getColor());
+
+ Assert.assertNotNull("Groups must be set", user.getGroups());
+ Assert.assertEquals("all users must be set", GROUP_NB, user.getGroups().size());
+ Assert.assertTrue("users list must contains all users", this.groupsUuids.containsAll(user.getGroups()));
+
+ }
}
--- a/server/src/test/java/org/iri_research/renkan/test/repositories/GroupsRepositoryTest.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/test/java/org/iri_research/renkan/test/repositories/GroupsRepositoryTest.java Tue Jan 14 18:02:42 2014 +0100
@@ -4,6 +4,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.TimeZone;
import java.util.UUID;
@@ -356,6 +357,29 @@
}
}
+
+ @Test
+ public void testGetUsersMap() {
+
+ Group group = this.groupsList.get(this.groupsUuids.get(0));
+
+ List<String> userIds = this.usersUuids;
+
+ this.groupsRepository.setUsersList(group, userIds);
+
+
+ Map<String, User> usersMap = this.groupsRepository.getUsersMap(group);
+
+ Assert.assertEquals ("user map should have same length than users list", this.usersUuids.size(), usersMap.size());
+ Assert.assertTrue("user map should contains all uuids", this.usersUuids.containsAll(usersMap.keySet()));
+ for (Entry<String, User> entry : usersMap.entrySet()) {
+ User user = entry.getValue();
+ String userId = entry.getKey();
+ Assert.assertTrue("user id in user uuid", this.usersUuids.contains(userId));
+ Assert.assertEquals("key id and value user id must be the same", userId, user.getId());
+ }
+
+ }
@After
--- a/server/src/test/java/org/iri_research/renkan/test/repositories/UsersRepositoryTest.java Mon Jan 06 10:06:50 2014 +0100
+++ b/server/src/test/java/org/iri_research/renkan/test/repositories/UsersRepositoryTest.java Tue Jan 14 18:02:42 2014 +0100
@@ -6,6 +6,7 @@
import java.util.Map;
import java.util.TimeZone;
import java.util.UUID;
+import java.util.Map.Entry;
import org.iri_research.renkan.models.Group;
import org.iri_research.renkan.models.User;
@@ -371,6 +372,26 @@
}
+ @Test
+ public void testGetUsersMap() {
+
+ User user = this.usersList.get(this.usersUuids.get(0));
+
+ List<String> groupdIds = this.groupsUuids;
+
+ this.usersRepository.setGroupsList(user, groupdIds);
+
+
+ Map<String, Group> groupsMap = this.usersRepository.getGroupsMap(user);
+
+ Assert.assertEquals ("Group map should have same length than groups list", this.groupsUuids.size(), groupsMap.size());
+ Assert.assertTrue("Group map should contains all uuids", this.groupsUuids.containsAll(groupsMap.keySet()));
+ for (Entry<String, Group> entry : groupsMap.entrySet()) {
+ Assert.assertTrue("user id in user uuid", this.groupsUuids.contains(entry.getKey()));
+ Assert.assertEquals("key id and value user id must be the same", entry.getKey(), entry.getValue().getId());
+ }
+ }
+
@After
public void teardown() {