@Before
  public void before() throws Exception {
    mockPermissionsManager = mock(PermissionsManager.class);
    mockUserProfileManager = mock(UserProfileManager.class);

    // Create UserGroups
    Collection<UserGroup> groups = new HashSet<UserGroup>();
    for (int i = 0; i < 10; i++) {
      UserGroup g = new UserGroup();
      g.setId("g" + i);
      g.setIsIndividual(false);
      g.setName("Group " + i);
      groups.add(g);
    }

    // Create UserProfiles
    List<UserProfile> list = new ArrayList<UserProfile>();
    for (int i = 0; i < 10; i++) {
      UserProfile p = new UserProfile();
      p.setOwnerId("p" + i);
      p.setDisplayName("User " + i);
      list.add(p);
    }
    // extra profile with duplicated name
    UserProfile p = new UserProfile();
    p.setOwnerId("p0_duplicate");
    p.setDisplayName("User 0");
    list.add(p);
    QueryResults<UserProfile> profiles = new QueryResults<UserProfile>(list, list.size());

    when(mockPermissionsManager.getGroups()).thenReturn(groups);
    when(mockUserProfileManager.getInRange(any(UserInfo.class), anyLong(), anyLong()))
        .thenReturn(profiles);
    when(mockUserProfileManager.getInRange(any(UserInfo.class), anyLong(), anyLong(), eq(true)))
        .thenReturn(profiles);

    userProfileService.setPermissionsManager(mockPermissionsManager);
    userProfileService.setUserProfileManager(mockUserProfileManager);
  }