package me.gnat008.perworldinventory.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.junit.Assert.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
/**
* Test for {@link PermissionManager}.
*/
@RunWith(MockitoJUnitRunner.class)
public class PermissionManagerTest {
@InjectMocks
private PermissionManager permissionManager;
@Mock
private Server server;
@Mock
private PluginManager pluginManager;
@Test
public void shouldUseDefaultPermissionForCommandSender() {
// given
PermissionNode node = TestPermissions.HELP;
CommandSender sender = mock(CommandSender.class);
// when
boolean result = permissionManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldGrantToOpSender() {
// given
PermissionNode node = TestPermissions.CONVERT;
CommandSender sender = mock(CommandSender.class);
given(sender.isOp()).willReturn(true);
// when
boolean result = permissionManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldDenyToSender() {
// given
PermissionNode node = TestPermissions.SYSTEM_LORD;
CommandSender sender = mock(CommandSender.class);
// when
boolean result = permissionManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(false));
}
@Test
public void shouldGrantToNonOpPlayer() {
// given
PermissionNode node = TestPermissions.HELP;
Player player = mock(Player.class);
// when
boolean result = permissionManager.hasPermission(player, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldDenyToNonOpPlayer() {
// given
PermissionNode node = TestPermissions.CONVERT;
Player player = mock(Player.class);
// when
boolean result = permissionManager.hasPermission(player, node);
// then
assertThat(result, equalTo(false));
}
@Test
public void shouldGrantToOpPlayer() {
// given
PermissionNode node = TestPermissions.CONVERT;
Player player = mock(Player.class);
given(player.isOp()).willReturn(true);
// when
boolean result = permissionManager.hasPermission(player, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldDenyToPlayer() {
// given
PermissionNode node = TestPermissions.SYSTEM_LORD;
Player player = mock(Player.class);
// when
boolean result = permissionManager.hasPermission(player, node);
// then
assertThat(result, equalTo(false));
}
@Test
public void shouldHandleNullPermissionForCommandSender() {
// given
PermissionNode node = null;
CommandSender sender = mock(CommandSender.class);
// when
boolean result = permissionManager.hasPermission(sender, node);
// then
assertThat(result, equalTo(true));
}
@Test
public void shouldHandleNullPermissionForPlayer() {
// given
PermissionNode node = null;
Player player = mock(Player.class);
// when
boolean result = permissionManager.hasPermission(player, node);
// then
assertThat(result, equalTo(true));
}
}