diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java index 5c3c227e..b2cd359e 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java @@ -29,7 +29,21 @@ public class AccountsCommand implements ExecutableCommand { final String playerName = arguments.isEmpty() ? sender.getName() : arguments.get(0); // Assumption: a player name cannot contain '.' - if (!playerName.contains(".")) { + if (playerName.contains(".")) { + bukkitService.runTaskAsynchronously(new Runnable() { + @Override + public void run() { + List accountList = dataSource.getAllAuthsByIp(playerName); + if (accountList.isEmpty()) { + sender.sendMessage("[AuthMe] This IP does not exist in the database."); + } else if (accountList.size() == 1) { + sender.sendMessage("[AuthMe] " + playerName + " is a single account player"); + } else { + outputAccountsList(sender, playerName, accountList); + } + } + }); + } else { bukkitService.runTaskAsynchronously(new Runnable() { @Override public void run() { @@ -49,20 +63,6 @@ public class AccountsCommand implements ExecutableCommand { } } }); - } else { - bukkitService.runTaskAsynchronously(new Runnable() { - @Override - public void run() { - List accountList = dataSource.getAllAuthsByIp(playerName); - if (accountList.isEmpty()) { - sender.sendMessage("[AuthMe] This IP does not exist in the database."); - } else if (accountList.size() == 1) { - sender.sendMessage("[AuthMe] " + playerName + " is a single account player"); - } else { - outputAccountsList(sender, playerName, accountList); - } - } - }); } } diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java index 2e353f15..d2242347 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java @@ -66,11 +66,11 @@ public class ChangePasswordAdminCommand implements ExecutableCommand { HashedPassword hashedPassword = passwordSecurity.computeHash(playerPass, playerNameLowerCase); auth.setPassword(hashedPassword); - if (!dataSource.updatePassword(auth)) { - commandService.send(sender, MessageKey.ERROR); - } else { + if (dataSource.updatePassword(auth)) { commandService.send(sender, MessageKey.PASSWORD_CHANGED_SUCCESS); ConsoleLogger.info(playerNameLowerCase + "'s password changed"); + } else { + commandService.send(sender, MessageKey.ERROR); } } diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/FirstSpawnCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/FirstSpawnCommand.java index 9cb3ca9b..52793e10 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/FirstSpawnCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/FirstSpawnCommand.java @@ -18,10 +18,10 @@ public class FirstSpawnCommand extends PlayerCommand { @Override public void runCommand(Player player, List arguments, CommandService commandService) { - if (spawnLoader.getFirstSpawn() != null) { - player.teleport(spawnLoader.getFirstSpawn()); - } else { + if (spawnLoader.getFirstSpawn() == null) { player.sendMessage("[AuthMe] First spawn has failed, please try to define the first spawn"); + } else { + player.teleport(spawnLoader.getFirstSpawn()); } } } diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/SpawnCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/SpawnCommand.java index 8c142d25..c7f584f7 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/SpawnCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/SpawnCommand.java @@ -15,10 +15,10 @@ public class SpawnCommand extends PlayerCommand { @Override public void runCommand(Player player, List arguments, CommandService commandService) { - if (spawnLoader.getSpawn() != null) { - player.teleport(spawnLoader.getSpawn()); - } else { + if (spawnLoader.getSpawn() == null) { player.sendMessage("[AuthMe] Spawn has failed, please try to define the spawn"); + } else { + player.teleport(spawnLoader.getSpawn()); } } } diff --git a/src/main/java/fr/xephi/authme/initialization/AuthMeServiceInitializer.java b/src/main/java/fr/xephi/authme/initialization/AuthMeServiceInitializer.java index 9bc8525c..9213772f 100644 --- a/src/main/java/fr/xephi/authme/initialization/AuthMeServiceInitializer.java +++ b/src/main/java/fr/xephi/authme/initialization/AuthMeServiceInitializer.java @@ -181,15 +181,15 @@ public class AuthMeServiceInitializer { Class[] annotations = injection.getDependencyAnnotations(); Object[] values = new Object[dependencies.length]; for (int i = 0; i < dependencies.length; ++i) { - if (annotations[i] != null) { + if (annotations[i] == null) { + values[i] = get(dependencies[i], traversedClasses); + } else { Object value = objects.get(annotations[i]); if (value == null) { throw new IllegalStateException("Value for field with @" + annotations[i].getSimpleName() + " must be registered beforehand"); } values[i] = value; - } else { - values[i] = get(dependencies[i], traversedClasses); } } return values; diff --git a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java index d829a6ce..a86ac93e 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java @@ -68,12 +68,12 @@ public class AsynchronousLogin implements AsynchronousProcess { private boolean needsCaptcha(Player player) { final String name = player.getName().toLowerCase(); if (service.getProperty(SecuritySettings.USE_CAPTCHA)) { - if (!plugin.captcha.containsKey(name)) { - plugin.captcha.putIfAbsent(name, 1); - } else { + if (plugin.captcha.containsKey(name)) { int i = plugin.captcha.get(name) + 1; plugin.captcha.remove(name); plugin.captcha.putIfAbsent(name, i); + } else { + plugin.captcha.putIfAbsent(name, 1); } if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) > Settings.maxLoginTry) { plugin.cap.putIfAbsent(name, RandomString.generate(Settings.captchaLength)); diff --git a/src/main/java/fr/xephi/authme/security/crypts/PHPBB.java b/src/main/java/fr/xephi/authme/security/crypts/PHPBB.java index c07db986..074143fd 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/PHPBB.java +++ b/src/main/java/fr/xephi/authme/security/crypts/PHPBB.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates and open the template in - * the editor. - */ package fr.xephi.authme.security.crypts; import fr.xephi.authme.security.HashUtils; @@ -24,7 +20,7 @@ public class PHPBB extends HexSaltedMethod { byte[] hash = md5er.digest(bytes); return bytes2hex(hash); } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); + throw new UnsupportedOperationException(e); } } diff --git a/src/main/java/fr/xephi/authme/settings/domain/EnumProperty.java b/src/main/java/fr/xephi/authme/settings/domain/EnumProperty.java index 14d09329..3e3d3e3b 100644 --- a/src/main/java/fr/xephi/authme/settings/domain/EnumProperty.java +++ b/src/main/java/fr/xephi/authme/settings/domain/EnumProperty.java @@ -24,7 +24,7 @@ class EnumProperty> extends Property { return getDefaultValue(); } E mappedValue = mapToEnum(textValue); - return mappedValue != null ? mappedValue : getDefaultValue(); + return mappedValue == null ? getDefaultValue() : mappedValue; } @Override diff --git a/src/main/java/fr/xephi/authme/settings/domain/Property.java b/src/main/java/fr/xephi/authme/settings/domain/Property.java index 1d5100af..a92d3222 100644 --- a/src/main/java/fr/xephi/authme/settings/domain/Property.java +++ b/src/main/java/fr/xephi/authme/settings/domain/Property.java @@ -3,6 +3,7 @@ package fr.xephi.authme.settings.domain; import org.bukkit.configuration.file.FileConfiguration; import org.yaml.snakeyaml.Yaml; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -33,6 +34,17 @@ public abstract class Property { return new StringListProperty(path, defaultValues); } + /** + * Create a new String list property where all values are lowercase. + * + * @param path The property's path + * @param defaultValues The items in the default list + * @return The created list property + */ + public static Property> newLowercaseListProperty(String path, String... defaultValues) { + return new LowercaseStringListProperty(path, defaultValues); + } + /** * Create a new enum property. * @@ -165,7 +177,7 @@ public abstract class Property { /** * String list property. */ - private static final class StringListProperty extends Property> { + private static class StringListProperty extends Property> { public StringListProperty(String path, String[] defaultValues) { super(path, Arrays.asList(defaultValues)); @@ -196,4 +208,28 @@ public abstract class Property { } } + /** + * Lowercase String list property. + */ + private static final class LowercaseStringListProperty extends StringListProperty { + + public LowercaseStringListProperty(String path, String[] defaultValues) { + super(path, defaultValues); + } + + @Override + public List getFromFile(FileConfiguration configuration) { + if (!configuration.isList(getPath())) { + return getDefaultValue(); + } + + // make sure all elements are lowercase + List lowercaseList = new ArrayList<>(); + for (String element : configuration.getStringList(getPath())) { + lowercaseList.add(element.toLowerCase()); + } + + return lowercaseList; + } + } } diff --git a/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java b/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java index 926ddac7..3fd7b40b 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java @@ -7,6 +7,7 @@ import fr.xephi.authme.settings.domain.SettingsClass; import java.util.List; import static fr.xephi.authme.settings.domain.Property.newListProperty; +import static fr.xephi.authme.settings.domain.Property.newLowercaseListProperty; import static fr.xephi.authme.settings.domain.Property.newProperty; public class RestrictionSettings implements SettingsClass { @@ -24,7 +25,7 @@ public class RestrictionSettings implements SettingsClass { @Comment("Allowed commands for unauthenticated players") public static final Property> ALLOW_COMMANDS = - newListProperty("settings.restrictions.allowCommands", + newLowercaseListProperty("settings.restrictions.allowCommands", "/login", "/register", "/l", "/reg", "/email", "/captcha"); @Comment({ @@ -81,7 +82,7 @@ public class RestrictionSettings implements SettingsClass { " AllowedRestrictedUser:", " - playername;127.0.0.1"}) public static final Property> ALLOWED_RESTRICTED_USERS = - newListProperty("settings.restrictions.AllowedRestrictedUser"); + newLowercaseListProperty("settings.restrictions.AllowedRestrictedUser"); @Comment("Should unregistered players be kicked immediately?") public static final Property KICK_NON_REGISTERED = @@ -188,7 +189,7 @@ public class RestrictionSettings implements SettingsClass { "It is case-sensitive!" }) public static final Property> UNRESTRICTED_NAMES = - newListProperty("settings.unrestrictions.UnrestrictedName"); + newLowercaseListProperty("settings.unrestrictions.UnrestrictedName"); private RestrictionSettings() { diff --git a/src/main/java/fr/xephi/authme/settings/properties/SecuritySettings.java b/src/main/java/fr/xephi/authme/settings/properties/SecuritySettings.java index 9a52ca82..f865793b 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/SecuritySettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/SecuritySettings.java @@ -8,6 +8,7 @@ import fr.xephi.authme.settings.domain.SettingsClass; import java.util.List; import static fr.xephi.authme.settings.domain.Property.newListProperty; +import static fr.xephi.authme.settings.domain.Property.newLowercaseListProperty; import static fr.xephi.authme.settings.domain.Property.newProperty; public class SecuritySettings implements SettingsClass { @@ -98,7 +99,7 @@ public class SecuritySettings implements SettingsClass { "- '123456'", "- 'password'"}) public static final Property> UNSAFE_PASSWORDS = - newListProperty("settings.security.unsafePasswords", "123456", "password", "qwerty", "12345", "54321"); + newLowercaseListProperty("settings.security.unsafePasswords", "123456", "password", "qwerty", "12345", "54321"); private SecuritySettings() { } diff --git a/src/main/java/fr/xephi/authme/util/BukkitService.java b/src/main/java/fr/xephi/authme/util/BukkitService.java index 592caa22..5837b942 100644 --- a/src/main/java/fr/xephi/authme/util/BukkitService.java +++ b/src/main/java/fr/xephi/authme/util/BukkitService.java @@ -158,7 +158,7 @@ public class BukkitService { } else if (obj instanceof Player[]) { return Arrays.asList((Player[]) obj); } else { - String type = (obj != null) ? obj.getClass().getName() : "null"; + String type = (obj == null) ? "null" : obj.getClass().getName(); ConsoleLogger.showError("Unknown list of online players of type " + type); } } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { diff --git a/src/test/java/fr/xephi/authme/ReflectionTestUtils.java b/src/test/java/fr/xephi/authme/ReflectionTestUtils.java index 33579e80..397181bb 100644 --- a/src/test/java/fr/xephi/authme/ReflectionTestUtils.java +++ b/src/test/java/fr/xephi/authme/ReflectionTestUtils.java @@ -27,7 +27,7 @@ public final class ReflectionTestUtils { Field field = getField(clazz, instance, fieldName); field.set(instance, value); } catch (IllegalAccessException e) { - throw new RuntimeException( + throw new UnsupportedOperationException( format("Could not set value to field '%s' for instance '%s' of class '%s'", fieldName, instance, clazz.getName()), e); } @@ -39,7 +39,7 @@ public final class ReflectionTestUtils { field.setAccessible(true); return field; } catch (NoSuchFieldException e) { - throw new RuntimeException(format("Could not get field '%s' for instance '%s' of class '%s'", + throw new UnsupportedOperationException(format("Could not get field '%s' for instance '%s' of class '%s'", fieldName, instance, clazz.getName()), e); } } @@ -50,7 +50,7 @@ public final class ReflectionTestUtils { try { return field.get(instance); } catch (IllegalAccessException e) { - throw new RuntimeException("Could not get value of field '" + fieldName + "'"); + throw new UnsupportedOperationException("Could not get value of field '" + fieldName + "'"); } } @@ -69,7 +69,7 @@ public final class ReflectionTestUtils { method.setAccessible(true); return method; } catch (NoSuchMethodException e) { - throw new RuntimeException("Could not retrieve method '" + methodName + "' from class '" + throw new UnsupportedOperationException("Could not retrieve method '" + methodName + "' from class '" + clazz.getName() + "'"); } } diff --git a/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java b/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java index 786ea477..1af9687b 100644 --- a/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java +++ b/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java @@ -22,6 +22,7 @@ import static fr.xephi.authme.permission.DefaultPermission.OP_ONLY; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertSame; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import static org.mockito.Matchers.any; @@ -187,12 +188,12 @@ public class CommandInitializerTest { assertThat(command.getExecutableCommand(), not(nullValue())); ExecutableCommand commandExec = command.getExecutableCommand(); ExecutableCommand storedExec = implementations.get(command.getExecutableCommand().getClass()); - if (storedExec != null) { - assertThat("has same implementation of '" + storedExec.getClass().getName() + "' for command with " - + "parent " + (command.getParent() == null ? "null" : command.getParent().getLabels()), - storedExec == commandExec, equalTo(true)); - } else { + if (storedExec == null) { implementations.put(commandExec.getClass(), commandExec); + } else { + assertSame("has same implementation of '" + storedExec.getClass().getName() + "' for command with " + + "parent " + (command.getParent() == null ? "null" : command.getParent().getLabels()), + storedExec, commandExec); } } }; @@ -211,7 +212,7 @@ public class CommandInitializerTest { for (CommandArgumentDescription argument : command.getArguments()) { if (argument.isOptional()) { encounteredOptionalArg = true; - } else if (!argument.isOptional() && encounteredOptionalArg) { + } else if (encounteredOptionalArg) { fail("Mandatory arguments should come before optional ones for command with labels '" + command.getLabels() + "'"); } @@ -256,11 +257,10 @@ public class CommandInitializerTest { @Override public void accept(CommandDescription command, int depth) { CommandPermissions permissions = command.getCommandPermissions(); - if (permissions != null && OP_ONLY.equals(permissions.getDefaultPermission())) { - if (!hasAdminNode(permissions)) { - fail("The command with labels " + command.getLabels() + " has OP_ONLY default " - + "permission but no permission node on admin level"); - } + if (permissions != null && OP_ONLY.equals(permissions.getDefaultPermission()) + && !hasAdminNode(permissions)) { + fail("The command with labels " + command.getLabels() + " has OP_ONLY default " + + "permission but no permission node on admin level"); } } @@ -298,13 +298,13 @@ public class CommandInitializerTest { Map, Integer> collection) { final Class clazz = command.getExecutableCommand().getClass(); Integer existingCount = collection.get(clazz); - if (existingCount != null) { + if (existingCount == null) { + collection.put(clazz, argCount); + } else { String commandDescription = "Command with label '" + command.getLabels().get(0) + "' and parent '" - + (command.getParent() != null ? command.getLabels().get(0) : "null") + "' "; + + (command.getParent() == null ? "null" : command.getLabels().get(0)) + "' "; assertThat(commandDescription + "should point to " + clazz + " with arguments consistent to others", argCount, equalTo(existingCount)); - } else { - collection.put(clazz, argCount); } } }; diff --git a/src/test/java/fr/xephi/authme/command/CommandMapperTest.java b/src/test/java/fr/xephi/authme/command/CommandMapperTest.java index ebcd0b64..b5789bbb 100644 --- a/src/test/java/fr/xephi/authme/command/CommandMapperTest.java +++ b/src/test/java/fr/xephi/authme/command/CommandMapperTest.java @@ -6,7 +6,6 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import java.util.Arrays; import java.util.List; import java.util.Set; @@ -52,7 +51,7 @@ public class CommandMapperTest { @Test public void shouldMapPartsToLoginChildCommand() { // given - List parts = Arrays.asList("authme", "login", "test1"); + List parts = asList("authme", "login", "test1"); CommandSender sender = mock(CommandSender.class); given(permissionsManager.hasPermission(eq(sender), any(CommandDescription.class))).willReturn(true); @@ -71,7 +70,7 @@ public class CommandMapperTest { @Test public void shouldMapPartsToCommandWithNoCaseSensitivity() { // given - List parts = Arrays.asList("Authme", "REG", "arg1", "arg2"); + List parts = asList("Authme", "REG", "arg1", "arg2"); CommandSender sender = mock(CommandSender.class); given(permissionsManager.hasPermission(eq(sender), any(CommandDescription.class))).willReturn(true); @@ -89,7 +88,7 @@ public class CommandMapperTest { @Test public void shouldRejectCommandWithTooManyArguments() { // given - List parts = Arrays.asList("authme", "register", "pass123", "pass123", "pass123"); + List parts = asList("authme", "register", "pass123", "pass123", "pass123"); CommandSender sender = mock(CommandSender.class); given(permissionsManager.hasPermission(eq(sender), any(CommandDescription.class))).willReturn(true); @@ -107,7 +106,7 @@ public class CommandMapperTest { @Test public void shouldRejectCommandWithTooFewArguments() { // given - List parts = Arrays.asList("authme", "Reg"); + List parts = asList("authme", "Reg"); CommandSender sender = mock(CommandSender.class); given(permissionsManager.hasPermission(eq(sender), any(CommandDescription.class))).willReturn(true); @@ -125,7 +124,7 @@ public class CommandMapperTest { @Test public void shouldSuggestCommandWithSimilarLabel() { // given - List parts = Arrays.asList("authme", "reh", "pass123", "pass123"); + List parts = asList("authme", "reh", "pass123", "pass123"); CommandSender sender = mock(CommandSender.class); given(permissionsManager.hasPermission(eq(sender), any(CommandDescription.class))).willReturn(true); @@ -144,7 +143,7 @@ public class CommandMapperTest { @Test public void shouldSuggestMostSimilarCommand() { // given - List parts = Arrays.asList("authme", "asdfawetawty4asdca"); + List parts = asList("authme", "asdfawetawty4asdca"); CommandSender sender = mock(CommandSender.class); given(permissionsManager.hasPermission(eq(sender), any(CommandDescription.class))).willReturn(true); @@ -259,7 +258,7 @@ public class CommandMapperTest { @Test public void shouldRecognizeMissingPermissionForCommand() { // given - List parts = Arrays.asList("authme", "login", "test1"); + List parts = asList("authme", "login", "test1"); CommandSender sender = mock(CommandSender.class); given(permissionsManager.hasPermission(eq(sender), any(CommandDescription.class))).willReturn(false); diff --git a/src/test/java/fr/xephi/authme/command/TestCommandsUtil.java b/src/test/java/fr/xephi/authme/command/TestCommandsUtil.java index 3beb7693..6f7857b0 100644 --- a/src/test/java/fr/xephi/authme/command/TestCommandsUtil.java +++ b/src/test/java/fr/xephi/authme/command/TestCommandsUtil.java @@ -85,11 +85,11 @@ public final class TestCommandsUtil { private static CommandDescription createCommand(PermissionNode permission, CommandDescription parent, List labels, CommandArgumentDescription... arguments) { PermissionNode[] notNullPermission; - if (permission != null) { + if (permission == null) { + notNullPermission = new PermissionNode[0]; + } else { notNullPermission = new PermissionNode[1]; notNullPermission[0] = permission; - } else { - notNullPermission = new PermissionNode[0]; } CommandDescription.CommandBuilder command = CommandDescription.builder() diff --git a/src/test/java/fr/xephi/authme/security/PasswordSecurityTest.java b/src/test/java/fr/xephi/authme/security/PasswordSecurityTest.java index f3d577dc..e98f2377 100644 --- a/src/test/java/fr/xephi/authme/security/PasswordSecurityTest.java +++ b/src/test/java/fr/xephi/authme/security/PasswordSecurityTest.java @@ -73,13 +73,13 @@ public class PasswordSecurityTest { Object[] arguments = invocation.getArguments(); if (arguments[0] instanceof PasswordEncryptionEvent) { PasswordEncryptionEvent event = (PasswordEncryptionEvent) arguments[0]; - caughtClassInEvent = event.getMethod() != null ? event.getMethod().getClass() : null; + caughtClassInEvent = event.getMethod() == null ? null : event.getMethod().getClass(); event.setMethod(method); } return null; } }).when(pluginManager).callEvent(any(Event.class)); - initializer = new AuthMeServiceInitializer(new String[]{}); + initializer = new AuthMeServiceInitializer(); initializer.register(NewSetting.class, settings); initializer.register(DataSource.class, dataSource); initializer.register(PluginManager.class, pluginManager); diff --git a/src/test/java/fr/xephi/authme/security/crypts/AbstractEncryptionMethodTest.java b/src/test/java/fr/xephi/authme/security/crypts/AbstractEncryptionMethodTest.java index 73e52fa3..45489710 100644 --- a/src/test/java/fr/xephi/authme/security/crypts/AbstractEncryptionMethodTest.java +++ b/src/test/java/fr/xephi/authme/security/crypts/AbstractEncryptionMethodTest.java @@ -152,7 +152,7 @@ public abstract class AbstractEncryptionMethodTest { * * @param method The method to create a test class for */ - static void generateTest(EncryptionMethod method) { + protected static void generateTest(EncryptionMethod method) { String className = method.getClass().getSimpleName(); // Create javadoc and "public class extends" and the constructor call "super(new Class()," System.out.println("/**\n * Test for {@link " + className + "}.\n */"); diff --git a/src/test/java/fr/xephi/authme/settings/domain/PropertyTest.java b/src/test/java/fr/xephi/authme/settings/domain/PropertyTest.java index ff84c393..3ea8ff0e 100644 --- a/src/test/java/fr/xephi/authme/settings/domain/PropertyTest.java +++ b/src/test/java/fr/xephi/authme/settings/domain/PropertyTest.java @@ -38,6 +38,9 @@ public class PropertyTest { when(configuration.isList("list.path.test")).thenReturn(true); when(configuration.getStringList("list.path.test")).thenReturn(Arrays.asList("test1", "Test2", "3rd test")); when(configuration.isList("list.path.wrong")).thenReturn(false); + when(configuration.isList("lowercaselist.path.test")).thenReturn(true); + when(configuration.getStringList("lowercaselist.path.test")).thenReturn(Arrays.asList("test1", "Test2", "3rd test")); + when(configuration.isList("lowercaselist.path.wrong")).thenReturn(false); } /* Boolean */ @@ -141,4 +144,29 @@ public class PropertyTest { assertThat(result, contains("default", "list", "elements")); } + /* Lowercase String list */ + @Test + public void shouldGetLowercaseStringListValue() { + // given + Property> property = Property.newLowercaseListProperty("lowercaselist.path.test", "1", "b"); + + // when + List result = property.getFromFile(configuration); + + // then + assertThat(result, contains("test1", "test2", "3rd test")); + } + + @Test + public void shouldGetLowercaseStringListDefault() { + // given + Property> property = + Property.newLowercaseListProperty("lowercaselist.path.wrong", "default", "list", "elements"); + + // when + List result = property.getFromFile(configuration); + + // then + assertThat(result, contains("default", "list", "elements")); + } } diff --git a/src/test/java/tools/ToolsRunner.java b/src/test/java/tools/ToolsRunner.java index f8e74aea..b387f32f 100644 --- a/src/test/java/tools/ToolsRunner.java +++ b/src/test/java/tools/ToolsRunner.java @@ -62,10 +62,10 @@ public final class ToolsRunner { ToolTask task = tasks.get(taskName); if (task == null) { System.out.format("Unknown task '%s'%n", taskName); - } else if (!(task instanceof AutoToolTask)) { - System.out.format("Task '%s' cannot be run on command line%n", taskName); - } else { + } else if (task instanceof AutoToolTask) { ((AutoToolTask) task).executeDefault(); + } else { + System.out.format("Task '%s' cannot be run on command line%n", taskName); } } } diff --git a/src/test/java/tools/messages/VerifyMessagesTask.java b/src/test/java/tools/messages/VerifyMessagesTask.java index c4415e03..de888be7 100644 --- a/src/test/java/tools/messages/VerifyMessagesTask.java +++ b/src/test/java/tools/messages/VerifyMessagesTask.java @@ -133,7 +133,7 @@ public final class VerifyMessagesTask implements ToolTask { File folder = new File(MESSAGES_FOLDER); File[] files = folder.listFiles(); if (files == null) { - throw new RuntimeException("Could not read files from folder '" + folder.getName() + "'"); + throw new IllegalStateException("Could not read files from folder '" + folder.getName() + "'"); } List messageFiles = new ArrayList<>(); @@ -143,7 +143,7 @@ public final class VerifyMessagesTask implements ToolTask { } } if (messageFiles.isEmpty()) { - throw new RuntimeException("Error getting message files: list of files is empty"); + throw new IllegalStateException("Error getting message files: list of files is empty"); } return messageFiles; } diff --git a/src/test/java/tools/utils/FileUtils.java b/src/test/java/tools/utils/FileUtils.java index dbf40037..acc260de 100644 --- a/src/test/java/tools/utils/FileUtils.java +++ b/src/test/java/tools/utils/FileUtils.java @@ -27,7 +27,7 @@ public final class FileUtils { try { Files.write(Paths.get(outputFile), contents.getBytes()); } catch (IOException e) { - throw new RuntimeException("Failed to write to file '" + outputFile + "'", e); + throw new UnsupportedOperationException("Failed to write to file '" + outputFile + "'", e); } } @@ -35,7 +35,7 @@ public final class FileUtils { try { Files.write(Paths.get(outputFile), contents.getBytes(), StandardOpenOption.APPEND); } catch (IOException e) { - throw new RuntimeException("Failed to append to file '" + outputFile + "'", e); + throw new UnsupportedOperationException("Failed to append to file '" + outputFile + "'", e); } } @@ -43,7 +43,7 @@ public final class FileUtils { try { return new String(Files.readAllBytes(Paths.get(file)), CHARSET); } catch (IOException e) { - throw new RuntimeException("Could not read from file '" + file + "'", e); + throw new UnsupportedOperationException("Could not read from file '" + file + "'", e); } } @@ -51,7 +51,7 @@ public final class FileUtils { try { return Files.readAllLines(Paths.get(file), CHARSET); } catch (IOException e) { - throw new RuntimeException("Could not read from file '" + file + "'", e); + throw new UnsupportedOperationException("Could not read from file '" + file + "'", e); } } diff --git a/src/test/java/tools/utils/ToolsConstants.java b/src/test/java/tools/utils/ToolsConstants.java index c94a22b1..6708fd77 100644 --- a/src/test/java/tools/utils/ToolsConstants.java +++ b/src/test/java/tools/utils/ToolsConstants.java @@ -5,9 +5,6 @@ package tools.utils; */ public final class ToolsConstants { - private ToolsConstants() { - } - public static final String MAIN_SOURCE_ROOT = "src/main/java/"; public static final String MAIN_RESOURCES_ROOT = "src/main/resources/"; @@ -21,4 +18,7 @@ public final class ToolsConstants { public static final String DOCS_FOLDER_URL = "https://github.com/AuthMe-Team/AuthMeReloaded/tree/master/docs/"; + private ToolsConstants() { + } + }