LoginSystem/src/test/java/fr/xephi/authme/permission/PermissionsManagerTest.java

152 lines
3.9 KiB
Java

package fr.xephi.authme.permission;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
/**
* Test for {@link PermissionsManager}.
*/
@RunWith(MockitoJUnitRunner.class)
public class PermissionsManagerTest {
@InjectMocks
private PermissionsManager permissionsManager;
@Mock
private Server server;
@Mock
private PluginManager pluginManager;
@Test
public void shouldUseDefaultPermissionForCommandSender() {
// given
PermissionNode node = TestPermissions.LOGIN;
CommandSender sender = mock(CommandSender.class);
// when
boolean result = permissionsManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldGrantToOpCommandSender() {
// given
PermissionNode node = TestPermissions.DELETE_USER;
CommandSender sender = mock(CommandSender.class);
given(sender.isOp()).willReturn(true);
// when
boolean result = permissionsManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldDenyPermissionEvenForOpCommandSender() {
// given
PermissionNode node = TestPermissions.WORLD_DOMINATION;
CommandSender sender = mock(CommandSender.class);
// when
boolean result = permissionsManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(false));
}
@Test
public void shouldAllowForNonOpPlayer() {
// given
PermissionNode node = TestPermissions.LOGIN;
Player player = mock(Player.class);
// when
boolean result = permissionsManager.hasPermission(player, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldDenyForNonOpPlayer() {
// given
PermissionNode node = TestPermissions.DELETE_USER;
Player player = mock(Player.class);
// when
boolean result = permissionsManager.hasPermission(player, node);
// then
assertThat(result, equalTo(false));
}
@Test
public void shouldAllowForOpPlayer() {
// given
PermissionNode node = TestPermissions.DELETE_USER;
Player player = mock(Player.class);
given(player.isOp()).willReturn(true);
// when
boolean result = permissionsManager.hasPermission(player, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldDenyEvenForOpPlayer() {
// given
PermissionNode node = TestPermissions.WORLD_DOMINATION;
Player player = mock(Player.class);
// when
boolean result = permissionsManager.hasPermission(player, node);
// then
assertThat(result, equalTo(false));
}
@Test
public void shouldHandleNullPermissionForCommandSender() {
// given
PermissionNode node = null;
CommandSender sender = mock(CommandSender.class);
// when
boolean result = permissionsManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldHandleNullPermissionForPlayer() {
// given
PermissionNode node = null;
Player player = mock(Player.class);
// when
boolean result = permissionsManager.hasPermission(player, node);
// then
assertThat(result, equalTo(true));
}
}