mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2025-02-04 06:21:28 +01:00
Fixes handling of negative perms for value setting
https://github.com/BentoBoxWorld/Limits/issues/73#issuecomment-600748928
This commit is contained in:
parent
1429c0a763
commit
1933d498f6
@ -306,6 +306,7 @@ public class User {
|
||||
final String permPrefix = permissionPrefix + ".";
|
||||
|
||||
List<String> permissions = player.getEffectivePermissions().stream()
|
||||
.filter(PermissionAttachmentInfo::getValue) // Must be a positive permission, not a negative one
|
||||
.map(PermissionAttachmentInfo::getPermission)
|
||||
.filter(permission -> permission.startsWith(permPrefix))
|
||||
.collect(Collectors.toList());
|
||||
|
@ -473,10 +473,13 @@ public class UserTest {
|
||||
Set<PermissionAttachmentInfo> permSet = new HashSet<>();
|
||||
PermissionAttachmentInfo pai = mock(PermissionAttachmentInfo.class);
|
||||
when(pai.getPermission()).thenReturn("bskyblock.max.3");
|
||||
when(pai.getValue()).thenReturn(true);
|
||||
PermissionAttachmentInfo pai2 = mock(PermissionAttachmentInfo.class);
|
||||
when(pai2.getPermission()).thenReturn("bskyblock.max.7");
|
||||
when(pai2.getValue()).thenReturn(true);
|
||||
PermissionAttachmentInfo pai3 = mock(PermissionAttachmentInfo.class);
|
||||
when(pai3.getPermission()).thenReturn("bskyblock.max.33");
|
||||
when(pai3.getValue()).thenReturn(true);
|
||||
permSet.add(pai);
|
||||
permSet.add(pai2);
|
||||
permSet.add(pai3);
|
||||
@ -484,6 +487,30 @@ public class UserTest {
|
||||
User u = User.getInstance(player);
|
||||
assertEquals(33, u.getPermissionValue("bskyblock.max", 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for {@link User#getPermissionValue(String, int)}
|
||||
*/
|
||||
@Test
|
||||
public void testGetPermissionValueNegativePerm() {
|
||||
User.clearUsers();
|
||||
Set<PermissionAttachmentInfo> permSet = new HashSet<>();
|
||||
PermissionAttachmentInfo pai = mock(PermissionAttachmentInfo.class);
|
||||
when(pai.getPermission()).thenReturn("bskyblock.max.3");
|
||||
when(pai.getValue()).thenReturn(true);
|
||||
PermissionAttachmentInfo pai2 = mock(PermissionAttachmentInfo.class);
|
||||
when(pai2.getPermission()).thenReturn("bskyblock.max.7");
|
||||
when(pai2.getValue()).thenReturn(true);
|
||||
PermissionAttachmentInfo pai3 = mock(PermissionAttachmentInfo.class);
|
||||
when(pai3.getPermission()).thenReturn("bskyblock.max.33");
|
||||
when(pai3.getValue()).thenReturn(false); // Negative perm
|
||||
permSet.add(pai);
|
||||
permSet.add(pai2);
|
||||
permSet.add(pai3);
|
||||
when(player.getEffectivePermissions()).thenReturn(permSet);
|
||||
User u = User.getInstance(player);
|
||||
assertEquals(7, u.getPermissionValue("bskyblock.max", 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for {@link User#getPermissionValue(String, int)}
|
||||
@ -505,10 +532,13 @@ public class UserTest {
|
||||
Set<PermissionAttachmentInfo> permSet = new HashSet<>();
|
||||
PermissionAttachmentInfo pai = mock(PermissionAttachmentInfo.class);
|
||||
when(pai.getPermission()).thenReturn("bskyblock.max.3");
|
||||
when(pai.getValue()).thenReturn(true);
|
||||
PermissionAttachmentInfo pai2 = mock(PermissionAttachmentInfo.class);
|
||||
when(pai2.getPermission()).thenReturn("bskyblock.max.7");
|
||||
when(pai2.getValue()).thenReturn(true);
|
||||
PermissionAttachmentInfo pai3 = mock(PermissionAttachmentInfo.class);
|
||||
when(pai3.getPermission()).thenReturn("bskyblock.max.-1");
|
||||
when(pai3.getValue()).thenReturn(true);
|
||||
permSet.add(pai);
|
||||
permSet.add(pai2);
|
||||
permSet.add(pai3);
|
||||
@ -546,6 +576,7 @@ public class UserTest {
|
||||
User.clearUsers();
|
||||
PermissionAttachmentInfo pai = mock(PermissionAttachmentInfo.class);
|
||||
when(pai.getPermission()).thenReturn("bskyblock.max.3");
|
||||
when(pai.getValue()).thenReturn(true);
|
||||
when(player.getEffectivePermissions()).thenReturn(Collections.singleton(pai));
|
||||
User u = User.getInstance(player);
|
||||
assertEquals(3, u.getPermissionValue("bskyblock.max", 22));
|
||||
|
Loading…
Reference in New Issue
Block a user