public String[] getGroups(Player player) { return player.getParents().stream() .map(SubjectReference::getSubjectIdentifier) .toArray(String[]::new); } }
public static String getHighestGroup(Player player) { try { if (!Sponge.getGame().getServiceManager().getRegistration(PermissionService.class).isPresent()) return ""; PermissionService ps = Sponge.getGame().getServiceManager().getRegistration(PermissionService.class).get().getProvider(); HashMap<Integer, Subject> subs = new HashMap<Integer, Subject>(); for (SubjectReference sub : player.getParents()) { if (sub.getCollectionIdentifier().equals(ps.getGroupSubjects().getIdentifier()) && (sub.getSubjectIdentifier() != null)) { Subject subj = sub.resolve().get(); subs.put(subj.getParents().size(), subj); } } return subs.isEmpty() ? "" : subs.get(Collections.max(subs.keySet())).getFriendlyIdentifier().isPresent() ? subs.get(Collections.max(subs.keySet())).getFriendlyIdentifier().get() : ""; } catch (InterruptedException | ExecutionException e) { } return ""; }
Player player2 = Mockito.mock(Player.class); List<SubjectReference> lsr = getSubjectReferences(parents); Mockito.when(player.getParents()).thenReturn(lsr); Mockito.when(player.getParents(Mockito.anySet())).thenReturn(lsr); Mockito.when(player2.getParents()).thenReturn(Lists.newArrayList()); Mockito.when(player2.getParents(Mockito.anySet())).thenReturn(Lists.newArrayList());
@Test @SuppressWarnings("all") public void testWeightsAreBeingAppliedCorrectly() { // Create two groups. Subject admin = createSubjectWithWeight("admin", 1); Subject ace = createSubjectWithWeight("ace", 0); // The player is in both groups. Also, order is important. List<Subject> parents = Lists.newArrayList(admin, ace); Player player = Mockito.mock(Player.class); List<SubjectReference> lsr = getSubjectReferences(parents); Mockito.when(player.getParents()).thenReturn(lsr); Mockito.when(player.getParents(Mockito.anySet())).thenReturn(lsr); // Create our map. Map<Player, List<String>> map = Maps.newHashMap(); map.put(player, Lists.newArrayList("admin", "ace")); // No aliases. Map<String, String> aliases = Maps.newHashMap(); // Now, let's run it through our method. Map<String, List<Player>> result = ListPlayerCommand.linkPlayersToGroups(parents, aliases, map); Assert.assertEquals("There should only be one entry", 1, result.size()); List<Player> players = result.get("admin"); Assert.assertNotNull("Players is null", players); Assert.assertEquals("There should only be one player!", 1, players.size()); Assert.assertTrue("map is not empty", map.isEmpty()); }
@Test @SuppressWarnings("all") public void testWeightsAreBeingAppliedCorrectlyWithAliases() { // Create two groups. Subject admin = createSubjectWithWeight("admin", 1); Subject ace = createSubjectWithWeight("ace", 0); // The player is in both groups. Also, order is important. List<Subject> parents = Lists.newArrayList(admin, ace); Player player = Mockito.mock(Player.class); List<SubjectReference> lsr = getSubjectReferences(parents); Mockito.when(player.getParents()).thenReturn(lsr); Mockito.when(player.getParents(Mockito.anySet())).thenReturn(lsr); // Create our map. Map<Player, List<String>> map = Maps.newHashMap(); map.put(player, Lists.newArrayList("admin", "ace")); // No aliases. Map<String, String> aliases = Maps.newHashMap(); aliases.put("admin", "Admin"); aliases.put("ace", "Ace"); // Now, let's run it through our method. Map<String, List<Player>> result = ListPlayerCommand.linkPlayersToGroups(parents, aliases, map); Assert.assertEquals("There should only be one entry", 1, result.size()); List<Player> players = result.get("Admin"); Assert.assertNotNull("Players is null", players); Assert.assertEquals("There should only be one player!", 1, players.size()); Assert.assertTrue("map is not empty", map.isEmpty()); }
@Test @SuppressWarnings("all") public void testWeightsAreBeingAppliedCorrectlyWithReversedGroupsInList() { // Create two groups. Subject admin = createSubjectWithWeight("admin", 1); Subject ace = createSubjectWithWeight("ace", 0); // Order of groups to check for. List<Subject> order = Lists.newArrayList(admin, ace); // The player is in both groups. List<Subject> parents = Lists.newArrayList(ace, admin); Player player = Mockito.mock(Player.class); List<SubjectReference> lsr = getSubjectReferences(parents); Mockito.when(player.getParents()).thenReturn(lsr); Mockito.when(player.getParents(Mockito.anySet())).thenReturn(lsr); // Create our map. Map<Player, List<String>> map = Maps.newHashMap(); map.put(player, Lists.newArrayList("ace", "admin")); // No aliases. Map<String, String> aliases = Maps.newHashMap(); // Now, let's run it through our method. Map<String, List<Player>> result = ListPlayerCommand.linkPlayersToGroups(order, aliases, map); Assert.assertEquals("There should only be one entry", 1, result.size()); List<Player> players = result.get("admin"); Assert.assertNotNull("Players is null", players); Assert.assertEquals("There should only be one player!", 1, players.size()); Assert.assertTrue("map is not empty", map.isEmpty()); }