Change AntiBot from static to instance

- Convert static methods in AntiBot
- Create BukkitService for operations requiring calls to static methods on the Bukkit class
This commit is contained in:
ljacqu 2016-03-24 20:58:18 +01:00
parent 881a192413
commit 351b24fd14
8 changed files with 161 additions and 107 deletions

View File

@ -2,9 +2,10 @@ package fr.xephi.authme;
import fr.xephi.authme.output.MessageKey; import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.output.Messages; import fr.xephi.authme.output.Messages;
import fr.xephi.authme.permission.PermissionsManager;
import fr.xephi.authme.permission.PlayerStatePermission; import fr.xephi.authme.permission.PlayerStatePermission;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.util.Wrapper; import fr.xephi.authme.util.BukkitService;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -16,17 +17,25 @@ import java.util.List;
*/ */
public class AntiBot { public class AntiBot {
private static final Wrapper wrapper = Wrapper.getInstance(); private final Messages messages;
private static final AuthMe plugin = wrapper.getAuthMe(); private final PermissionsManager permissionsManager;
private static final Messages messages = wrapper.getMessages(); private final BukkitService bukkitService;
private static final List<String> antibotPlayers = new ArrayList<>(); private final List<String> antibotPlayers = new ArrayList<>();
private static AntiBotStatus antiBotStatus = AntiBotStatus.DISABLED; private AntiBotStatus antiBotStatus = AntiBotStatus.DISABLED;
public static void setupAntiBotService() { public AntiBot(Messages messages, PermissionsManager permissionsManager, BukkitService bukkitService) {
this.messages = messages;
this.permissionsManager = permissionsManager;
this.bukkitService = bukkitService;
setupAntiBotService();
}
private void setupAntiBotService() {
if (!Settings.enableAntiBot) { if (!Settings.enableAntiBot) {
return; return;
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { bukkitService.scheduleSyncDelayedTask(new Runnable() {
@Override @Override
public void run() { public void run() {
antiBotStatus = AntiBotStatus.LISTENING; antiBotStatus = AntiBotStatus.LISTENING;
@ -34,46 +43,45 @@ public class AntiBot {
}, 2400); }, 2400);
} }
public static void overrideAntiBotStatus(boolean activated) { public void overrideAntiBotStatus(boolean activated) {
if (antiBotStatus == AntiBotStatus.DISABLED) { if (antiBotStatus != AntiBotStatus.DISABLED) {
return;
}
if (activated) { if (activated) {
antiBotStatus = AntiBotStatus.ACTIVE; antiBotStatus = AntiBotStatus.ACTIVE;
} else { } else {
antiBotStatus = AntiBotStatus.LISTENING; antiBotStatus = AntiBotStatus.LISTENING;
} }
} }
}
public static AntiBotStatus getAntiBotStatus() { public AntiBotStatus getAntiBotStatus() {
return antiBotStatus; return antiBotStatus;
} }
public static void activateAntiBot() { public void activateAntiBot() {
antiBotStatus = AntiBotStatus.ACTIVE; antiBotStatus = AntiBotStatus.ACTIVE;
for (String s : messages.retrieve(MessageKey.ANTIBOT_AUTO_ENABLED_MESSAGE)) { for (String s : messages.retrieve(MessageKey.ANTIBOT_AUTO_ENABLED_MESSAGE)) {
Bukkit.broadcastMessage(s); Bukkit.broadcastMessage(s);
} }
wrapper.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { bukkitService.scheduleSyncDelayedTask(new Runnable() {
@Override @Override
public void run() { public void run() {
if (antiBotStatus == AntiBotStatus.ACTIVE) { if (antiBotStatus == AntiBotStatus.ACTIVE) {
antiBotStatus = AntiBotStatus.LISTENING; antiBotStatus = AntiBotStatus.LISTENING;
antibotPlayers.clear(); antibotPlayers.clear();
for (String s : messages.retrieve(MessageKey.ANTIBOT_AUTO_DISABLED_MESSAGE)) { for (String s : messages.retrieve(MessageKey.ANTIBOT_AUTO_DISABLED_MESSAGE)) {
Bukkit.broadcastMessage(s.replace("%m", "" + Settings.antiBotDuration)); bukkitService.broadcastMessage(s.replace("%m", Integer.toString(Settings.antiBotDuration)));
} }
} }
} }
}, Settings.antiBotDuration * 1200); }, Settings.antiBotDuration * 1200);
} }
public static void checkAntiBot(final Player player) { public void checkAntiBot(final Player player) {
if (antiBotStatus == AntiBotStatus.ACTIVE || antiBotStatus == AntiBotStatus.DISABLED) { if (antiBotStatus == AntiBotStatus.ACTIVE || antiBotStatus == AntiBotStatus.DISABLED) {
return; return;
} }
if (plugin.getPermissionsManager().hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)) { if (permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)) {
return; return;
} }
@ -82,7 +90,7 @@ public class AntiBot {
activateAntiBot(); activateAntiBot();
return; return;
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { bukkitService.scheduleSyncDelayedTask(new Runnable() {
@Override @Override
public void run() { public void run() {
antibotPlayers.remove(player.getName().toLowerCase()); antibotPlayers.remove(player.getName().toLowerCase());

View File

@ -55,6 +55,7 @@ import fr.xephi.authme.settings.properties.RestrictionSettings;
import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.settings.properties.SettingsFieldRetriever; import fr.xephi.authme.settings.properties.SettingsFieldRetriever;
import fr.xephi.authme.settings.propertymap.PropertyMap; import fr.xephi.authme.settings.propertymap.PropertyMap;
import fr.xephi.authme.util.BukkitService;
import fr.xephi.authme.util.CollectionUtils; import fr.xephi.authme.util.CollectionUtils;
import fr.xephi.authme.util.FileUtils; import fr.xephi.authme.util.FileUtils;
import fr.xephi.authme.util.GeoLiteAPI; import fr.xephi.authme.util.GeoLiteAPI;
@ -136,6 +137,7 @@ public class AuthMe extends JavaPlugin {
private IpAddressManager ipAddressManager; private IpAddressManager ipAddressManager;
private PluginHooks pluginHooks; private PluginHooks pluginHooks;
private SpawnLoader spawnLoader; private SpawnLoader spawnLoader;
private AntiBot antiBot;
/** /**
* Get the plugin's instance. * Get the plugin's instance.
@ -254,10 +256,14 @@ public class AuthMe extends JavaPlugin {
// Initialize spawn loader // Initialize spawn loader
spawnLoader = new SpawnLoader(getDataFolder(), newSettings, pluginHooks); spawnLoader = new SpawnLoader(getDataFolder(), newSettings, pluginHooks);
// AntiBot delay
BukkitService bukkitService = new BukkitService(this);
antiBot = new AntiBot(messages, permsMan, bukkitService);
// Set up the permissions manager and command handler // Set up the permissions manager and command handler
permsMan = initializePermissionsManager(); permsMan = initializePermissionsManager();
commandHandler = initializeCommandHandler(permsMan, messages, passwordSecurity, newSettings, ipAddressManager, commandHandler = initializeCommandHandler(permsMan, messages, passwordSecurity, newSettings, ipAddressManager,
pluginHooks, spawnLoader); pluginHooks, spawnLoader, antiBot);
// Set up Metrics // Set up Metrics
MetricsStarter.setupMetrics(plugin, newSettings); MetricsStarter.setupMetrics(plugin, newSettings);
@ -265,9 +271,6 @@ public class AuthMe extends JavaPlugin {
// Set console filter // Set console filter
setupConsoleFilter(); setupConsoleFilter();
// AntiBot delay
AntiBot.setupAntiBotService();
// Download and load GeoIp.dat file if absent // Download and load GeoIp.dat file if absent
GeoLiteAPI.isDataAvailable(); GeoLiteAPI.isDataAvailable();
@ -304,7 +307,7 @@ public class AuthMe extends JavaPlugin {
reloadSupportHook(); reloadSupportHook();
// Register event listeners // Register event listeners
registerEventListeners(messages, pluginHooks, spawnLoader); registerEventListeners(messages, database, management, pluginHooks, spawnLoader, antiBot);
// Purge on start if enabled // Purge on start if enabled
autoPurge(); autoPurge();
@ -370,12 +373,13 @@ public class AuthMe extends JavaPlugin {
/** /**
* Register all event listeners. * Register all event listeners.
*/ */
private void registerEventListeners(Messages messages, PluginHooks pluginHooks, SpawnLoader spawnLoader) { private void registerEventListeners(Messages messages, DataSource dataSource, Management management,
PluginHooks pluginHooks, SpawnLoader spawnLoader, AntiBot antiBot) {
// Get the plugin manager instance // Get the plugin manager instance
PluginManager pluginManager = server.getPluginManager(); PluginManager pluginManager = server.getPluginManager();
// Register event listeners // Register event listeners
pluginManager.registerEvents(new AuthMePlayerListener(this), this); pluginManager.registerEvents(new AuthMePlayerListener(this, messages, dataSource, antiBot, management), this);
pluginManager.registerEvents(new AuthMeBlockListener(), this); pluginManager.registerEvents(new AuthMeBlockListener(), this);
pluginManager.registerEvents(new AuthMeEntityListener(), this); pluginManager.registerEvents(new AuthMeEntityListener(), this);
pluginManager.registerEvents(new AuthMeServerListener(this, messages, pluginHooks, spawnLoader), this); pluginManager.registerEvents(new AuthMeServerListener(this, messages, pluginHooks, spawnLoader), this);
@ -427,12 +431,12 @@ public class AuthMe extends JavaPlugin {
private CommandHandler initializeCommandHandler(PermissionsManager permissionsManager, Messages messages, private CommandHandler initializeCommandHandler(PermissionsManager permissionsManager, Messages messages,
PasswordSecurity passwordSecurity, NewSetting settings, PasswordSecurity passwordSecurity, NewSetting settings,
IpAddressManager ipAddressManager, PluginHooks pluginHooks, IpAddressManager ipAddressManager, PluginHooks pluginHooks,
SpawnLoader spawnLoader) { SpawnLoader spawnLoader, AntiBot antiBot) {
HelpProvider helpProvider = new HelpProvider(permissionsManager, settings.getProperty(HELP_HEADER)); HelpProvider helpProvider = new HelpProvider(permissionsManager, settings.getProperty(HELP_HEADER));
Set<CommandDescription> baseCommands = CommandInitializer.buildCommands(); Set<CommandDescription> baseCommands = CommandInitializer.buildCommands();
CommandMapper mapper = new CommandMapper(baseCommands, permissionsManager); CommandMapper mapper = new CommandMapper(baseCommands, permissionsManager);
CommandService commandService = new CommandService(this, mapper, helpProvider, messages, passwordSecurity, CommandService commandService = new CommandService(this, mapper, helpProvider, messages, passwordSecurity,
permissionsManager, settings, ipAddressManager, pluginHooks, spawnLoader); permissionsManager, settings, ipAddressManager, pluginHooks, spawnLoader, antiBot);
return new CommandHandler(commandService); return new CommandHandler(commandService);
} }
@ -616,15 +620,6 @@ public class AuthMe extends JavaPlugin {
return manager; return manager;
} }
/**
* Get the permissions manager instance.
*
* @return Permissions Manager instance.
*/
public PermissionsManager getPermissionsManager() {
return this.permsMan;
}
// Set the console filter to remove the passwords // Set the console filter to remove the passwords
private void setLog4JFilter() { private void setLog4JFilter() {
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@ -814,6 +809,15 @@ public class AuthMe extends JavaPlugin {
return commandHandler.processCommand(sender, commandLabel, args); return commandHandler.processCommand(sender, commandLabel, args);
} }
/**
* Get the permissions manager instance.
*
* @return Permissions Manager instance.
*/
public PermissionsManager getPermissionsManager() {
return this.permsMan;
}
/** /**
* Return the management instance. * Return the management instance.
* *

View File

@ -1,5 +1,6 @@
package fr.xephi.authme.command; package fr.xephi.authme.command;
import fr.xephi.authme.AntiBot;
import fr.xephi.authme.AuthMe; import fr.xephi.authme.AuthMe;
import fr.xephi.authme.cache.auth.PlayerCache; import fr.xephi.authme.cache.auth.PlayerCache;
import fr.xephi.authme.command.help.HelpProvider; import fr.xephi.authme.command.help.HelpProvider;
@ -34,6 +35,7 @@ public class CommandService {
private final IpAddressManager ipAddressManager; private final IpAddressManager ipAddressManager;
private final PluginHooks pluginHooks; private final PluginHooks pluginHooks;
private final SpawnLoader spawnLoader; private final SpawnLoader spawnLoader;
private final AntiBot antiBot;
/** /**
* Constructor. * Constructor.
@ -51,7 +53,8 @@ public class CommandService {
*/ */
public CommandService(AuthMe authMe, CommandMapper commandMapper, HelpProvider helpProvider, Messages messages, public CommandService(AuthMe authMe, CommandMapper commandMapper, HelpProvider helpProvider, Messages messages,
PasswordSecurity passwordSecurity, PermissionsManager permissionsManager, NewSetting settings, PasswordSecurity passwordSecurity, PermissionsManager permissionsManager, NewSetting settings,
IpAddressManager ipAddressManager, PluginHooks pluginHooks, SpawnLoader spawnLoader) { IpAddressManager ipAddressManager, PluginHooks pluginHooks, SpawnLoader spawnLoader,
AntiBot antiBot) {
this.authMe = authMe; this.authMe = authMe;
this.messages = messages; this.messages = messages;
this.helpProvider = helpProvider; this.helpProvider = helpProvider;
@ -62,6 +65,7 @@ public class CommandService {
this.ipAddressManager = ipAddressManager; this.ipAddressManager = ipAddressManager;
this.pluginHooks = pluginHooks; this.pluginHooks = pluginHooks;
this.spawnLoader = spawnLoader; this.spawnLoader = spawnLoader;
this.antiBot = antiBot;
} }
/** /**
@ -211,4 +215,8 @@ public class CommandService {
return spawnLoader; return spawnLoader;
} }
public AntiBot getAntiBot() {
return antiBot;
}
} }

View File

@ -18,8 +18,9 @@ public class SwitchAntiBotCommand implements ExecutableCommand {
@Override @Override
public void executeCommand(final CommandSender sender, List<String> arguments, CommandService commandService) { public void executeCommand(final CommandSender sender, List<String> arguments, CommandService commandService) {
AntiBot antiBot = commandService.getAntiBot();
if (arguments.isEmpty()) { if (arguments.isEmpty()) {
sender.sendMessage("[AuthMe] AntiBot status: " + AntiBot.getAntiBotStatus().name()); sender.sendMessage("[AuthMe] AntiBot status: " + antiBot.getAntiBotStatus().name());
return; return;
} }
@ -27,10 +28,10 @@ public class SwitchAntiBotCommand implements ExecutableCommand {
// Enable or disable the mod // Enable or disable the mod
if ("ON".equalsIgnoreCase(newState)) { if ("ON".equalsIgnoreCase(newState)) {
AntiBot.overrideAntiBotStatus(true); antiBot.overrideAntiBotStatus(true);
sender.sendMessage("[AuthMe] AntiBot Manual Override: enabled!"); sender.sendMessage("[AuthMe] AntiBot Manual Override: enabled!");
} else if ("OFF".equalsIgnoreCase(newState)) { } else if ("OFF".equalsIgnoreCase(newState)) {
AntiBot.overrideAntiBotStatus(false); antiBot.overrideAntiBotStatus(false);
sender.sendMessage("[AuthMe] AntiBot Manual Override: disabled!"); sender.sendMessage("[AuthMe] AntiBot Manual Override: disabled!");
} else { } else {
sender.sendMessage(ChatColor.DARK_RED + "Invalid AntiBot mode!"); sender.sendMessage(ChatColor.DARK_RED + "Invalid AntiBot mode!");

View File

@ -9,10 +9,12 @@ import fr.xephi.authme.cache.auth.PlayerAuth;
import fr.xephi.authme.cache.auth.PlayerCache; import fr.xephi.authme.cache.auth.PlayerCache;
import fr.xephi.authme.cache.limbo.LimboCache; import fr.xephi.authme.cache.limbo.LimboCache;
import fr.xephi.authme.cache.limbo.LimboPlayer; import fr.xephi.authme.cache.limbo.LimboPlayer;
import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.output.MessageKey; import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.output.Messages; import fr.xephi.authme.output.Messages;
import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PermissionsManager;
import fr.xephi.authme.permission.PlayerStatePermission; import fr.xephi.authme.permission.PlayerStatePermission;
import fr.xephi.authme.process.Management;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.util.GeoLiteAPI; import fr.xephi.authme.util.GeoLiteAPI;
import fr.xephi.authme.util.Utils; import fr.xephi.authme.util.Utils;
@ -58,10 +60,17 @@ public class AuthMePlayerListener implements Listener {
public static final ConcurrentHashMap<String, Boolean> causeByAuthMe = new ConcurrentHashMap<>(); public static final ConcurrentHashMap<String, Boolean> causeByAuthMe = new ConcurrentHashMap<>();
private final AuthMe plugin; private final AuthMe plugin;
private final Messages m; private final Messages m;
private final DataSource dataSource;
private final AntiBot antiBot;
private final Management management;
public AuthMePlayerListener(AuthMe plugin) { public AuthMePlayerListener(AuthMe plugin, Messages messages, DataSource dataSource, AntiBot antiBot,
this.m = plugin.getMessages(); Management management) {
this.plugin = plugin; this.plugin = plugin;
this.m = messages;
this.dataSource = dataSource;
this.antiBot = antiBot;
this.management = management;
} }
private void handleChat(AsyncPlayerChatEvent event) { private void handleChat(AsyncPlayerChatEvent event) {
@ -87,7 +96,7 @@ public class AuthMePlayerListener implements Listener {
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override @Override
public void run() { public void run() {
if (plugin.getDataSource().isAuthAvailable(player.getName().toLowerCase())) { if (dataSource.isAuthAvailable(player.getName().toLowerCase())) {
m.send(player, MessageKey.LOGIN_MESSAGE); m.send(player, MessageKey.LOGIN_MESSAGE);
} else { } else {
if (Settings.emailRegistration) { if (Settings.emailRegistration) {
@ -229,14 +238,14 @@ public class AuthMePlayerListener implements Listener {
Bukkit.getScheduler().runTask(plugin, new Runnable() { Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override @Override
public void run() { public void run() {
plugin.getManagement().performJoin(player); management.performJoin(player);
} }
}); });
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onPreLogin(AsyncPlayerPreLoginEvent event) { public void onPreLogin(AsyncPlayerPreLoginEvent event) {
PlayerAuth auth = plugin.getDataSource().getAuth(event.getName()); PlayerAuth auth = dataSource.getAuth(event.getName());
if (Settings.preventOtherCase && auth != null && auth.getRealName() != null) { if (Settings.preventOtherCase && auth != null && auth.getRealName() != null) {
String realName = auth.getRealName(); String realName = auth.getRealName();
if (!realName.isEmpty() && !realName.equals("Player") && !realName.equals(event.getName())) { if (!realName.isEmpty() && !realName.equals("Player") && !realName.equals(event.getName())) {
@ -245,7 +254,7 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
if (realName.isEmpty() || realName.equals("Player")) { if (realName.isEmpty() || realName.equals("Player")) {
plugin.getDataSource().updateRealName(event.getName().toLowerCase(), event.getName()); dataSource.updateRealName(event.getName().toLowerCase(), event.getName());
} }
} }
@ -319,7 +328,7 @@ public class AuthMePlayerListener implements Listener {
} }
final String name = player.getName().toLowerCase(); final String name = player.getName().toLowerCase();
boolean isAuthAvailable = plugin.getDataSource().isAuthAvailable(name); boolean isAuthAvailable = dataSource.isAuthAvailable(name);
if (Settings.isKickNonRegisteredEnabled && !isAuthAvailable) { if (Settings.isKickNonRegisteredEnabled && !isAuthAvailable) {
if (Settings.antiBotInAction) { if (Settings.antiBotInAction) {
@ -345,7 +354,7 @@ public class AuthMePlayerListener implements Listener {
return; return;
} }
AntiBot.checkAntiBot(player); antiBot.checkAntiBot(player);
if (Settings.bungee) { if (Settings.bungee) {
ByteArrayDataOutput out = ByteStreams.newDataOutput(); ByteArrayDataOutput out = ByteStreams.newDataOutput();
@ -366,7 +375,7 @@ public class AuthMePlayerListener implements Listener {
event.setQuitMessage(null); event.setQuitMessage(null);
} }
plugin.getManagement().performQuit(player, false); management.performQuit(player, false);
} }
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
@ -492,13 +501,13 @@ public class AuthMePlayerListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
Location spawn = plugin.getSpawnLocation(player); Location spawn = plugin.getSpawnLocation(player);
if (Settings.isSaveQuitLocationEnabled && plugin.getDataSource().isAuthAvailable(name)) { if (Settings.isSaveQuitLocationEnabled && dataSource.isAuthAvailable(name)) {
PlayerAuth auth = PlayerAuth.builder() PlayerAuth auth = PlayerAuth.builder()
.name(name) .name(name)
.realName(player.getName()) .realName(player.getName())
.location(spawn) .location(spawn)
.build(); .build();
plugin.getDataSource().updateQuitLoc(auth); dataSource.updateQuitLoc(auth);
} }
if (spawn != null && spawn.getWorld() != null) { if (spawn != null && spawn.getWorld() != null) {
event.setRespawnLocation(spawn); event.setRespawnLocation(spawn);

View File

@ -0,0 +1,52 @@
package fr.xephi.authme.util;
import fr.xephi.authme.AuthMe;
import org.bukkit.Bukkit;
/**
* Service for operations requiring server entities, such as for scheduling.
*/
public class BukkitService {
private final AuthMe authMe;
public BukkitService(AuthMe authMe) {
this.authMe = authMe;
}
/**
* Schedules a once off task to occur as soon as possible.
* <p>
* This task will be executed by the main server thread.
*
* @param task Task to be executed
* @return Task id number (-1 if scheduling failed)
*/
public int scheduleSyncDelayedTask(Runnable task) {
return Bukkit.getScheduler().scheduleSyncDelayedTask(authMe, task);
}
/**
* Schedules a once off task to occur after a delay.
* <p>
* This task will be executed by the main server thread.
*
* @param task Task to be executed
* @param delay Delay in server ticks before executing task
* @return Task id number (-1 if scheduling failed)
*/
public int scheduleSyncDelayedTask(Runnable task, long delay) {
return Bukkit.getScheduler().scheduleSyncDelayedTask(authMe, task, delay);
}
/**
* Broadcast a message to all players.
*
* @param message the message
* @return the number of players
*/
public int broadcastMessage(String message) {
return Bukkit.broadcastMessage(message);
}
}

View File

@ -1,35 +0,0 @@
package fr.xephi.authme;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.util.WrapperMock;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
/**
* Test for {@link AntiBot}.
*/
public class AntiBotTest {
private WrapperMock wrapper;
@Before
public void setUpMocks() {
wrapper = WrapperMock.createInstance();
}
@Test
public void shouldNotEnableAntiBot() {
// given
Settings.enableAntiBot = false;
// when
AntiBot.setupAntiBotService();
// then
verify(wrapper.getScheduler(), never()).scheduleSyncDelayedTask(any(AuthMe.class), any(Runnable.class));
}
}

View File

@ -1,5 +1,6 @@
package fr.xephi.authme.command; package fr.xephi.authme.command;
import fr.xephi.authme.AntiBot;
import fr.xephi.authme.AuthMe; import fr.xephi.authme.AuthMe;
import fr.xephi.authme.cache.IpAddressManager; import fr.xephi.authme.cache.IpAddressManager;
import fr.xephi.authme.command.help.HelpProvider; import fr.xephi.authme.command.help.HelpProvider;
@ -18,7 +19,10 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -33,34 +37,37 @@ import static org.mockito.Mockito.verify;
/** /**
* Test for {@link CommandService}. * Test for {@link CommandService}.
*/ */
@RunWith(MockitoJUnitRunner.class)
public class CommandServiceTest { public class CommandServiceTest {
private AuthMe authMe;
private CommandMapper commandMapper;
private HelpProvider helpProvider;
private Messages messages;
private PasswordSecurity passwordSecurity;
private CommandService commandService; private CommandService commandService;
@Mock
private AuthMe authMe;
@Mock
private CommandMapper commandMapper;
@Mock
private HelpProvider helpProvider;
@Mock
private Messages messages;
@Mock
private PasswordSecurity passwordSecurity;
@Mock
private PermissionsManager permissionsManager; private PermissionsManager permissionsManager;
@Mock
private NewSetting settings; private NewSetting settings;
@Mock
private IpAddressManager ipAddressManager; private IpAddressManager ipAddressManager;
@Mock
private PluginHooks pluginHooks; private PluginHooks pluginHooks;
@Mock
private SpawnLoader spawnLoader; private SpawnLoader spawnLoader;
@Mock
private AntiBot antiBot;
@Before @Before
public void setUpService() { public void setUpService() {
authMe = mock(AuthMe.class);
commandMapper = mock(CommandMapper.class);
helpProvider = mock(HelpProvider.class);
messages = mock(Messages.class);
passwordSecurity = mock(PasswordSecurity.class);
permissionsManager = mock(PermissionsManager.class);
settings = mock(NewSetting.class);
ipAddressManager = mock(IpAddressManager.class);
pluginHooks = mock(PluginHooks.class);
spawnLoader = mock(SpawnLoader.class);
commandService = new CommandService(authMe, commandMapper, helpProvider, messages, passwordSecurity, commandService = new CommandService(authMe, commandMapper, helpProvider, messages, passwordSecurity,
permissionsManager, settings, ipAddressManager, pluginHooks, spawnLoader); permissionsManager, settings, ipAddressManager, pluginHooks, spawnLoader, antiBot);
} }
@Test @Test