Changed how permissions are used internally
This commit is contained in:
parent
504ab5dd73
commit
58ca5f9d2c
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
*/
|
||||
public enum Permissions {
|
||||
|
||||
HELP("plan.?"),
|
||||
INSPECT("plan.inspect"),
|
||||
QUICK_INSPECT("plan.qinspect"),
|
||||
QUICK_INSPECT_OTHER("plan.qinspect.other"),
|
||||
INSPECT_OTHER("plan.inspect.other"),
|
||||
ANALYZE("plan.analyze"),
|
||||
QUICK_ANALYZE("plan.qanalyze"),
|
||||
SEARCH("plan.search"),
|
||||
RELOAD("plan.reload"),
|
||||
INFO("plan.info"),
|
||||
IGNORE_COMMANDUSE("plan.ignore.commanduse"),
|
||||
MANAGE("plan.manage");
|
||||
|
||||
private final String permission;
|
||||
|
||||
private Permissions(String permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
public boolean userHasThisPermission(CommandSender p) {
|
||||
return p.hasPermission(permission);
|
||||
}
|
||||
|
||||
public String getPermission() {
|
||||
return permission;
|
||||
}
|
||||
}
|
|
@ -98,7 +98,7 @@ public class PlanCommand implements CommandExecutor {
|
|||
|
||||
boolean console = !(sender instanceof Player);
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
if (!command.getPermission().userHasThisPermission(sender)) {
|
||||
sender.sendMessage("" + Phrase.COMMAND_NO_PERMISSION);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.command;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
|
@ -10,7 +11,7 @@ import org.bukkit.command.CommandSender;
|
|||
public abstract class SubCommand {
|
||||
|
||||
private final String name;
|
||||
private final String permission;
|
||||
private final Permissions permission;
|
||||
private final String usage;
|
||||
private final CommandType commandType;
|
||||
private final String arguments;
|
||||
|
@ -23,7 +24,7 @@ public abstract class SubCommand {
|
|||
* @param commandType Type Enum
|
||||
* @param arguments Additional possible arguments the command requires
|
||||
*/
|
||||
public SubCommand(String name, String permission, String usage, CommandType commandType, String arguments) {
|
||||
public SubCommand(String name, Permissions permission, String usage, CommandType commandType, String arguments) {
|
||||
this.name = name;
|
||||
this.permission = permission;
|
||||
this.usage = usage;
|
||||
|
@ -55,7 +56,7 @@ public abstract class SubCommand {
|
|||
/**
|
||||
* @return Required permission
|
||||
*/
|
||||
public String getPermission() {
|
||||
public Permissions getPermission() {
|
||||
return permission;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import java.util.Date;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
|
@ -31,7 +32,7 @@ public class AnalyzeCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public AnalyzeCommand(Plan plugin) {
|
||||
super("analyze, analyse, analysis", "plan.analyze", Phrase.CMD_USG_ANALYZE.parse(), CommandType.CONSOLE, "");
|
||||
super("analyze, analyse, analysis", Permissions.ANALYZE, Phrase.CMD_USG_ANALYZE.parse(), CommandType.CONSOLE, "");
|
||||
this.plugin = plugin;
|
||||
analysisCache = plugin.getAnalysisCache();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -26,7 +27,7 @@ public class HelpCommand extends SubCommand {
|
|||
* @param command Current instance of PlanCommand
|
||||
*/
|
||||
public HelpCommand(Plan plugin, PlanCommand command) {
|
||||
super("help,?", "plan.?", Phrase.CMD_USG_HELP + "", CommandType.CONSOLE, "");
|
||||
super("help,?", Permissions.HELP, Phrase.CMD_USG_HELP + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
this.command = command;
|
||||
|
@ -46,7 +47,7 @@ public class HelpCommand extends SubCommand {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
if (!command.getPermission().userHasThisPermission(sender)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -23,7 +24,7 @@ public class InfoCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public InfoCommand(Plan plugin) {
|
||||
super("info", "plan.info", Phrase.CMD_USG_INFO + "", CommandType.CONSOLE, "");
|
||||
super("info", Permissions.INFO, Phrase.CMD_USG_INFO + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
|
@ -33,7 +34,7 @@ public class InspectCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public InspectCommand(Plan plugin) {
|
||||
super("inspect", "plan.inspect", Phrase.CMD_USG_INSPECT + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + "");
|
||||
super("inspect", Permissions.INSPECT, Phrase.CMD_USG_INSPECT + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
inspectCache = plugin.getInspectCache();
|
||||
|
|
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -27,7 +28,7 @@ public class ManageCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageCommand(Plan plugin) {
|
||||
super("manage, m", "plan.manage", Phrase.CMD_USG_MANAGE+"", CommandType.CONSOLE, "");
|
||||
super("manage, m", Permissions.MANAGE, Phrase.CMD_USG_MANAGE+"", CommandType.CONSOLE, "");
|
||||
this.plugin = plugin;
|
||||
commands = new ArrayList<>();
|
||||
commands.add(new ManageHelpCommand(plugin, this));
|
||||
|
@ -98,7 +99,7 @@ public class ManageCommand extends SubCommand {
|
|||
|
||||
boolean console = !(sender instanceof Player);
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
if (!command.getPermission().userHasThisPermission(sender)) {
|
||||
sender.sendMessage("" + Phrase.COMMAND_NO_PERMISSION);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -21,7 +22,7 @@ public class ReloadCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ReloadCommand(Plan plugin) {
|
||||
super("reload", "plan.reload", Phrase.CMD_USG_RELOAD + "", CommandType.CONSOLE, "");
|
||||
super("reload", Permissions.MANAGE, Phrase.CMD_USG_RELOAD + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.Arrays;
|
|||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
|
@ -35,7 +36,7 @@ public class SearchCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public SearchCommand(Plan plugin) {
|
||||
super("search", "plan.search", Phrase.CMD_USG_SEARCH + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_SEARCH + "");
|
||||
super("search", Permissions.SEARCH, Phrase.CMD_USG_SEARCH + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_SEARCH + "");
|
||||
this.plugin = plugin;
|
||||
inspectCache = plugin.getInspectCache();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -24,7 +25,7 @@ public class ManageBackupCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageBackupCommand(Plan plugin) {
|
||||
super("backup", "plan.manage", Phrase.CMD_USG_MANAGE_BACKUP + "", CommandType.CONSOLE, "<DB>");
|
||||
super("backup", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_BACKUP + "", CommandType.CONSOLE, "<DB>");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
|||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -25,7 +26,7 @@ public class ManageClearCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageClearCommand(Plan plugin) {
|
||||
super("clear", "plan.manage", Phrase.CMD_USG_MANAGE_CLEAR + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB> [-a]");
|
||||
super("clear", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_CLEAR + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB> [-a]");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -26,7 +27,7 @@ public class ManageHelpCommand extends SubCommand {
|
|||
* @param command Current instance of PlanCommand
|
||||
*/
|
||||
public ManageHelpCommand(Plan plugin, ManageCommand command) {
|
||||
super("help,?", "plan.manage", Phrase.CMD_USG_MANAGE_HELP + "", CommandType.CONSOLE, "");
|
||||
super("help,?", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_HELP + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
this.command = command;
|
||||
|
@ -47,7 +48,7 @@ public class ManageHelpCommand extends SubCommand {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
if (!command.getPermission().userHasThisPermission(sender)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -23,7 +24,7 @@ public class ManageHotswapCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageHotswapCommand(Plan plugin) {
|
||||
super("hotswap", "plan.manage", Phrase.CMD_USG_MANAGE_HOTSWAP + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB>");
|
||||
super("hotswap", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_HOTSWAP + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB>");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -35,7 +36,7 @@ public class ManageImportCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageImportCommand(Plan plugin) {
|
||||
super("import", "plan.manage", Phrase.CMD_USG_MANAGE_IMPORT + "", CommandType.CONSOLE, Phrase.ARG_IMPORT + "");
|
||||
super("import", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_IMPORT + "", CommandType.CONSOLE, Phrase.ARG_IMPORT + "");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -27,7 +28,7 @@ public class ManageMoveCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageMoveCommand(Plan plugin) {
|
||||
super("move", "plan.manage", Phrase.CMD_USG_MANAGE_MOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_MOVE + "");
|
||||
super("move", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_MOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_MOVE + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
|||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -32,7 +33,7 @@ public class ManageRemoveCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageRemoveCommand(Plan plugin) {
|
||||
super("remove", "plan.manage", Phrase.CMD_USG_MANAGE_REMOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + " [-a]");
|
||||
super("remove", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_REMOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + " [-a]");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -57,7 +58,7 @@ public class ManageRemoveCommand extends SubCommand {
|
|||
return true;
|
||||
}
|
||||
|
||||
String playerName = MiscUtils.getPlayerName(args, sender);
|
||||
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.MANAGE);
|
||||
|
||||
UUID uuid;
|
||||
try {
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.io.File;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -30,7 +31,7 @@ public class ManageRestoreCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageRestoreCommand(Plan plugin) {
|
||||
super("restore", "plan.restore", Phrase.CMD_USG_MANAGE_RESTORE + "", CommandType.CONSOLE, Phrase.ARG_RESTORE + "");
|
||||
super("restore", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_RESTORE + "", CommandType.CONSOLE, Phrase.ARG_RESTORE + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
|
@ -22,7 +23,7 @@ public class ManageStatusCommand extends SubCommand {
|
|||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageStatusCommand(Plan plugin) {
|
||||
super("status", "plan.manage", Phrase.CMD_USG_MANAGE_STATUS + "", CommandType.CONSOLE, "");
|
||||
super("status", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_STATUS + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ public class DataCacheHandler extends LocationCache {
|
|||
public void startQueues() {
|
||||
getTask = new DataCacheGetQueue(plugin);
|
||||
clearTask = new DataCacheClearQueue(plugin, this);
|
||||
processTask = new DataCacheProcessQueue(plugin, this);
|
||||
processTask = new DataCacheProcessQueue(this);
|
||||
saveTask = new DataCacheSaveQueue(plugin);
|
||||
}
|
||||
|
||||
|
@ -246,7 +246,7 @@ public class DataCacheHandler extends LocationCache {
|
|||
public void process(UserData data) {
|
||||
data.addLocations(getLocationsForSaving(uuid));
|
||||
clearLocations(uuid);
|
||||
addSession(data);
|
||||
// addSession(data);
|
||||
saveTask.scheduleForSave(data);
|
||||
scheludeForClear(uuid);
|
||||
}
|
||||
|
@ -308,20 +308,9 @@ public class DataCacheHandler extends LocationCache {
|
|||
* @param uuid
|
||||
* @return
|
||||
*/
|
||||
public boolean isDataAccessed(UUID uuid) {
|
||||
public boolean isDataAccessed(UUID uuid) {
|
||||
UserData userData = dataCache.get(uuid);
|
||||
if (userData != null) {
|
||||
if (userData.isAccessed()) {
|
||||
return true;
|
||||
}
|
||||
if (saveTask.containsUUID(uuid)) {
|
||||
return true;
|
||||
}
|
||||
if (processTask.containsUUID(uuid)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return (userData != null && userData.isAccessed()) || saveTask.containsUUID(uuid) || processTask.containsUUID(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -41,6 +41,10 @@ public class SessionCache {
|
|||
}
|
||||
}
|
||||
|
||||
public SessionData getSession(UUID uuid) {
|
||||
return activeSessions.get(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
|
|
|
@ -8,7 +8,6 @@ import main.java.com.djrapitops.plan.Phrase;
|
|||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
|
|
|
@ -26,14 +26,13 @@ public class DataCacheProcessQueue {
|
|||
|
||||
/**
|
||||
*
|
||||
* @param plugin
|
||||
* @param handler
|
||||
*/
|
||||
public DataCacheProcessQueue(Plan plugin, DataCacheHandler handler) {
|
||||
public DataCacheProcessQueue(DataCacheHandler handler) {
|
||||
h = handler;
|
||||
q = new ArrayBlockingQueue(20000);
|
||||
s = new ProcessSetup();
|
||||
s.go(q, plugin.getDB(), h);
|
||||
s.go(q, h);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -77,13 +76,11 @@ class ProcessConsumer implements Runnable {
|
|||
|
||||
private final BlockingQueue<HandlingInfo> queue;
|
||||
private final DataCacheHandler handler;
|
||||
private final Database db;
|
||||
private boolean run;
|
||||
|
||||
ProcessConsumer(BlockingQueue q, Database db, DataCacheHandler h) {
|
||||
ProcessConsumer(BlockingQueue q, DataCacheHandler h) {
|
||||
handler = h;
|
||||
queue = q;
|
||||
this.db = db;
|
||||
run = true;
|
||||
}
|
||||
|
||||
|
@ -101,7 +98,9 @@ class ProcessConsumer implements Runnable {
|
|||
DBCallableProcessor p = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
info.process(data);
|
||||
if (!info.process(data)) {
|
||||
System.out.println("Attempted to process data for wrong uuid: W:"+data.getUuid()+" | R:"+info.getUuid()+" Type:"+info.getType().name());
|
||||
}
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(p, info.getUuid());
|
||||
|
@ -118,9 +117,9 @@ class ProcessSetup {
|
|||
private ProcessConsumer one;
|
||||
private ProcessConsumer two;
|
||||
|
||||
void go(BlockingQueue<HandlingInfo> q, Database db, DataCacheHandler h) {
|
||||
one = new ProcessConsumer(q, db, h);
|
||||
two = new ProcessConsumer(q, db, h);
|
||||
void go(BlockingQueue<HandlingInfo> q, DataCacheHandler h) {
|
||||
one = new ProcessConsumer(q, h);
|
||||
two = new ProcessConsumer(q, h);
|
||||
new Thread(one).start();
|
||||
new Thread(two).start();
|
||||
}
|
||||
|
|
|
@ -105,7 +105,9 @@ class SaveConsumer implements Runnable {
|
|||
|
||||
void consume(UserData data) {
|
||||
try {
|
||||
data.access();
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
data.stopAccessing();
|
||||
} catch (SQLException ex) {
|
||||
getPlugin(Plan.class).toLog(this.getClass().getName(), ex);
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public class ChatInfo extends HandlingInfo {
|
|||
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(super.uuid)) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
ChatHandling.processChatInfo(uData, nickname, message);
|
||||
|
|
|
@ -20,7 +20,7 @@ public class DeathInfo extends HandlingInfo{
|
|||
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (uData.getUuid() != uuid) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
uData.setDeaths(uData.getDeaths()+1);
|
||||
|
|
|
@ -27,7 +27,7 @@ public class GamemodeInfo extends HandlingInfo{
|
|||
if (currentGamemode == null) {
|
||||
return false;
|
||||
}
|
||||
if (uData.getUuid() != uuid) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
GamemodeHandling.processGamemodeInfo(uData, time, currentGamemode);
|
||||
|
|
|
@ -20,6 +20,9 @@ public class KickInfo extends HandlingInfo {
|
|||
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
uData.setTimesKicked(uData.getTimesKicked()+1);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public class LoginInfo extends HandlingInfo{
|
|||
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (uData.getUuid() != uuid) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
LoginHandling.processLoginInfo(uData, getTime(), ip, banned, nickname, loginTimes);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.SessionData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.LogoutHandling;
|
||||
import org.bukkit.GameMode;
|
||||
|
@ -17,19 +18,22 @@ import org.bukkit.GameMode;
|
|||
public class LogoutInfo extends HandlingInfo {
|
||||
|
||||
private boolean banned;
|
||||
private SessionData sData;
|
||||
private GamemodeInfo gmInfo;
|
||||
|
||||
public LogoutInfo(UUID uuid, long time, boolean banned, GameMode gm) {
|
||||
public LogoutInfo(UUID uuid, long time, boolean banned, GameMode gm, SessionData sData) {
|
||||
super(uuid, InfoType.LOGOUT, time);
|
||||
this.banned = banned;
|
||||
this.sData = sData;
|
||||
this.gmInfo = new GamemodeInfo(uuid, time, gm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (uData.getUuid() != uuid) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
uData.addSession(sData);
|
||||
LogoutHandling.processLogoutInfo(uData, time, banned);
|
||||
gmInfo.process(uData);
|
||||
return true;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package main.java.com.djrapitops.plan.data.listeners;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
@ -36,7 +37,7 @@ public class PlanCommandPreprocessListener implements Listener {
|
|||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
if (event.getPlayer().hasPermission("plan.ignore.commanduse")) {
|
||||
if (Permissions.IGNORE_COMMANDUSE.userHasThisPermission(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
handler.handleCommand(event.getMessage().split(" ")[0]);
|
||||
|
|
|
@ -84,7 +84,7 @@ public class PlanPlayerListener implements Listener {
|
|||
Player player = event.getPlayer();
|
||||
UUID uuid = player.getUniqueId();
|
||||
handler.endSession(uuid);
|
||||
handler.addToPool(new LogoutInfo(uuid, new Date().getTime(), player.isBanned(), player.getGameMode()));
|
||||
handler.addToPool(new LogoutInfo(uuid, new Date().getTime(), player.isBanned(), player.getGameMode(), handler.getSession(uuid)));
|
||||
handler.saveCachedData(uuid);
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,8 @@ public class PlanPlayerListener implements Listener {
|
|||
}
|
||||
Player player = event.getPlayer();
|
||||
UUID uuid = player.getUniqueId();
|
||||
handler.addToPool(new LogoutInfo(uuid, new Date().getTime(), player.isBanned(), player.getGameMode()));
|
||||
handler.endSession(uuid);
|
||||
handler.addToPool(new LogoutInfo(uuid, new Date().getTime(), player.isBanned(), player.getGameMode(), handler.getSession(uuid)));
|
||||
handler.addToPool(new KickInfo(uuid));
|
||||
handler.saveCachedData(uuid);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@ import org.bukkit.GameMode;
|
|||
import org.bukkit.OfflinePlayer;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -8,6 +8,7 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
import java.util.Set;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -63,6 +64,10 @@ public class MiscUtils {
|
|||
}
|
||||
}
|
||||
|
||||
public static String getPlayerName(String[] args, CommandSender sender) {
|
||||
return getPlayerName(args, sender, Permissions.INSPECT_OTHER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used by the inspect command.
|
||||
*
|
||||
|
@ -70,13 +75,13 @@ public class MiscUtils {
|
|||
* @param sender Command sender
|
||||
* @return The name of the player (first argument or sender)
|
||||
*/
|
||||
public static String getPlayerName(String[] args, CommandSender sender) {
|
||||
public static String getPlayerName(String[] args, CommandSender sender, Permissions perm) {
|
||||
String playerName = "";
|
||||
boolean isConsole = !(sender instanceof Player);
|
||||
if (isConsole) {
|
||||
playerName = args[0];
|
||||
} else if (args.length > 0) {
|
||||
if (sender.hasPermission("plan.inspect.other")) {
|
||||
if (perm.userHasThisPermission(sender)) {
|
||||
playerName = args[0];
|
||||
} else if (args[0].toLowerCase().equals(sender.getName().toLowerCase())) {
|
||||
playerName = sender.getName();
|
||||
|
|
|
@ -44,7 +44,11 @@ public class DataCacheHandlerTest {
|
|||
private boolean calledSaveUserData;
|
||||
private boolean calledSaveMultiple;
|
||||
|
||||
public DataCacheHandlerTest() {
|
||||
public DataCacheHandlerTest() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
|
@ -88,10 +92,6 @@ public class DataCacheHandlerTest {
|
|||
};
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
|
83
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheClearQueueTest.java
vendored
Normal file
83
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheClearQueueTest.java
vendored
Normal file
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.io.File;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class})
|
||||
public class DataCacheClearQueueTest {
|
||||
|
||||
private Plan plan;
|
||||
private DataCacheHandler handler;
|
||||
|
||||
public DataCacheClearQueueTest() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
handler = new DataCacheHandler(plan) {
|
||||
@Override
|
||||
public boolean getCommandUseFromDb() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startQueues() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAsyncPeriodicSaveTask() throws IllegalArgumentException, IllegalStateException {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScheduleForClear_UUID() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScheduleForClear_Collection() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStop() {
|
||||
}
|
||||
|
||||
}
|
132
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java
vendored
Normal file
132
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java
vendored
Normal file
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheGetQueue;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class, Bukkit.class})
|
||||
public class DataCacheGetQueueTest {
|
||||
|
||||
private Plan plan;
|
||||
private Database db;
|
||||
private int rows;
|
||||
|
||||
public DataCacheGetQueueTest() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() throws IOException, Exception {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
db = new SQLiteDB(plan, "debug" + new Date().getTime()) {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void giveUserDataToProcessors(UUID uuid, DBCallableProcessor... processors) {
|
||||
if (uuid.equals(MockUtils.getPlayerUUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
for (DBCallableProcessor processor : processors) {
|
||||
processor.process(d);
|
||||
}
|
||||
} else if (uuid.equals(MockUtils.getPlayer2UUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer2();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
for (DBCallableProcessor processor : processors) {
|
||||
processor.process(d);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
rows = 0;
|
||||
if (f.exists()) {
|
||||
rows = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size();
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws IOException, SQLException {
|
||||
db.close();
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
int rowsAgain = 0;
|
||||
if (f.exists()) {
|
||||
rowsAgain = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size();
|
||||
}
|
||||
assertTrue("Errors were caught.", rows == rowsAgain);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScheduleForGet() {
|
||||
OfflinePlayer op = MockUtils.mockPlayer2();
|
||||
UserData exp = new UserData(op, new DemographicsData());
|
||||
|
||||
DataCacheGetQueue instance = new DataCacheGetQueue(plan);
|
||||
instance.scheduleForGet(exp.getUuid(), new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
assertTrue(data.equals(exp));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStop() {
|
||||
DataCacheGetQueue instance = new DataCacheGetQueue(plan);
|
||||
instance.stop();
|
||||
instance.scheduleForGet(MockUtils.getPlayerUUID(), new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
fail("Called get process after stop.");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
144
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheProcessQueueTest.java
vendored
Normal file
144
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheProcessQueueTest.java
vendored
Normal file
|
@ -0,0 +1,144 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheProcessQueue;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.InfoType;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class})
|
||||
public class DataCacheProcessQueueTest {
|
||||
|
||||
private DataCacheHandler handler;
|
||||
|
||||
public DataCacheProcessQueueTest() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
handler = new DataCacheHandler(plan) {
|
||||
@Override
|
||||
public boolean getCommandUseFromDb() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startQueues() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAsyncPeriodicSaveTask() throws IllegalArgumentException, IllegalStateException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getUserDataForProcessing(DBCallableProcessor p, UUID uuid) {
|
||||
if (uuid.equals(MockUtils.getPlayerUUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
p.process(d);
|
||||
} else if (uuid.equals(MockUtils.getPlayer2UUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer2();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
p.process(d);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddToPool_HandlingInfo() throws InterruptedException {
|
||||
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
q.addToPool(new HandlingInfo(uuid, InfoType.CHAT, 0) {
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
assertEquals(uuid, uData.getUuid());
|
||||
return true;
|
||||
}
|
||||
});
|
||||
Thread.sleep(1000);
|
||||
assertTrue(q.stop().isEmpty());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddToPool_Collection() throws InterruptedException {
|
||||
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
HandlingInfo h = new HandlingInfo(uuid, InfoType.CHAT, 0) {
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
assertEquals(uuid, uData.getUuid());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
List<HandlingInfo> l = new ArrayList<>();
|
||||
l.add(h);
|
||||
l.add(h);
|
||||
l.add(h);
|
||||
q.addToPool(l);
|
||||
Thread.sleep(1000);
|
||||
assertTrue(q.stop().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testContainsUUID() throws InterruptedException {
|
||||
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
HandlingInfo h = new HandlingInfo(uuid, InfoType.CHAT, 0) {
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
assertEquals(uuid, uData.getUuid());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
q.stop();
|
||||
Thread.sleep(2000);
|
||||
q.addToPool(h);
|
||||
assertTrue(q.containsUUID(uuid));
|
||||
}
|
||||
}
|
135
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheSaveQueueTest.java
vendored
Normal file
135
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheSaveQueueTest.java
vendored
Normal file
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheSaveQueue;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import static org.powermock.api.mockito.PowerMockito.when;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class})
|
||||
public class DataCacheSaveQueueTest {
|
||||
|
||||
private Plan plan;
|
||||
private Database db;
|
||||
private boolean calledSaveUserData;
|
||||
private boolean calledSaveUserData2;
|
||||
|
||||
public DataCacheSaveQueueTest() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
calledSaveUserData = false;
|
||||
calledSaveUserData2 = false;
|
||||
db = new SQLiteDB(plan, "debug" + new Date().getTime()) {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveUserData(UUID uuid, UserData data) throws SQLException {
|
||||
if (calledSaveUserData) {
|
||||
calledSaveUserData2 = true;
|
||||
}
|
||||
calledSaveUserData = true;
|
||||
|
||||
}
|
||||
};
|
||||
when(plan.getDB()).thenReturn(db);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScheduleForSave_UserData() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.scheduleForSave(data);
|
||||
Thread.sleep(500);
|
||||
assertTrue(calledSaveUserData);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScheduleForSave_Collection() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
UserData data2 = new UserData(MockUtils.mockPlayer2(), new DemographicsData());
|
||||
List<UserData> l = new ArrayList<>();
|
||||
l.add(data);
|
||||
l.add(data2);
|
||||
q.scheduleForSave(l);
|
||||
Thread.sleep(1000);
|
||||
assertTrue(calledSaveUserData);
|
||||
assertTrue(calledSaveUserData2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScheduleNewPlayer() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.scheduleNewPlayer(data);
|
||||
Thread.sleep(500);
|
||||
assertTrue(calledSaveUserData);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testContainsUUID() {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.stop();
|
||||
q.scheduleNewPlayer(data);
|
||||
assertTrue(q.containsUUID(data.getUuid()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStop() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.stop();
|
||||
Thread.sleep(2000);
|
||||
q.scheduleNewPlayer(data);
|
||||
assertTrue(!calledSaveUserData);
|
||||
}
|
||||
|
||||
}
|
|
@ -7,8 +7,8 @@ package test.java.main.java.com.djrapitops.plan.data.handling.info;
|
|||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.SessionData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.LogoutHandling;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.LogoutInfo;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
@ -56,12 +56,13 @@ public class LogoutInfoTest {
|
|||
long time = 20L;
|
||||
Exception ex = null;
|
||||
data.setLastGamemode(GameMode.SURVIVAL);
|
||||
LogoutInfo i = new LogoutInfo(data.getUuid(), time, true, GameMode.CREATIVE);
|
||||
LogoutInfo i = new LogoutInfo(data.getUuid(), time, true, GameMode.CREATIVE, new SessionData(0, 1));
|
||||
assertTrue(i.process(data));
|
||||
assertTrue("Last Played wrong", data.getLastPlayed() == 20L);
|
||||
assertTrue("Playtime wrong", data.getPlayTime() == 10L);
|
||||
assertTrue("Banned wrong", data.isBanned());
|
||||
assertTrue("Didn't process gamemode", data.getLastGamemode() == GameMode.CREATIVE);
|
||||
assertEquals(1, data.getSessions().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -71,7 +72,7 @@ public class LogoutInfoTest {
|
|||
data.updateBanned(false);
|
||||
long time = 20L;
|
||||
Exception ex = null;
|
||||
LogoutInfo i = new LogoutInfo(null, time, true, GameMode.CREATIVE);
|
||||
LogoutInfo i = new LogoutInfo(null, time, true, GameMode.CREATIVE, new SessionData(0, 1));
|
||||
try {
|
||||
assertTrue(!i.process(data));
|
||||
} catch (NullPointerException e) {
|
||||
|
@ -82,6 +83,7 @@ public class LogoutInfoTest {
|
|||
assertTrue("Playtime wrong", data.getPlayTime() == 0L);
|
||||
assertTrue("Banned wrong", !data.isBanned());
|
||||
assertTrue("Didn't process gamemode", data.getLastGamemode() == GameMode.SURVIVAL);
|
||||
assertEquals(0, data.getSessions().size());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,7 +13,9 @@ import java.sql.SQLException;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
|
@ -23,6 +25,7 @@ import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
|||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.MySQLDB;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
@ -51,6 +54,7 @@ public class DatabaseTest {
|
|||
|
||||
private Plan plan;
|
||||
private Database db;
|
||||
private Database backup;
|
||||
private int rows;
|
||||
|
||||
public DatabaseTest() {
|
||||
|
@ -71,6 +75,7 @@ public class DatabaseTest {
|
|||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
|
@ -85,8 +90,14 @@ public class DatabaseTest {
|
|||
PowerMock.mockStatic(Bukkit.class);
|
||||
OfflinePlayer op = MockUtils.mockPlayer();
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("45b0dfdb-f71d-4cf3-8c21-27c9d4c651db"))).andReturn(op);
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("45b0dfdb-f71d-4cf3-8c21-27c9d4c651db"))).andReturn(op);
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("45b0dfdb-f71d-4cf3-8c21-27c9d4c651db"))).andReturn(op);
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("45b0dfdb-f71d-4cf3-8c21-27c9d4c651db"))).andReturn(op);
|
||||
op = MockUtils.mockPlayer2();
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("ec94a954-1fa1-445b-b09b-9b698519af80"))).andReturn(op);
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("ec94a954-1fa1-445b-b09b-9b698519af80"))).andReturn(op);
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("ec94a954-1fa1-445b-b09b-9b698519af80"))).andReturn(op);
|
||||
EasyMock.expect(Bukkit.getOfflinePlayer(UUID.fromString("ec94a954-1fa1-445b-b09b-9b698519af80"))).andReturn(op);
|
||||
PowerMock.replay(Bukkit.class);
|
||||
// BukkitScheduler mockScheduler = Mockito.mock(BukkitScheduler.class);
|
||||
// EasyMock.expect(Bukkit.getScheduler()).andReturn(mockScheduler);
|
||||
|
@ -95,6 +106,9 @@ public class DatabaseTest {
|
|||
@After
|
||||
public void tearDown() throws IOException, SQLException {
|
||||
db.close();
|
||||
if (backup != null) {
|
||||
backup.close();
|
||||
}
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
int rowsAgain = 0;
|
||||
if (f.exists()) {
|
||||
|
@ -112,6 +126,7 @@ public class DatabaseTest {
|
|||
public void testSqLiteGetConfigName() {
|
||||
assertEquals("sqlite", db.getConfigName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSqLiteGetgName() {
|
||||
assertEquals("SQLite", db.getName());
|
||||
|
@ -126,6 +141,7 @@ public class DatabaseTest {
|
|||
}
|
||||
}.getConfigName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMysqlGetName() {
|
||||
assertEquals("MySQL", new MySQLDB(plan) {
|
||||
|
@ -175,6 +191,8 @@ public class DatabaseTest {
|
|||
db.init();
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
data.addNickname("TestUpdateForSave");
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
DBCallableProcessor process = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData d) {
|
||||
|
@ -184,11 +202,23 @@ public class DatabaseTest {
|
|||
db.giveUserDataToProcessors(data.getUuid(), process);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNicknameInjection() throws SQLException {
|
||||
db.init();
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
UserData data2 = new UserData(MockUtils.mockPlayer2(), new DemographicsData());
|
||||
db.saveUserData(data2.getUuid(), data2);
|
||||
data.addNickname("s); DROP TABLE plan_users;--");
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
assertTrue("Removed Users table.", db.getUserId(data2.getUuid().toString()) != -1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveMultipleUserData() throws SQLException {
|
||||
db.init();
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
data.addNickname("TestUpdateForSave");
|
||||
UserData data2 = new UserData(MockUtils.mockPlayer2(), new DemographicsData());
|
||||
List<UserData> list = new ArrayList<>();
|
||||
list.add(data);
|
||||
|
@ -218,4 +248,49 @@ public class DatabaseTest {
|
|||
db.removeAccount(data.getUuid().toString());
|
||||
assertTrue("Contains the user", !db.wasSeenBefore(data.getUuid()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBackup() throws SQLException {
|
||||
db.init();
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
UserData data2 = new UserData(MockUtils.mockPlayer2(), new DemographicsData());
|
||||
List<UserData> list = new ArrayList<>();
|
||||
list.add(data);
|
||||
list.add(data2);
|
||||
db.saveMultipleUserData(list);
|
||||
backup = new SQLiteDB(plan, "debug-backup") {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
};
|
||||
backup.init();
|
||||
ManageUtils.clearAndCopy(backup, db, db.getSavedUUIDs());
|
||||
Set<UUID> savedUUIDs = backup.getSavedUUIDs();
|
||||
assertTrue("Didn't contain 1", savedUUIDs.contains(data.getUuid()));
|
||||
assertTrue("Didn't contain 2", savedUUIDs.contains(data2.getUuid()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRestore() throws SQLException {
|
||||
db.init();
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
UserData data2 = new UserData(MockUtils.mockPlayer2(), new DemographicsData());
|
||||
List<UserData> list = new ArrayList<>();
|
||||
list.add(data);
|
||||
list.add(data2);
|
||||
db.saveMultipleUserData(list);
|
||||
backup = new SQLiteDB(plan, "debug-backup") {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
};
|
||||
backup.init();
|
||||
ManageUtils.clearAndCopy(backup, db, db.getSavedUUIDs());
|
||||
ManageUtils.clearAndCopy(db, backup, backup.getSavedUUIDs());
|
||||
Set<UUID> savedUUIDs = db.getSavedUUIDs();
|
||||
assertTrue("Didn't contain 1", savedUUIDs.contains(data.getUuid()));
|
||||
assertTrue("Didn't contain 2", savedUUIDs.contains(data2.getUuid()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,7 +47,6 @@ public class HtmlUtilsTest {
|
|||
|
||||
@Test
|
||||
public void testGetHtmlStringFromResource() throws Exception {
|
||||
System.out.println("getHtmlStringFromResource");
|
||||
String fileName = "player.html";
|
||||
String result = HtmlUtils.getHtmlStringFromResource(fileName);
|
||||
assertTrue("Result null", result != null);
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.utilities;
|
||||
|
||||
import java.util.Date;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.utilities.NewPlayerCreator;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class NewPlayerCreatorTest {
|
||||
|
||||
public NewPlayerCreatorTest() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateNewPlayer_Player() {
|
||||
OfflinePlayer p = MockUtils.mockPlayer2();
|
||||
UserData result = NewPlayerCreator.createNewPlayer(p);
|
||||
UserData exp = new UserData(p, new DemographicsData());
|
||||
exp.setLastGamemode(GameMode.SURVIVAL);
|
||||
exp.setLastPlayed(new Date().getTime());
|
||||
long zero = Long.parseLong("0");
|
||||
exp.setPlayTime(zero);
|
||||
exp.setTimesKicked(0);
|
||||
exp.setLoginTimes(0);
|
||||
exp.setLastGmSwapTime(zero);
|
||||
exp.setDeaths(0);
|
||||
exp.setMobKills(0);
|
||||
assertTrue(exp.equals(result));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateNewPlayer_OfflinePlayer() {
|
||||
Player p = MockUtils.mockPlayer2();
|
||||
UserData result = NewPlayerCreator.createNewPlayer(p);
|
||||
UserData exp = new UserData(p, new DemographicsData());
|
||||
exp.setLastGamemode(GameMode.SPECTATOR);
|
||||
exp.setLastPlayed(new Date().getTime());
|
||||
long zero = Long.parseLong("0");
|
||||
exp.setPlayTime(zero);
|
||||
exp.setTimesKicked(0);
|
||||
exp.setLoginTimes(0);
|
||||
exp.setLastGmSwapTime(zero);
|
||||
exp.setDeaths(0);
|
||||
exp.setMobKills(0);
|
||||
assertTrue(exp.equals(result));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateNewPlayer_OfflinePlayer_GameMode() {
|
||||
Player p = MockUtils.mockPlayer();
|
||||
UserData result = NewPlayerCreator.createNewPlayer(p, GameMode.CREATIVE);
|
||||
UserData exp = new UserData(p, new DemographicsData());
|
||||
exp.setLastGamemode(GameMode.CREATIVE);
|
||||
exp.setLastPlayed(new Date().getTime());
|
||||
long zero = Long.parseLong("0");
|
||||
exp.setPlayTime(zero);
|
||||
exp.setTimesKicked(0);
|
||||
exp.setLoginTimes(0);
|
||||
exp.setLastGmSwapTime(zero);
|
||||
exp.setDeaths(0);
|
||||
exp.setMobKills(0);
|
||||
assertTrue(exp.equals(result));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue