#432 Injector improvements

- Separate FieldInjection from default fallback for no-Inject public no-args constructor classes
- Make CommandInitializer a normal, instantiable service
- Add various injections instead of fetching through command service
This commit is contained in:
ljacqu
2016-05-08 11:15:56 +02:00
parent 3e6223dc5a
commit 5e5836f167
50 changed files with 554 additions and 332 deletions
@@ -2,11 +2,13 @@ package fr.xephi.authme.command;
import fr.xephi.authme.permission.PermissionsManager;
import org.bukkit.command.CommandSender;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.MockitoAnnotations;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Collections;
import java.util.List;
@@ -35,23 +37,24 @@ import static org.mockito.Mockito.verify;
/**
* Test for {@link CommandHandler}.
*/
@SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
// Justification: It's more readable to use asList() everywhere in the test when we often generated two lists where one
// often consists of only one element, e.g. myMethod(asList("authme"), asList("my", "args"), ...)
@SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
@RunWith(MockitoJUnitRunner.class)
public class CommandHandlerTest {
@InjectMocks
private CommandHandler handler;
@Mock
private CommandService serviceMock;
@Mock
private PermissionsManager permissionsManager;
@Captor
private ArgumentCaptor<List<String>> captor;
@Before
public void setUpCommandHandler() {
MockitoAnnotations.initMocks(this);
serviceMock = mock(CommandService.class);
handler = new CommandHandler(serviceMock);
}
@Test
public void shouldCallMappedCommandWithArgs() {
@@ -109,9 +112,7 @@ public class CommandHandlerTest {
CommandDescription command = mock(CommandDescription.class);
given(serviceMock.mapPartsToCommand(any(CommandSender.class), anyListOf(String.class))).willReturn(
new FoundCommandResult(command, asList("unreg"), asList("testPlayer"), 0.0, INCORRECT_ARGUMENTS));
PermissionsManager permissionsManager = mock(PermissionsManager.class);
given(permissionsManager.hasPermission(sender, command)).willReturn(true);
given(serviceMock.getPermissionsManager()).willReturn(permissionsManager);
// when
handler.processCommand(sender, bukkitLabel, bukkitArgs);
@@ -135,9 +136,7 @@ public class CommandHandlerTest {
CommandDescription command = mock(CommandDescription.class);
given(serviceMock.mapPartsToCommand(any(CommandSender.class), anyListOf(String.class))).willReturn(
new FoundCommandResult(command, asList("unreg"), asList("testPlayer"), 0.0, INCORRECT_ARGUMENTS));
PermissionsManager permissionsManager = mock(PermissionsManager.class);
given(permissionsManager.hasPermission(sender, command)).willReturn(false);
given(serviceMock.getPermissionsManager()).willReturn(permissionsManager);
// when
handler.processCommand(sender, bukkitLabel, bukkitArgs);
@@ -43,7 +43,7 @@ public class CommandInitializerTest {
@SuppressWarnings("unchecked")
@BeforeClass
public static void initializeCommandManager() {
public static void initializeCommandCollection() {
AuthMeServiceInitializer initializer = mock(AuthMeServiceInitializer.class);
when(initializer.newInstance(any(Class.class))).thenAnswer(new Answer<Object>() {
@Override
@@ -52,8 +52,8 @@ public class CommandInitializerTest {
return mock(clazz);
}
});
commands = CommandInitializer.buildCommands(initializer);
CommandInitializer commandInitializer = new CommandInitializer(initializer);
commands = commandInitializer.getCommands();
}
@Test
@@ -41,7 +41,9 @@ public class CommandMapperTest {
@Before
public void setUpMocks() {
permissionsManager = mock(PermissionsManager.class);
mapper = new CommandMapper(commands, permissionsManager);
CommandInitializer initializer = mock(CommandInitializer.class);
given(initializer.getCommands()).willReturn(commands);
mapper = new CommandMapper(initializer, permissionsManager);
}
// -----------
@@ -1,15 +1,9 @@
package fr.xephi.authme.command;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.command.help.HelpProvider;
import fr.xephi.authme.hooks.PluginHooks;
import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.output.Messages;
import fr.xephi.authme.permission.PermissionsManager;
import fr.xephi.authme.process.Management;
import fr.xephi.authme.security.PasswordSecurity;
import fr.xephi.authme.settings.NewSetting;
import fr.xephi.authme.settings.SpawnLoader;
import fr.xephi.authme.settings.domain.Property;
import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.util.BukkitService;
@@ -42,24 +36,14 @@ public class CommandServiceTest {
@InjectMocks
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;
@Mock
private NewSetting settings;
@Mock
private PluginHooks pluginHooks;
@Mock
private SpawnLoader spawnLoader;
@Mock
private ValidationService validationService;
@Mock
private BukkitService bukkitService;
@@ -122,29 +106,6 @@ public class CommandServiceTest {
assertThat(captor.getAllValues(), equalTo(messages));
}
@Test
public void shouldReturnManagementObject() {
// given
Management management = mock(Management.class);
given(authMe.getManagement()).willReturn(management);
// when
Management result = commandService.getManagement();
// then
assertThat(result, equalTo(management));
verify(authMe).getManagement();
}
@Test
public void shouldReturnPermissionsManager() {
// given / when
PermissionsManager result = commandService.getPermissionsManager();
// then
assertThat(result, equalTo(permissionsManager));
}
@Test
public void shouldRetrieveMessage() {
// given
@@ -183,15 +144,6 @@ public class CommandServiceTest {
assertThat(result, equalTo(settings));
}
@Test
public void shouldReturnAuthMe() {
// given/when
AuthMe result = commandService.getAuthMe();
// then
assertThat(result, equalTo(authMe));
}
@Test
public void shouldValidatePassword() {
// given
@@ -1,11 +1,14 @@
package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.command.CommandService;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.settings.SpawnLoader;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Collections;
@@ -21,18 +24,24 @@ import static org.mockito.Mockito.verify;
/**
* Test for {@link FirstSpawnCommand}.
*/
@RunWith(MockitoJUnitRunner.class)
public class FirstSpawnCommandTest {
@InjectMocks
private FirstSpawnCommand command;
@Mock
private SpawnLoader spawnLoader;
@Mock
private CommandService service;
@Test
public void shouldTeleportToFirstSpawn() {
// given
Location firstSpawn = mock(Location.class);
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.getFirstSpawn()).willReturn(firstSpawn);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
Player player = mock(Player.class);
ExecutableCommand command = new FirstSpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -45,12 +54,8 @@ public class FirstSpawnCommandTest {
@Test
public void shouldHandleMissingFirstSpawn() {
// given
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.getFirstSpawn()).willReturn(null);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
Player player = mock(Player.class);
ExecutableCommand command = new FirstSpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -9,6 +9,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@@ -21,8 +22,8 @@ import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
/**
* Test for {@link ForceLoginCommand}.
@@ -30,6 +31,15 @@ import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
public class ForceLoginCommandTest {
@InjectMocks
private ForceLoginCommand command;
@Mock
private Management management;
@Mock
private PermissionsManager permissionsManager;
@Mock
private CommandService commandService;
@@ -40,7 +50,6 @@ public class ForceLoginCommandTest {
Player player = mockPlayer(false, playerName);
given(commandService.getPlayer(playerName)).willReturn(player);
CommandSender sender = mock(CommandSender.class);
ExecutableCommand command = new ForceLoginCommand();
// when
command.executeCommand(sender, Collections.singletonList(playerName), commandService);
@@ -48,7 +57,7 @@ public class ForceLoginCommandTest {
// then
verify(commandService).getPlayer(playerName);
verify(sender).sendMessage(argThat(equalTo("Player needs to be online!")));
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
}
@Test
@@ -65,7 +74,7 @@ public class ForceLoginCommandTest {
// then
verify(commandService).getPlayer(playerName);
verify(sender).sendMessage(argThat(equalTo("Player needs to be online!")));
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
}
@Test
@@ -74,12 +83,8 @@ public class ForceLoginCommandTest {
String playerName = "testTest";
Player player = mockPlayer(true, playerName);
given(commandService.getPlayer(playerName)).willReturn(player);
PermissionsManager permissionsManager = mock(PermissionsManager.class);
given(permissionsManager.hasPermission(player, PlayerPermission.CAN_LOGIN_BE_FORCED)).willReturn(false);
given(commandService.getPermissionsManager()).willReturn(permissionsManager);
CommandSender sender = mock(CommandSender.class);
ExecutableCommand command = new ForceLoginCommand();
// when
command.executeCommand(sender, Collections.singletonList(playerName), commandService);
@@ -87,7 +92,7 @@ public class ForceLoginCommandTest {
// then
verify(commandService).getPlayer(playerName);
verify(sender).sendMessage(argThat(containsString("You cannot force login the player")));
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
}
@Test
@@ -96,14 +101,8 @@ public class ForceLoginCommandTest {
String playerName = "tester23";
Player player = mockPlayer(true, playerName);
given(commandService.getPlayer(playerName)).willReturn(player);
PermissionsManager permissionsManager = mock(PermissionsManager.class);
given(permissionsManager.hasPermission(player, PlayerPermission.CAN_LOGIN_BE_FORCED)).willReturn(true);
given(commandService.getPermissionsManager()).willReturn(permissionsManager);
Management management = mock(Management.class);
given(commandService.getManagement()).willReturn(management);
CommandSender sender = mock(CommandSender.class);
ExecutableCommand command = new ForceLoginCommand();
// when
command.executeCommand(sender, Collections.singletonList(playerName), commandService);
@@ -119,15 +118,9 @@ public class ForceLoginCommandTest {
String senderName = "tester23";
Player player = mockPlayer(true, senderName);
given(commandService.getPlayer(senderName)).willReturn(player);
PermissionsManager permissionsManager = mock(PermissionsManager.class);
given(permissionsManager.hasPermission(player, PlayerPermission.CAN_LOGIN_BE_FORCED)).willReturn(true);
given(commandService.getPermissionsManager()).willReturn(permissionsManager);
Management management = mock(Management.class);
given(commandService.getManagement()).willReturn(management);
CommandSender sender = mock(CommandSender.class);
given(sender.getName()).willReturn(senderName);
ExecutableCommand command = new ForceLoginCommand();
// when
command.executeCommand(sender, Collections.<String>emptyList(), commandService);
@@ -3,15 +3,17 @@ package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.TestHelper;
import fr.xephi.authme.command.CommandService;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.output.MessageKey;
import org.bukkit.command.CommandSender;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Collections;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.matches;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
@@ -20,8 +22,18 @@ import static org.mockito.Mockito.verify;
/**
* Test for {@link ReloadCommand}.
*/
@RunWith(MockitoJUnitRunner.class)
public class ReloadCommandTest {
@InjectMocks
private ReloadCommand command;
@Mock
private AuthMe authMe;
@Mock
private CommandService service;
@BeforeClass
public static void setUpLogger() {
TestHelper.setupLogger();
@@ -30,11 +42,7 @@ public class ReloadCommandTest {
@Test
public void shouldReload() throws Exception {
// given
AuthMe authMe = mock(AuthMe.class);
CommandService service = mock(CommandService.class);
given(service.getAuthMe()).willReturn(authMe);
CommandSender sender = mock(CommandSender.class);
ExecutableCommand command = new ReloadCommand();
// when
command.executeCommand(sender, Collections.<String>emptyList(), service);
@@ -47,12 +55,8 @@ public class ReloadCommandTest {
@Test
public void shouldHandleReloadError() throws Exception {
// given
AuthMe authMe = mock(AuthMe.class);
doThrow(IllegalStateException.class).when(authMe).reload();
CommandService service = mock(CommandService.class);
given(service.getAuthMe()).willReturn(authMe);
CommandSender sender = mock(CommandSender.class);
ExecutableCommand command = new ReloadCommand();
// when
command.executeCommand(sender, Collections.<String>emptyList(), service);
@@ -1,11 +1,14 @@
package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.command.CommandService;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.settings.SpawnLoader;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Collections;
@@ -18,21 +21,25 @@ import static org.mockito.Mockito.verify;
/**
* Test for {@link SetFirstSpawnCommand}.
*/
@RunWith(MockitoJUnitRunner.class)
public class SetFirstSpawnCommandTest {
@InjectMocks
private SetFirstSpawnCommand command;
@Mock
private SpawnLoader spawnLoader;
@Mock
private CommandService service;
@Test
public void shouldSetFirstSpawn() {
// given
Player player = mock(Player.class);
Location location = mock(Location.class);
given(player.getLocation()).willReturn(location);
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.setFirstSpawn(location)).willReturn(true);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
ExecutableCommand command = new SetFirstSpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -48,13 +55,7 @@ public class SetFirstSpawnCommandTest {
Player player = mock(Player.class);
Location location = mock(Location.class);
given(player.getLocation()).willReturn(location);
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.setFirstSpawn(location)).willReturn(false);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
ExecutableCommand command = new SetFirstSpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -1,11 +1,14 @@
package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.command.CommandService;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.settings.SpawnLoader;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Collections;
@@ -18,21 +21,25 @@ import static org.mockito.Mockito.verify;
/**
* Test for {@link SetSpawnCommand}.
*/
@RunWith(MockitoJUnitRunner.class)
public class SetSpawnCommandTest {
@InjectMocks
private SetSpawnCommand command;
@Mock
private SpawnLoader spawnLoader;
@Mock
private CommandService service;
@Test
public void shouldSetSpawn() {
// given
Player player = mock(Player.class);
Location location = mock(Location.class);
given(player.getLocation()).willReturn(location);
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.setSpawn(location)).willReturn(true);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
ExecutableCommand command = new SetSpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -48,13 +55,7 @@ public class SetSpawnCommandTest {
Player player = mock(Player.class);
Location location = mock(Location.class);
given(player.getLocation()).willReturn(location);
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.setSpawn(location)).willReturn(false);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
ExecutableCommand command = new SetSpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -1,11 +1,14 @@
package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.command.CommandService;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.settings.SpawnLoader;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Collections;
@@ -21,18 +24,24 @@ import static org.mockito.Mockito.verify;
/**
* Test for {@link SpawnCommand}.
*/
@RunWith(MockitoJUnitRunner.class)
public class SpawnCommandTest {
@InjectMocks
private SpawnCommand command;
@Mock
private SpawnLoader spawnLoader;
@Mock
private CommandService service;
@Test
public void shouldTeleportToSpawn() {
// given
Location spawn = mock(Location.class);
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.getSpawn()).willReturn(spawn);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
Player player = mock(Player.class);
ExecutableCommand command = new SpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -45,12 +54,8 @@ public class SpawnCommandTest {
@Test
public void shouldHandleMissingSpawn() {
// given
SpawnLoader spawnLoader = mock(SpawnLoader.class);
given(spawnLoader.getSpawn()).willReturn(null);
CommandService service = mock(CommandService.class);
given(service.getSpawnLoader()).willReturn(spawnLoader);
Player player = mock(Player.class);
ExecutableCommand command = new SpawnCommand();
// when
command.executeCommand(player, Collections.<String>emptyList(), service);
@@ -8,6 +8,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@@ -16,8 +17,8 @@ import java.util.Arrays;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
/**
* Test for {@link AddEmailCommand}.
@@ -25,20 +26,25 @@ import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
public class AddEmailCommandTest {
@InjectMocks
private AddEmailCommand command;
@Mock
private CommandService commandService;
@Mock
private Management management;
@Test
public void shouldRejectNonPlayerSender() {
// given
CommandSender sender = mock(BlockCommandSender.class);
AddEmailCommand command = new AddEmailCommand();
// when
command.executeCommand(sender, new ArrayList<String>(), commandService);
// then
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
}
@Test
@@ -47,9 +53,6 @@ public class AddEmailCommandTest {
Player sender = mock(Player.class);
String email = "mail@example";
given(commandService.validateEmail(email)).willReturn(true);
Management management = mock(Management.class);
given(commandService.getManagement()).willReturn(management);
AddEmailCommand command = new AddEmailCommand();
// when
command.executeCommand(sender, Arrays.asList(email, email), commandService);
@@ -64,13 +67,12 @@ public class AddEmailCommandTest {
Player sender = mock(Player.class);
String email = "asdfasdf@example.com";
given(commandService.validateEmail(email)).willReturn(true);
AddEmailCommand command = new AddEmailCommand();
// when
command.executeCommand(sender, Arrays.asList(email, "wrongConf"), commandService);
// then
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
verify(commandService).send(sender, MessageKey.CONFIRM_EMAIL_MESSAGE);
}
@@ -5,49 +5,51 @@ import fr.xephi.authme.process.Management;
import org.bukkit.command.BlockCommandSender;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.ArrayList;
import java.util.Arrays;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
/**
* Test for {@link ChangeEmailCommand}.
*/
@RunWith(MockitoJUnitRunner.class)
public class ChangeEmailCommandTest {
@InjectMocks
private ChangeEmailCommand command;
@Mock
private Management management;
@Mock
private CommandService commandService;
@Before
public void setUpMocks() {
commandService = mock(CommandService.class);
}
@Test
public void shouldRejectNonPlayerSender() {
// given
CommandSender sender = mock(BlockCommandSender.class);
ChangeEmailCommand command = new ChangeEmailCommand();
// when
command.executeCommand(sender, new ArrayList<String>(), commandService);
// then
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
}
@Test
public void shouldForwardData() {
// given
Player sender = mock(Player.class);
ChangeEmailCommand command = new ChangeEmailCommand();
Management management = mock(Management.class);
given(commandService.getManagement()).willReturn(management);
// when
command.executeCommand(sender, Arrays.asList("new.mail@example.org", "old_mail@example.org"), commandService);
@@ -7,6 +7,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@@ -14,12 +15,11 @@ import java.util.ArrayList;
import java.util.Collections;
import static org.hamcrest.Matchers.containsString;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
/**
* Test for {@link LoginCommand}.
@@ -27,6 +27,12 @@ import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
public class LoginCommandTest {
@InjectMocks
private LoginCommand command;
@Mock
private Management management;
@Mock
private CommandService commandService;
@@ -34,13 +40,12 @@ public class LoginCommandTest {
public void shouldStopIfSenderIsNotAPlayer() {
// given
CommandSender sender = mock(BlockCommandSender.class);
LoginCommand command = new LoginCommand();
// when
command.executeCommand(sender, new ArrayList<String>(), commandService);
// then
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
verify(sender).sendMessage(argThat(containsString("only for players")));
}
@@ -48,9 +53,6 @@ public class LoginCommandTest {
public void shouldCallManagementForPlayerCaller() {
// given
Player sender = mock(Player.class);
LoginCommand command = new LoginCommand();
Management management = mock(Management.class);
given(commandService.getManagement()).willReturn(management);
// when
command.executeCommand(sender, Collections.singletonList("password"), commandService);
@@ -7,22 +7,33 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.ArrayList;
import java.util.Collections;
import static org.hamcrest.Matchers.containsString;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.argThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
/**
* Test for {@link LogoutCommand}.
*/
@RunWith(MockitoJUnitRunner.class)
public class LogoutCommandTest {
@InjectMocks
private LogoutCommand command;
@Mock
private Management management;
@Mock
private CommandService commandService;
@Before
@@ -34,13 +45,12 @@ public class LogoutCommandTest {
public void shouldStopIfSenderIsNotAPlayer() {
// given
CommandSender sender = mock(BlockCommandSender.class);
LogoutCommand command = new LogoutCommand();
// when
command.executeCommand(sender, new ArrayList<String>(), commandService);
// then
verify(commandService, never()).getManagement();
verifyZeroInteractions(management);
verify(sender).sendMessage(argThat(containsString("only for players")));
}
@@ -48,9 +58,6 @@ public class LogoutCommandTest {
public void shouldCallManagementForPlayerCaller() {
// given
Player sender = mock(Player.class);
LogoutCommand command = new LogoutCommand();
Management management = mock(Management.class);
given(commandService.getManagement()).willReturn(management);
// when
command.executeCommand(sender, Collections.singletonList("password"), commandService);
@@ -2,7 +2,6 @@ package fr.xephi.authme.command.executable.register;
import fr.xephi.authme.TestHelper;
import fr.xephi.authme.command.CommandService;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.process.Management;
import fr.xephi.authme.security.HashAlgorithm;
@@ -19,6 +18,7 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@@ -40,10 +40,15 @@ import static org.mockito.Mockito.verifyZeroInteractions;
@RunWith(MockitoJUnitRunner.class)
public class RegisterCommandTest {
@InjectMocks
private RegisterCommand command;
@Mock
private CommandService commandService;
@Mock
private Management management;
@Mock
private Player sender;
@@ -54,7 +59,6 @@ public class RegisterCommandTest {
@Before
public void linkMocksAndProvideSettingDefaults() {
given(commandService.getManagement()).willReturn(management);
given(commandService.getProperty(SecuritySettings.PASSWORD_HASH)).willReturn(HashAlgorithm.BCRYPT);
given(commandService.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(false);
given(commandService.getProperty(RestrictionSettings.ENABLE_PASSWORD_CONFIRMATION)).willReturn(false);
@@ -64,7 +68,6 @@ public class RegisterCommandTest {
public void shouldNotRunForNonPlayerSender() {
// given
CommandSender sender = mock(BlockCommandSender.class);
RegisterCommand command = new RegisterCommand();
// when
command.executeCommand(sender, new ArrayList<String>(), commandService);
@@ -78,7 +81,6 @@ public class RegisterCommandTest {
public void shouldForwardToManagementForTwoFactor() {
// given
given(commandService.getProperty(SecuritySettings.PASSWORD_HASH)).willReturn(HashAlgorithm.TWO_FACTOR);
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Collections.<String>emptyList(), commandService);
@@ -89,10 +91,7 @@ public class RegisterCommandTest {
@Test
public void shouldReturnErrorForEmptyArguments() {
// given
ExecutableCommand command = new RegisterCommand();
// when
// given / when
command.executeCommand(sender, Collections.<String>emptyList(), commandService);
// then
@@ -104,7 +103,6 @@ public class RegisterCommandTest {
public void shouldReturnErrorForMissingConfirmation() {
// given
given(commandService.getProperty(RestrictionSettings.ENABLE_PASSWORD_CONFIRMATION)).willReturn(true);
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Collections.singletonList("arrrr"), commandService);
@@ -119,7 +117,6 @@ public class RegisterCommandTest {
// given
given(commandService.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(true);
given(commandService.getProperty(RegistrationSettings.ENABLE_CONFIRM_EMAIL)).willReturn(true);
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Collections.singletonList("test@example.org"), commandService);
@@ -135,7 +132,6 @@ public class RegisterCommandTest {
given(commandService.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(true);
given(commandService.getProperty(RegistrationSettings.ENABLE_CONFIRM_EMAIL)).willReturn(false);
given(commandService.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn("");
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Collections.singletonList("myMail@example.tld"), commandService);
@@ -155,8 +151,6 @@ public class RegisterCommandTest {
given(commandService.getProperty(RegistrationSettings.ENABLE_CONFIRM_EMAIL)).willReturn(true);
given(commandService.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn("server@example.com");
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Arrays.asList(playerMail, playerMail), commandService);
@@ -176,8 +170,6 @@ public class RegisterCommandTest {
given(commandService.getProperty(RegistrationSettings.ENABLE_CONFIRM_EMAIL)).willReturn(true);
given(commandService.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn("server@example.com");
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Arrays.asList(playerMail, "invalid"), commandService);
@@ -197,7 +189,6 @@ public class RegisterCommandTest {
given(commandService.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(true);
given(commandService.getProperty(RegistrationSettings.ENABLE_CONFIRM_EMAIL)).willReturn(true);
given(commandService.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn("server@example.com");
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Arrays.asList(playerMail, playerMail), commandService);
@@ -211,7 +202,6 @@ public class RegisterCommandTest {
public void shouldRejectInvalidPasswordConfirmation() {
// given
given(commandService.getProperty(RestrictionSettings.ENABLE_PASSWORD_CONFIRMATION)).willReturn(true);
ExecutableCommand command = new RegisterCommand();
// when
command.executeCommand(sender, Arrays.asList("myPass", "mypass"), commandService);
@@ -223,10 +213,7 @@ public class RegisterCommandTest {
@Test
public void shouldPerformPasswordValidation() {
// given
ExecutableCommand command = new RegisterCommand();
// when
// given / when
command.executeCommand(sender, Collections.singletonList("myPass"), commandService);
// then