Replace "InjectDelayed" extension everywhere with Mockito extension

- Remove custom extension and InjectDelayed/BeforeInjecting annotations
- Revert injector version to same stable version as on master
This commit is contained in:
ljacqu 2023-12-20 13:44:24 +01:00
parent 67ec2189b2
commit 13087f7322
29 changed files with 299 additions and 305 deletions

View File

@ -602,7 +602,7 @@
<dependency> <dependency>
<groupId>ch.jalu</groupId> <groupId>ch.jalu</groupId>
<artifactId>injector</artifactId> <artifactId>injector</artifactId>
<version>1.1-SNAPSHOT</version> <version>1.0</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>

View File

@ -24,7 +24,7 @@ public class HelpMessagesService {
private final HelpMessagesFileHandler helpMessagesFileHandler; private final HelpMessagesFileHandler helpMessagesFileHandler;
@Inject @Inject
HelpMessagesService(HelpMessagesFileHandler helpMessagesFileHandler) { public HelpMessagesService(HelpMessagesFileHandler helpMessagesFileHandler) {
this.helpMessagesFileHandler = helpMessagesFileHandler; this.helpMessagesFileHandler = helpMessagesFileHandler;
} }

View File

@ -12,7 +12,6 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.io.File; import java.io.File;
import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE; import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE;
@ -24,18 +23,16 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
private final ConsoleLogger logger = ConsoleLoggerFactory.get(AbstractMessageFileHandler.class); private final ConsoleLogger logger = ConsoleLoggerFactory.get(AbstractMessageFileHandler.class);
@DataFolder private final File dataFolder;
@Inject private final Settings settings;
private File dataFolder;
@Inject
private Settings settings;
private String filename; private String filename;
private FileConfiguration configuration; private FileConfiguration configuration;
private final String defaultFile; private final String defaultFile;
protected AbstractMessageFileHandler() { protected AbstractMessageFileHandler(@DataFolder File dataFolder, Settings settings) {
this.dataFolder = dataFolder;
this.settings = settings;
this.defaultFile = createFilePath(DEFAULT_LANGUAGE); this.defaultFile = createFilePath(DEFAULT_LANGUAGE);
} }

View File

@ -1,12 +1,15 @@
package fr.xephi.authme.message; package fr.xephi.authme.message;
import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.output.ConsoleLoggerFactory;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.util.FileUtils; import fr.xephi.authme.util.FileUtils;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.File;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
@ -21,8 +24,9 @@ public class HelpMessagesFileHandler extends AbstractMessageFileHandler {
private FileConfiguration defaultConfiguration; private FileConfiguration defaultConfiguration;
@Inject // Trigger injection in the superclass @Inject
HelpMessagesFileHandler() { public HelpMessagesFileHandler(@DataFolder File dataFolder, Settings settings) {
super(dataFolder, settings);
} }
/** /**

View File

@ -1,10 +1,13 @@
package fr.xephi.authme.message; package fr.xephi.authme.message;
import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.message.updater.MessageUpdater; import fr.xephi.authme.message.updater.MessageUpdater;
import fr.xephi.authme.output.ConsoleLoggerFactory;
import fr.xephi.authme.settings.Settings;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.File;
import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE; import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE;
@ -15,10 +18,12 @@ public class MessagesFileHandler extends AbstractMessageFileHandler {
private final ConsoleLogger logger = ConsoleLoggerFactory.get(MessagesFileHandler.class); private final ConsoleLogger logger = ConsoleLoggerFactory.get(MessagesFileHandler.class);
@Inject private final MessageUpdater messageUpdater;
private MessageUpdater messageUpdater;
MessagesFileHandler() { @Inject
MessagesFileHandler(@DataFolder File dataFolder, Settings settings, MessageUpdater messageUpdater) {
super(dataFolder, settings);
this.messageUpdater = messageUpdater;
} }
@Override @Override

View File

@ -29,18 +29,19 @@ import java.util.Map;
*/ */
public class HelpTranslationGenerator { public class HelpTranslationGenerator {
@Inject private final CommandInitializer commandInitializer;
private CommandInitializer commandInitializer; private final HelpMessagesService helpMessagesService;
private final Settings settings;
private final File dataFolder;
@Inject @Inject
private HelpMessagesService helpMessagesService; HelpTranslationGenerator(CommandInitializer commandInitializer, HelpMessagesService helpMessagesService,
Settings settings, @DataFolder File dataFolder) {
@Inject this.commandInitializer = commandInitializer;
private Settings settings; this.helpMessagesService = helpMessagesService;
this.settings = settings;
@DataFolder this.dataFolder = dataFolder;
@Inject }
private File dataFolder;
/** /**
* Updates the help file to contain entries for all commands. * Updates the help file to contain entries for all commands.

View File

@ -1,8 +1,5 @@
package fr.xephi.authme.command; package fr.xephi.authme.command;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.command.TestCommandsUtil.TestLoginCommand; import fr.xephi.authme.command.TestCommandsUtil.TestLoginCommand;
import fr.xephi.authme.command.TestCommandsUtil.TestRegisterCommand; import fr.xephi.authme.command.TestCommandsUtil.TestRegisterCommand;
import fr.xephi.authme.command.TestCommandsUtil.TestUnregisterCommand; import fr.xephi.authme.command.TestCommandsUtil.TestUnregisterCommand;
@ -11,9 +8,11 @@ import fr.xephi.authme.permission.PermissionNode;
import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PermissionsManager;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -33,16 +32,16 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verifyNoInteractions;
/** /**
* Test for {@link CommandMapper}. * Test for {@link CommandMapper}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class CommandMapperTest { class CommandMapperTest {
private static List<CommandDescription> commands; private static List<CommandDescription> commands;
@InjectDelayed
private CommandMapper mapper; private CommandMapper mapper;
@Mock @Mock
@ -56,9 +55,10 @@ class CommandMapperTest {
commands = TestCommandsUtil.generateCommands(); commands = TestCommandsUtil.generateCommands();
} }
@BeforeInjecting @BeforeEach
void setUpMocks() { void setUpMocksAndMapper() {
given(commandInitializer.getCommands()).willReturn(commands); given(commandInitializer.getCommands()).willReturn(commands);
mapper = new CommandMapper(commandInitializer, permissionsManager);
} }
// ----------- // -----------
@ -106,12 +106,12 @@ class CommandMapperTest {
// given // given
List<String> parts = asList("authme", "register", "pass123", "pass123", "pass123"); List<String> parts = asList("authme", "register", "pass123", "pass123", "pass123");
CommandSender sender = mock(CommandSender.class); CommandSender sender = mock(CommandSender.class);
given(permissionsManager.hasPermission(eq(sender), any(PermissionNode.class))).willReturn(true);
// when // when
FoundCommandResult result = mapper.mapPartsToCommand(sender, parts); FoundCommandResult result = mapper.mapPartsToCommand(sender, parts);
// then // then
verifyNoInteractions(permissionsManager);
assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "authme", "register"))); assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "authme", "register")));
assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS)); assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS));
assertThat(result.getDifference(), equalTo(0.0)); assertThat(result.getDifference(), equalTo(0.0));
@ -124,12 +124,12 @@ class CommandMapperTest {
// given // given
List<String> parts = asList("authme", "Reg"); List<String> parts = asList("authme", "Reg");
CommandSender sender = mock(CommandSender.class); CommandSender sender = mock(CommandSender.class);
given(permissionsManager.hasPermission(eq(sender), any(PermissionNode.class))).willReturn(true);
// when // when
FoundCommandResult result = mapper.mapPartsToCommand(sender, parts); FoundCommandResult result = mapper.mapPartsToCommand(sender, parts);
// then // then
verifyNoInteractions(permissionsManager);
assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "authme", "register"))); assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "authme", "register")));
assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS)); assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS));
assertThat(result.getDifference(), equalTo(0.0)); assertThat(result.getDifference(), equalTo(0.0));
@ -142,12 +142,12 @@ class CommandMapperTest {
// given // given
List<String> parts = asList("authme", "reh", "pass123", "pass123"); List<String> parts = asList("authme", "reh", "pass123", "pass123");
CommandSender sender = mock(CommandSender.class); CommandSender sender = mock(CommandSender.class);
given(permissionsManager.hasPermission(eq(sender), any(PermissionNode.class))).willReturn(true);
// when // when
FoundCommandResult result = mapper.mapPartsToCommand(sender, parts); FoundCommandResult result = mapper.mapPartsToCommand(sender, parts);
// then // then
verifyNoInteractions(permissionsManager);
assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "authme", "register"))); assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "authme", "register")));
assertThat(result.getResultStatus(), equalTo(FoundResultStatus.UNKNOWN_LABEL)); assertThat(result.getResultStatus(), equalTo(FoundResultStatus.UNKNOWN_LABEL));
assertThat(result.getDifference() < 0.75, equalTo(true)); assertThat(result.getDifference() < 0.75, equalTo(true));
@ -161,12 +161,12 @@ class CommandMapperTest {
// given // given
List<String> parts = asList("authme", "asdfawetawty4asdca"); List<String> parts = asList("authme", "asdfawetawty4asdca");
CommandSender sender = mock(CommandSender.class); CommandSender sender = mock(CommandSender.class);
given(permissionsManager.hasPermission(eq(sender), any(PermissionNode.class))).willReturn(true);
// when // when
FoundCommandResult result = mapper.mapPartsToCommand(sender, parts); FoundCommandResult result = mapper.mapPartsToCommand(sender, parts);
// then // then
verifyNoInteractions(permissionsManager);
assertThat(result.getCommandDescription(), not(nullValue())); assertThat(result.getCommandDescription(), not(nullValue()));
assertThat(result.getResultStatus(), equalTo(FoundResultStatus.UNKNOWN_LABEL)); assertThat(result.getResultStatus(), equalTo(FoundResultStatus.UNKNOWN_LABEL));
assertThat(result.getDifference() > 0.75, equalTo(true)); assertThat(result.getDifference() > 0.75, equalTo(true));
@ -179,12 +179,12 @@ class CommandMapperTest {
// given // given
List<String> parts = singletonList("unregister"); List<String> parts = singletonList("unregister");
CommandSender sender = mock(CommandSender.class); CommandSender sender = mock(CommandSender.class);
given(permissionsManager.hasPermission(eq(sender), any(PermissionNode.class))).willReturn(true);
// when // when
FoundCommandResult result = mapper.mapPartsToCommand(sender, parts); FoundCommandResult result = mapper.mapPartsToCommand(sender, parts);
// then // then
verifyNoInteractions(permissionsManager);
assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS)); assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS));
assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "unregister"))); assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "unregister")));
assertThat(result.getDifference(), equalTo(0.0)); assertThat(result.getDifference(), equalTo(0.0));
@ -197,12 +197,12 @@ class CommandMapperTest {
// given // given
List<String> parts = asList("bogus", "label1", "arg1"); List<String> parts = asList("bogus", "label1", "arg1");
CommandSender sender = mock(CommandSender.class); CommandSender sender = mock(CommandSender.class);
given(permissionsManager.hasPermission(eq(sender), any(PermissionNode.class))).willReturn(true);
// when // when
FoundCommandResult result = mapper.mapPartsToCommand(sender, parts); FoundCommandResult result = mapper.mapPartsToCommand(sender, parts);
// then // then
verifyNoInteractions(permissionsManager);
assertThat(result.getResultStatus(), equalTo(FoundResultStatus.MISSING_BASE_COMMAND)); assertThat(result.getResultStatus(), equalTo(FoundResultStatus.MISSING_BASE_COMMAND));
assertThat(result.getCommandDescription(), nullValue()); assertThat(result.getCommandDescription(), nullValue());
} }
@ -240,12 +240,12 @@ class CommandMapperTest {
// given // given
List<String> parts = asList("unregistER", "player1", "wrongArg"); List<String> parts = asList("unregistER", "player1", "wrongArg");
CommandSender sender = mock(CommandSender.class); CommandSender sender = mock(CommandSender.class);
given(permissionsManager.hasPermission(eq(sender), any(PermissionNode.class))).willReturn(true);
// when // when
FoundCommandResult result = mapper.mapPartsToCommand(sender, parts); FoundCommandResult result = mapper.mapPartsToCommand(sender, parts);
// then // then
verifyNoInteractions(permissionsManager);
assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS)); assertThat(result.getResultStatus(), equalTo(FoundResultStatus.INCORRECT_ARGUMENTS));
assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "unregister"))); assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "unregister")));
assertThat(result.getDifference(), equalTo(0.0)); assertThat(result.getDifference(), equalTo(0.0));
@ -305,7 +305,6 @@ class CommandMapperTest {
assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "unregister"))); assertThat(result.getCommandDescription(), equalTo(getCommandWithLabel(commands, "unregister")));
} }
@SuppressWarnings("unchecked")
@Test @Test
void shouldReturnExecutableCommandClasses() { void shouldReturnExecutableCommandClasses() {
// given / when // given / when

View File

@ -1,25 +1,22 @@
package fr.xephi.authme.command.executable.email; package fr.xephi.authme.command.executable.email;
import ch.jalu.datasourcecolumns.data.DataSourceValueImpl; import ch.jalu.datasourcecolumns.data.DataSourceValueImpl;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.data.auth.PlayerCache;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.mail.EmailService; import fr.xephi.authme.mail.EmailService;
import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.message.MessageKey;
import fr.xephi.authme.security.PasswordSecurity;
import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.CommonService;
import fr.xephi.authme.service.PasswordRecoveryService; import fr.xephi.authme.service.PasswordRecoveryService;
import fr.xephi.authme.service.RecoveryCodeService; import fr.xephi.authme.service.RecoveryCodeService;
import fr.xephi.authme.settings.properties.SecuritySettings;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections; import java.util.Collections;
import java.util.Locale; import java.util.Locale;
@ -27,9 +24,9 @@ import java.util.Locale;
import static fr.xephi.authme.service.BukkitServiceTestHelper.setBukkitServiceToRunTaskAsynchronously; import static fr.xephi.authme.service.BukkitServiceTestHelper.setBukkitServiceToRunTaskAsynchronously;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalTo;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions;
@ -37,17 +34,14 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
/** /**
* Test for {@link RecoverEmailCommand}. * Test for {@link RecoverEmailCommand}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class RecoverEmailCommandTest { class RecoverEmailCommandTest {
private static final String DEFAULT_EMAIL = "your@email.com"; private static final String DEFAULT_EMAIL = "your@email.com";
@InjectDelayed @InjectMocks
private RecoverEmailCommand command; private RecoverEmailCommand command;
@Mock
private PasswordSecurity passwordSecurity;
@Mock @Mock
private CommonService commonService; private CommonService commonService;
@ -74,11 +68,6 @@ class RecoverEmailCommandTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting
void initSettings() {
given(commonService.getProperty(SecuritySettings.EMAIL_RECOVERY_COOLDOWN_SECONDS)).willReturn(40);
}
@Test @Test
void shouldHandleMissingMailProperties() { void shouldHandleMissingMailProperties() {
// given // given
@ -90,7 +79,7 @@ class RecoverEmailCommandTest {
// then // then
verify(commonService).send(sender, MessageKey.INCOMPLETE_EMAIL_SETTINGS); verify(commonService).send(sender, MessageKey.INCOMPLETE_EMAIL_SETTINGS);
verifyNoInteractions(dataSource, passwordSecurity); verifyNoInteractions(dataSource);
} }
@Test @Test
@ -178,22 +167,17 @@ class RecoverEmailCommandTest {
Player sender = mock(Player.class); Player sender = mock(Player.class);
given(sender.getName()).willReturn(name); given(sender.getName()).willReturn(name);
given(emailService.hasAllInformation()).willReturn(true); given(emailService.hasAllInformation()).willReturn(true);
given(emailService.sendRecoveryCode(anyString(), anyString(), anyString())).willReturn(true);
given(playerCache.isAuthenticated(name)).willReturn(false); given(playerCache.isAuthenticated(name)).willReturn(false);
String email = "v@example.com"; String email = "v@example.com";
given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of(email)); given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of(email));
String code = "a94f37";
given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(true); given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(true);
given(recoveryCodeService.generateCode(name)).willReturn(code);
setBukkitServiceToRunTaskAsynchronously(bukkitService); setBukkitServiceToRunTaskAsynchronously(bukkitService);
// when // when
command.executeCommand(sender, Collections.singletonList(email.toUpperCase(Locale.ROOT))); command.executeCommand(sender, Collections.singletonList(email.toUpperCase(Locale.ROOT)));
// then // then
verify(emailService).hasAllInformation(); verify(recoveryService, only()).createAndSendRecoveryCode(sender, email);
verify(dataSource).getEmail(name);
verify(recoveryService).createAndSendRecoveryCode(sender, email);
} }
@Test @Test
@ -203,7 +187,6 @@ class RecoverEmailCommandTest {
Player sender = mock(Player.class); Player sender = mock(Player.class);
given(sender.getName()).willReturn(name); given(sender.getName()).willReturn(name);
given(emailService.hasAllInformation()).willReturn(true); given(emailService.hasAllInformation()).willReturn(true);
given(emailService.sendPasswordMail(anyString(), anyString(), anyString())).willReturn(true);
given(playerCache.isAuthenticated(name)).willReturn(false); given(playerCache.isAuthenticated(name)).willReturn(false);
String email = "vulture@example.com"; String email = "vulture@example.com";
given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of(email)); given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of(email));
@ -214,9 +197,7 @@ class RecoverEmailCommandTest {
command.executeCommand(sender, Collections.singletonList(email)); command.executeCommand(sender, Collections.singletonList(email));
// then // then
verify(emailService).hasAllInformation(); verify(recoveryService, only()).generateAndSendNewPassword(sender, email);
verify(dataSource).getEmail(name);
verify(recoveryService).generateAndSendNewPassword(sender, email);
} }
@Test @Test

View File

@ -5,7 +5,6 @@ import fr.xephi.authme.ReflectionTestUtils;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.command.CommandDescription; import fr.xephi.authme.command.CommandDescription;
import fr.xephi.authme.command.TestCommandsUtil; import fr.xephi.authme.command.TestCommandsUtil;
import fr.xephi.authme.message.AbstractMessageFileHandler;
import fr.xephi.authme.message.HelpMessagesFileHandler; import fr.xephi.authme.message.HelpMessagesFileHandler;
import fr.xephi.authme.message.MessagePathHelper; import fr.xephi.authme.message.MessagePathHelper;
import fr.xephi.authme.permission.DefaultPermission; import fr.xephi.authme.permission.DefaultPermission;
@ -148,9 +147,7 @@ class HelpMessagesServiceTest {
Settings settings = mock(Settings.class); Settings settings = mock(Settings.class);
given(settings.getProperty(PluginSettings.MESSAGES_LANGUAGE)).willReturn("test"); given(settings.getProperty(PluginSettings.MESSAGES_LANGUAGE)).willReturn("test");
HelpMessagesFileHandler messagesFileHandler = ReflectionTestUtils.newInstance(HelpMessagesFileHandler.class); HelpMessagesFileHandler messagesFileHandler = new HelpMessagesFileHandler(dataFolder, settings);
ReflectionTestUtils.setField(AbstractMessageFileHandler.class, messagesFileHandler, "settings", settings);
ReflectionTestUtils.setField(AbstractMessageFileHandler.class, messagesFileHandler, "dataFolder", dataFolder);
ReflectionTestUtils.invokePostConstructMethods(messagesFileHandler); ReflectionTestUtils.invokePostConstructMethods(messagesFileHandler);
return messagesFileHandler; return messagesFileHandler;
} }

View File

@ -1,8 +1,5 @@
package fr.xephi.authme.command.help; package fr.xephi.authme.command.help;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.command.CommandDescription; import fr.xephi.authme.command.CommandDescription;
import fr.xephi.authme.command.FoundCommandResult; import fr.xephi.authme.command.FoundCommandResult;
import fr.xephi.authme.command.FoundResultStatus; import fr.xephi.authme.command.FoundResultStatus;
@ -13,11 +10,13 @@ import fr.xephi.authme.permission.PermissionsManager;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.internal.stubbing.answers.ReturnsArgumentAt; import org.mockito.internal.stubbing.answers.ReturnsArgumentAt;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@ -44,6 +43,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@ -51,12 +51,11 @@ import static org.mockito.Mockito.verify;
/** /**
* Test for {@link HelpProvider}. * Test for {@link HelpProvider}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class HelpProviderTest { class HelpProviderTest {
private static Collection<CommandDescription> commands; private static Collection<CommandDescription> commands;
@InjectDelayed
private HelpProvider helpProvider; private HelpProvider helpProvider;
@Mock @Mock
private PermissionsManager permissionsManager; private PermissionsManager permissionsManager;
@ -70,9 +69,10 @@ class HelpProviderTest {
commands = TestCommandsUtil.generateCommands(); commands = TestCommandsUtil.generateCommands();
} }
@BeforeInjecting @BeforeEach
void setInitialSettings() { void initializeHelpProvider() {
setDefaultHelpMessages(helpMessagesService); setDefaultHelpMessages(helpMessagesService);
helpProvider = new HelpProvider(permissionsManager, helpMessagesService);
} }
@Test @Test
@ -444,22 +444,22 @@ class HelpProviderTest {
} }
private static void setDefaultHelpMessages(HelpMessagesService helpMessagesService) { private static void setDefaultHelpMessages(HelpMessagesService helpMessagesService) {
given(helpMessagesService.buildLocalizedDescription(any(CommandDescription.class))) lenient().when(helpMessagesService.buildLocalizedDescription(any(CommandDescription.class)))
.willAnswer(new ReturnsArgumentAt(0)); .thenAnswer(new ReturnsArgumentAt(0));
for (HelpMessage key : HelpMessage.values()) { for (HelpMessage key : HelpMessage.values()) {
String text = key.name().replace("_", " ").toLowerCase(Locale.ROOT); String text = key.name().replace("_", " ").toLowerCase(Locale.ROOT);
given(helpMessagesService.getMessage(key)) lenient().when(helpMessagesService.getMessage(key))
.willReturn(text.substring(0, 1).toUpperCase(Locale.ROOT) + text.substring(1)); .thenReturn(text.substring(0, 1).toUpperCase(Locale.ROOT) + text.substring(1));
} }
for (DefaultPermission permission : DefaultPermission.values()) { for (DefaultPermission permission : DefaultPermission.values()) {
String text = permission.name().replace("_", " ").toLowerCase(Locale.ROOT); String text = permission.name().replace("_", " ").toLowerCase(Locale.ROOT);
given(helpMessagesService.getMessage(permission)) lenient().when(helpMessagesService.getMessage(permission))
.willReturn(text.substring(0, 1).toUpperCase(Locale.ROOT) + text.substring(1)); .thenReturn(text.substring(0, 1).toUpperCase(Locale.ROOT) + text.substring(1));
} }
for (HelpSection section : HelpSection.values()) { for (HelpSection section : HelpSection.values()) {
String text = section.name().replace("_", " ").toLowerCase(Locale.ROOT); String text = section.name().replace("_", " ").toLowerCase(Locale.ROOT);
given(helpMessagesService.getMessage(section)) lenient().when(helpMessagesService.getMessage(section))
.willReturn(text.substring(0, 1).toUpperCase(Locale.ROOT) + text.substring(1)); .thenReturn(text.substring(0, 1).toUpperCase(Locale.ROOT) + text.substring(1));
} }
} }

View File

@ -1,7 +1,5 @@
package fr.xephi.authme.data.limbo; package fr.xephi.authme.data.limbo;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.ReflectionTestUtils; import fr.xephi.authme.ReflectionTestUtils;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.limbo.persistence.LimboPersistence; import fr.xephi.authme.data.limbo.persistence.LimboPersistence;
@ -16,10 +14,12 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collection; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
@ -31,6 +31,7 @@ import static org.hamcrest.Matchers.sameInstance;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.only; import static org.mockito.Mockito.only;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@ -39,13 +40,13 @@ import static org.mockito.Mockito.verifyNoInteractions;
/** /**
* Test for {@link LimboService}, and {@link LimboServiceHelper}. * Test for {@link LimboService}, and {@link LimboServiceHelper}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class LimboServiceTest { class LimboServiceTest {
@InjectDelayed @InjectMocks
private LimboService limboService; private LimboService limboService;
@InjectDelayed @InjectMocks
private LimboServiceHelper limboServiceHelper; private LimboServiceHelper limboServiceHelper;
@Mock @Mock
@ -73,7 +74,7 @@ class LimboServiceTest {
@BeforeEach @BeforeEach
void mockSettings() { void mockSettings() {
given(settings.getProperty(RestrictionSettings.ALLOW_UNAUTHED_MOVEMENT)).willReturn(false); ReflectionTestUtils.setField(limboService, "helper", limboServiceHelper);
} }
@Test @Test
@ -85,6 +86,7 @@ class LimboServiceTest {
given(permissionsManager.hasGroupSupport()).willReturn(true); given(permissionsManager.hasGroupSupport()).willReturn(true);
given(permissionsManager.getGroups(player)).willReturn(Collections.singletonList(new UserGroup("permgrwp"))); given(permissionsManager.getGroups(player)).willReturn(Collections.singletonList(new UserGroup("permgrwp")));
given(settings.getProperty(LimboSettings.RESTORE_ALLOW_FLIGHT)).willReturn(AllowFlightRestoreType.ENABLE); given(settings.getProperty(LimboSettings.RESTORE_ALLOW_FLIGHT)).willReturn(AllowFlightRestoreType.ENABLE);
given(settings.getProperty(RestrictionSettings.ALLOW_UNAUTHED_MOVEMENT)).willReturn(false);
// when // when
limboService.createLimboPlayer(player, true); limboService.createLimboPlayer(player, true);
@ -116,6 +118,7 @@ class LimboServiceTest {
given(spawnLoader.getPlayerLocationOrSpawn(player)).willReturn(playerLoc); given(spawnLoader.getPlayerLocationOrSpawn(player)).willReturn(playerLoc);
given(permissionsManager.hasGroupSupport()).willReturn(false); given(permissionsManager.hasGroupSupport()).willReturn(false);
given(settings.getProperty(LimboSettings.RESTORE_ALLOW_FLIGHT)).willReturn(AllowFlightRestoreType.RESTORE); given(settings.getProperty(LimboSettings.RESTORE_ALLOW_FLIGHT)).willReturn(AllowFlightRestoreType.RESTORE);
given(settings.getProperty(RestrictionSettings.ALLOW_UNAUTHED_MOVEMENT)).willReturn(false);
// when // when
limboService.createLimboPlayer(player, false); limboService.createLimboPlayer(player, false);
@ -146,6 +149,7 @@ class LimboServiceTest {
getLimboMap().put("carlos", existingLimbo); getLimboMap().put("carlos", existingLimbo);
Player player = newPlayer("Carlos"); Player player = newPlayer("Carlos");
given(settings.getProperty(LimboSettings.RESTORE_ALLOW_FLIGHT)).willReturn(AllowFlightRestoreType.ENABLE); given(settings.getProperty(LimboSettings.RESTORE_ALLOW_FLIGHT)).willReturn(AllowFlightRestoreType.ENABLE);
given(settings.getProperty(RestrictionSettings.ALLOW_UNAUTHED_MOVEMENT)).willReturn(false);
// when // when
limboService.createLimboPlayer(player, false); limboService.createLimboPlayer(player, false);
@ -161,8 +165,7 @@ class LimboServiceTest {
@Test @Test
void shouldRestoreData() { void shouldRestoreData() {
// given // given
LimboPlayer limbo = Mockito.spy(convertToLimboPlayer( LimboPlayer limbo = Mockito.spy(newLimboPlayer(null, true, true, 0.4f, 0.0f));
newPlayer("John", true, 0.4f, false, 0.0f), null, Collections.emptyList()));
getLimboMap().put("john", limbo); getLimboMap().put("john", limbo);
Player player = newPlayer("John", false, 0.2f, false, 0.7f); Player player = newPlayer("John", false, 0.2f, false, 0.7f);
@ -234,16 +237,16 @@ class LimboServiceTest {
private static Player newPlayer(String name, boolean isOp, float walkSpeed, boolean canFly, float flySpeed) { private static Player newPlayer(String name, boolean isOp, float walkSpeed, boolean canFly, float flySpeed) {
Player player = newPlayer(name); Player player = newPlayer(name);
given(player.isOp()).willReturn(isOp); lenient().when(player.isOp()).thenReturn(isOp);
given(player.getWalkSpeed()).willReturn(walkSpeed); lenient().when(player.getWalkSpeed()).thenReturn(walkSpeed);
given(player.getAllowFlight()).willReturn(canFly); lenient().when(player.getAllowFlight()).thenReturn(canFly);
given(player.getFlySpeed()).willReturn(flySpeed); lenient().when(player.getFlySpeed()).thenReturn(flySpeed);
return player; return player;
} }
private static LimboPlayer convertToLimboPlayer(Player player, Location location, Collection<UserGroup> groups) { private static LimboPlayer newLimboPlayer(Location location, boolean isOp,
return new LimboPlayer(location, player.isOp(), groups, player.getAllowFlight(), boolean allowFlight, float walkSpeed, float flySpeed, UserGroup... groups) {
player.getWalkSpeed(), player.getFlySpeed()); return new LimboPlayer(location, isOp, Arrays.asList(groups), allowFlight, walkSpeed, flySpeed);
} }
private Map<String, LimboPlayer> getLimboMap() { private Map<String, LimboPlayer> getLimboMap() {

View File

@ -1,13 +1,9 @@
package fr.xephi.authme.data.limbo.persistence; package fr.xephi.authme.data.limbo.persistence;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import com.google.common.io.Files; import com.google.common.io.Files;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.data.limbo.LimboPlayer;
import fr.xephi.authme.data.limbo.UserGroup; import fr.xephi.authme.data.limbo.UserGroup;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.LimboSettings; import fr.xephi.authme.settings.properties.LimboSettings;
@ -16,10 +12,12 @@ import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.hamcrest.Matcher; import org.hamcrest.Matcher;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.io.TempDir;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -37,12 +35,13 @@ import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.nullValue;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
/** /**
* Test for {@link DistributedFilesPersistenceHandler}. * Test for {@link DistributedFilesPersistenceHandler}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class DistributedFilesPersistenceHandlerTest { class DistributedFilesPersistenceHandlerTest {
/** Player is in seg32-10110 and should be migrated into seg16-f. */ /** Player is in seg32-10110 and should be migrated into seg16-f. */
@ -72,7 +71,6 @@ class DistributedFilesPersistenceHandlerTest {
private static final UUID UNKNOWN_UUID2 = fromString("84d1cc0b-8f12-d04a-e7ba-a067d05cdc39"); private static final UUID UNKNOWN_UUID2 = fromString("84d1cc0b-8f12-d04a-e7ba-a067d05cdc39");
@InjectDelayed
private DistributedFilesPersistenceHandler persistenceHandler; private DistributedFilesPersistenceHandler persistenceHandler;
@Mock @Mock
@ -80,7 +78,6 @@ class DistributedFilesPersistenceHandlerTest {
@Mock @Mock
private BukkitService bukkitService; private BukkitService bukkitService;
@TempDir @TempDir
@DataFolder
File dataFolder; File dataFolder;
private File playerDataFolder; private File playerDataFolder;
@ -89,7 +86,7 @@ class DistributedFilesPersistenceHandlerTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting @BeforeEach
void setUpClasses() throws IOException { void setUpClasses() throws IOException {
given(settings.getProperty(LimboSettings.DISTRIBUTION_SIZE)).willReturn(SegmentSize.SIXTEEN); given(settings.getProperty(LimboSettings.DISTRIBUTION_SIZE)).willReturn(SegmentSize.SIXTEEN);
playerDataFolder = new File(dataFolder, "playerdata"); playerDataFolder = new File(dataFolder, "playerdata");
@ -104,9 +101,11 @@ class DistributedFilesPersistenceHandlerTest {
given(bukkitService.getWorld(anyString())) given(bukkitService.getWorld(anyString()))
.willAnswer(invocation -> { .willAnswer(invocation -> {
World world = mock(World.class); World world = mock(World.class);
given(world.getName()).willReturn(invocation.getArgument(0)); lenient().when(world.getName()).thenReturn(invocation.getArgument(0));
return world; return world;
}); });
persistenceHandler = new DistributedFilesPersistenceHandler(dataFolder, bukkitService, settings);
} }
// Note ljacqu 20170314: These tests are a little slow to set up; therefore we sometimes // Note ljacqu 20170314: These tests are a little slow to set up; therefore we sometimes

View File

@ -1,21 +1,19 @@
package fr.xephi.authme.data.limbo.persistence; package fr.xephi.authme.data.limbo.persistence;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.data.limbo.LimboPlayer;
import fr.xephi.authme.data.limbo.UserGroup; import fr.xephi.authme.data.limbo.UserGroup;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.util.FileUtils; import fr.xephi.authme.util.FileUtils;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.io.TempDir;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -34,30 +32,30 @@ import static org.mockito.Mockito.mock;
/** /**
* Test for {@link IndividualFilesPersistenceHandler}. * Test for {@link IndividualFilesPersistenceHandler}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class IndividualFilesPersistenceHandlerTest { class IndividualFilesPersistenceHandlerTest {
private static final UUID SAMPLE_UUID = UUID.nameUUIDFromBytes("PersistenceTest".getBytes()); private static final UUID SAMPLE_UUID = UUID.nameUUIDFromBytes("PersistenceTest".getBytes());
private static final String SOURCE_FOLDER = TestHelper.PROJECT_ROOT + "data/backup/"; private static final String SOURCE_FOLDER = TestHelper.PROJECT_ROOT + "data/backup/";
@InjectDelayed
private IndividualFilesPersistenceHandler handler; private IndividualFilesPersistenceHandler handler;
@Mock @Mock
private BukkitService bukkitService; private BukkitService bukkitService;
@DataFolder
@TempDir @TempDir
File dataFolder; File dataFolder;
@BeforeInjecting @BeforeEach
void copyTestFiles() throws IOException { void copyTestFilesAndInitHandler() throws IOException {
File playerFolder = new File(dataFolder, FileUtils.makePath("playerdata", SAMPLE_UUID.toString())); File playerFolder = new File(dataFolder, FileUtils.makePath("playerdata", SAMPLE_UUID.toString()));
if (!playerFolder.mkdirs()) { if (!playerFolder.mkdirs()) {
throw new IllegalStateException("Cannot create '" + playerFolder.getAbsolutePath() + "'"); throw new IllegalStateException("Cannot create '" + playerFolder.getAbsolutePath() + "'");
} }
Files.copy(TestHelper.getJarPath(FileUtils.makePath(SOURCE_FOLDER, "sample-folder", "data.json")), Files.copy(TestHelper.getJarPath(FileUtils.makePath(SOURCE_FOLDER, "sample-folder", "data.json")),
new File(playerFolder, "data.json").toPath()); new File(playerFolder, "data.json").toPath());
handler = new IndividualFilesPersistenceHandler(dataFolder, bukkitService);
} }
@Test @Test

View File

@ -1,9 +1,6 @@
package fr.xephi.authme.data.limbo.persistence; package fr.xephi.authme.data.limbo.persistence;
import ch.jalu.injector.factory.Factory; import ch.jalu.injector.factory.Factory;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.ReflectionTestUtils; import fr.xephi.authme.ReflectionTestUtils;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.data.limbo.LimboPlayer;
@ -12,9 +9,11 @@ import fr.xephi.authme.settings.properties.LimboSettings;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.hamcrest.Matcher; import org.hamcrest.Matcher;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -37,10 +36,9 @@ import static org.mockito.hamcrest.MockitoHamcrest.argThat;
/** /**
* Test for {@link LimboPersistence}. * Test for {@link LimboPersistence}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class LimboPersistenceTest { class LimboPersistenceTest {
@InjectDelayed
private LimboPersistence limboPersistence; private LimboPersistence limboPersistence;
@Mock @Mock
@ -54,12 +52,13 @@ class LimboPersistenceTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting @BeforeEach
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
void setUpMocks() { void setUpMocksAndLimboPersistence() {
given(settings.getProperty(LimboSettings.LIMBO_PERSISTENCE_TYPE)).willReturn(LimboPersistenceType.DISABLED); given(settings.getProperty(LimboSettings.LIMBO_PERSISTENCE_TYPE)).willReturn(LimboPersistenceType.DISABLED);
given(handlerFactory.newInstance(any(Class.class))) given(handlerFactory.newInstance(any(Class.class)))
.willAnswer(invocation -> mock((Class<?>) invocation.getArgument(0))); .willAnswer(invocation -> mock((Class<?>) invocation.getArgument(0)));
limboPersistence = new LimboPersistence(settings, handlerFactory);
} }
@Test @Test

View File

@ -1,19 +1,18 @@
package fr.xephi.authme.datasource.converter; package fr.xephi.authme.datasource.converter;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.data.auth.PlayerAuth;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.ConverterSettings; import fr.xephi.authme.settings.properties.ConverterSettings;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
@ -32,10 +31,9 @@ import static org.mockito.hamcrest.MockitoHamcrest.argThat;
/** /**
* Test for {@link CrazyLoginConverter}. * Test for {@link CrazyLoginConverter}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class CrazyLoginConverterTest { class CrazyLoginConverterTest {
@InjectDelayed
private CrazyLoginConverter crazyLoginConverter; private CrazyLoginConverter crazyLoginConverter;
@Mock @Mock
@ -44,7 +42,6 @@ class CrazyLoginConverterTest {
@Mock @Mock
private Settings settings; private Settings settings;
@DataFolder
private File dataFolder = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "/datasource/converter/"); private File dataFolder = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "/datasource/converter/");
@BeforeAll @BeforeAll
@ -52,6 +49,11 @@ class CrazyLoginConverterTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeEach
void initConverter() {
crazyLoginConverter = new CrazyLoginConverter(dataFolder, dataSource, settings);
}
@Test @Test
void shouldImportUsers() { void shouldImportUsers() {
// given // given

View File

@ -1,21 +1,20 @@
package fr.xephi.authme.datasource.converter; package fr.xephi.authme.datasource.converter;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.data.auth.PlayerAuth;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.ConverterSettings; import fr.xephi.authme.settings.properties.ConverterSettings;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -39,23 +38,27 @@ import static org.mockito.Mockito.verify;
/** /**
* Test for {@link LoginSecurityConverter}. * Test for {@link LoginSecurityConverter}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class LoginSecurityConverterTest { class LoginSecurityConverterTest {
@InjectDelayed
private LoginSecurityConverter converter; private LoginSecurityConverter converter;
@Mock @Mock
private DataSource dataSource; private DataSource dataSource;
@Mock @Mock
private Settings settings; private Settings settings;
@DataFolder
private File dataFolder = new File("."); // not used but required for injection private File dataFolder = new File("."); // not used but required for injection
@BeforeInjecting @BeforeAll
void initMocks() { static void initLogger() {
TestHelper.setupLogger(); TestHelper.setupLogger();
}
@BeforeEach
void setUpConverter() {
given(settings.getProperty(ConverterSettings.LOGINSECURITY_USE_SQLITE)).willReturn(true); given(settings.getProperty(ConverterSettings.LOGINSECURITY_USE_SQLITE)).willReturn(true);
converter = new LoginSecurityConverter(dataFolder, dataSource, settings);
} }
@Test @Test

View File

@ -1,8 +1,5 @@
package fr.xephi.authme.listener; package fr.xephi.authme.listener;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.data.auth.PlayerCache;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.service.ValidationService; import fr.xephi.authme.service.ValidationService;
@ -13,9 +10,11 @@ import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent; import org.bukkit.event.entity.EntityEvent;
import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerEvent;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalTo;
@ -27,10 +26,9 @@ import static org.mockito.Mockito.verifyNoInteractions;
/** /**
* Test for {@link ListenerService}. * Test for {@link ListenerService}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class ListenerServiceTest { class ListenerServiceTest {
@InjectDelayed
private ListenerService listenerService; private ListenerService listenerService;
@Mock @Mock
@ -45,9 +43,10 @@ class ListenerServiceTest {
@Mock @Mock
private ValidationService validationService; private ValidationService validationService;
@BeforeInjecting @BeforeEach
void initializeDefaultSettings() { void setUpMocksAndService() {
given(settings.getProperty(RegistrationSettings.FORCE)).willReturn(true); given(settings.getProperty(RegistrationSettings.FORCE)).willReturn(true);
listenerService = new ListenerService(settings, dataSource, playerCache, validationService);
} }
@Test @Test

View File

@ -1,10 +1,6 @@
package fr.xephi.authme.mail; package fr.xephi.authme.mail;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.EmailSettings;
import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.PluginSettings;
@ -12,11 +8,13 @@ import fr.xephi.authme.settings.properties.SecuritySettings;
import org.apache.commons.mail.EmailException; import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail; import org.apache.commons.mail.HtmlEmail;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.io.TempDir;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
@ -35,17 +33,15 @@ import static org.mockito.Mockito.verify;
/** /**
* Test for {@link EmailService}. * Test for {@link EmailService}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class EmailServiceTest { class EmailServiceTest {
@InjectDelayed
private EmailService emailService; private EmailService emailService;
@Mock @Mock
private Settings settings; private Settings settings;
@Mock @Mock
private SendMailSsl sendMailSsl; private SendMailSsl sendMailSsl;
@DataFolder
@TempDir @TempDir
File dataFolder; File dataFolder;
@ -54,17 +50,17 @@ class EmailServiceTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting @BeforeEach
void initFields() { void initFieldsAndService() {
given(settings.getProperty(PluginSettings.SERVER_NAME)).willReturn("serverName"); emailService = new EmailService(dataFolder, settings, sendMailSsl);
given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn("mail@example.org");
given(settings.getProperty(EmailSettings.MAIL_PASSWORD)).willReturn("pass1234");
given(sendMailSsl.hasAllInformation()).willReturn(true);
} }
@Test @Test
void shouldHaveAllInformation() { void shouldHaveAllInformation() {
// given / when / then // given
given(sendMailSsl.hasAllInformation()).willReturn(true);
// when / then
assertThat(emailService.hasAllInformation(), equalTo(true)); assertThat(emailService.hasAllInformation(), equalTo(true));
} }
@ -74,7 +70,9 @@ class EmailServiceTest {
given(settings.getPasswordEmailMessage()) given(settings.getPasswordEmailMessage())
.willReturn("Hi <playername />, your new password for <servername /> is <generatedpass />"); .willReturn("Hi <playername />, your new password for <servername /> is <generatedpass />");
given(settings.getProperty(EmailSettings.PASSWORD_AS_IMAGE)).willReturn(false); given(settings.getProperty(EmailSettings.PASSWORD_AS_IMAGE)).willReturn(false);
given(settings.getProperty(PluginSettings.SERVER_NAME)).willReturn("serverName");
HtmlEmail email = mock(HtmlEmail.class); HtmlEmail email = mock(HtmlEmail.class);
given(sendMailSsl.hasAllInformation()).willReturn(true);
given(sendMailSsl.initializeMail(anyString())).willReturn(email); given(sendMailSsl.initializeMail(anyString())).willReturn(email);
given(sendMailSsl.sendEmail(anyString(), eq(email))).willReturn(true); given(sendMailSsl.sendEmail(anyString(), eq(email))).willReturn(true);
@ -93,6 +91,7 @@ class EmailServiceTest {
@Test @Test
void shouldHandleMailCreationError() throws EmailException { void shouldHandleMailCreationError() throws EmailException {
// given // given
given(sendMailSsl.hasAllInformation()).willReturn(true);
doThrow(EmailException.class).when(sendMailSsl).initializeMail(anyString()); doThrow(EmailException.class).when(sendMailSsl).initializeMail(anyString());
// when // when
@ -107,8 +106,10 @@ class EmailServiceTest {
@Test @Test
void shouldHandleMailSendingFailure() throws EmailException { void shouldHandleMailSendingFailure() throws EmailException {
// given // given
given(sendMailSsl.hasAllInformation()).willReturn(true);
given(settings.getPasswordEmailMessage()).willReturn("Hi <playername />, your new pass is <generatedpass />"); given(settings.getPasswordEmailMessage()).willReturn("Hi <playername />, your new pass is <generatedpass />");
given(settings.getProperty(EmailSettings.PASSWORD_AS_IMAGE)).willReturn(false); given(settings.getProperty(EmailSettings.PASSWORD_AS_IMAGE)).willReturn(false);
given(settings.getProperty(PluginSettings.SERVER_NAME)).willReturn("serverName");
HtmlEmail email = mock(HtmlEmail.class); HtmlEmail email = mock(HtmlEmail.class);
given(sendMailSsl.initializeMail(anyString())).willReturn(email); given(sendMailSsl.initializeMail(anyString())).willReturn(email);
given(sendMailSsl.sendEmail(anyString(), any(HtmlEmail.class))).willReturn(false); given(sendMailSsl.sendEmail(anyString(), any(HtmlEmail.class))).willReturn(false);
@ -128,6 +129,7 @@ class EmailServiceTest {
void shouldSendRecoveryCode() throws EmailException { void shouldSendRecoveryCode() throws EmailException {
// given // given
given(settings.getProperty(SecuritySettings.RECOVERY_CODE_HOURS_VALID)).willReturn(7); given(settings.getProperty(SecuritySettings.RECOVERY_CODE_HOURS_VALID)).willReturn(7);
given(settings.getProperty(PluginSettings.SERVER_NAME)).willReturn("serverName");
given(settings.getRecoveryCodeEmailMessage()) given(settings.getRecoveryCodeEmailMessage())
.willReturn("Hi <playername />, your code on <servername /> is <recoverycode /> (valid <hoursvalid /> hours)"); .willReturn("Hi <playername />, your code on <servername /> is <recoverycode /> (valid <hoursvalid /> hours)");
HtmlEmail email = mock(HtmlEmail.class); HtmlEmail email = mock(HtmlEmail.class);
@ -163,7 +165,8 @@ class EmailServiceTest {
void shouldHandleFailureToSendRecoveryCode() throws EmailException { void shouldHandleFailureToSendRecoveryCode() throws EmailException {
// given // given
given(settings.getProperty(SecuritySettings.RECOVERY_CODE_HOURS_VALID)).willReturn(7); given(settings.getProperty(SecuritySettings.RECOVERY_CODE_HOURS_VALID)).willReturn(7);
given(settings.getRecoveryCodeEmailMessage()).willReturn("Hi <playername />, your code is <recoverycode />"); given(settings.getProperty(PluginSettings.SERVER_NAME)).willReturn("Server? I barely know her!");
given(settings.getRecoveryCodeEmailMessage()).willReturn("Hi <playername />, your code is <recoverycode /> for <servername />");
EmailService sendMailSpy = spy(emailService); EmailService sendMailSpy = spy(emailService);
HtmlEmail email = mock(HtmlEmail.class); HtmlEmail email = mock(HtmlEmail.class);
given(sendMailSsl.initializeMail(anyString())).willReturn(email); given(sendMailSsl.initializeMail(anyString())).willReturn(email);
@ -177,7 +180,6 @@ class EmailServiceTest {
verify(sendMailSsl).initializeMail("user@example.com"); verify(sendMailSsl).initializeMail("user@example.com");
ArgumentCaptor<String> messageCaptor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> messageCaptor = ArgumentCaptor.forClass(String.class);
verify(sendMailSsl).sendEmail(messageCaptor.capture(), eq(email)); verify(sendMailSsl).sendEmail(messageCaptor.capture(), eq(email));
assertThat(messageCaptor.getValue(), equalTo("Hi John, your code is 1DEF77")); assertThat(messageCaptor.getValue(), equalTo("Hi John, your code is 1DEF77 for Server? I barely know her!"));
} }
} }

View File

@ -1,8 +1,5 @@
package fr.xephi.authme.mail; package fr.xephi.authme.mail;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.output.LogLevel; import fr.xephi.authme.output.LogLevel;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
@ -13,7 +10,9 @@ import org.apache.commons.mail.HtmlEmail;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Properties; import java.util.Properties;
@ -27,10 +26,10 @@ import static org.mockito.BDDMockito.given;
/** /**
* Test for {@link SendMailSsl}. * Test for {@link SendMailSsl}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class SendMailSslTest { class SendMailSslTest {
@InjectDelayed @InjectMocks
private SendMailSsl sendMailSsl; private SendMailSsl sendMailSsl;
@Mock @Mock
@ -41,16 +40,13 @@ class SendMailSslTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting
void initFields() {
given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn("mail@example.org");
given(settings.getProperty(EmailSettings.MAIL_PASSWORD)).willReturn("pass1234");
given(settings.getProperty(PluginSettings.LOG_LEVEL)).willReturn(LogLevel.INFO);
}
@Test @Test
void shouldHaveAllInformation() { void shouldHaveAllInformation() {
// given / when / then // given
given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn("mail@example.org");
given(settings.getProperty(EmailSettings.MAIL_PASSWORD)).willReturn("pass1234");
// when / then
assertThat(sendMailSsl.hasAllInformation(), equalTo(true)); assertThat(sendMailSsl.hasAllInformation(), equalTo(true));
} }
@ -62,8 +58,11 @@ class SendMailSslTest {
given(settings.getProperty(EmailSettings.SMTP_HOST)).willReturn(smtpHost); given(settings.getProperty(EmailSettings.SMTP_HOST)).willReturn(smtpHost);
String senderAccount = "sender@example.org"; String senderAccount = "sender@example.org";
given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn(senderAccount); given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn(senderAccount);
given(settings.getProperty(EmailSettings.MAIL_ADDRESS)).willReturn("");
given(settings.getProperty(EmailSettings.MAIL_PASSWORD)).willReturn("pass1234");
String senderName = "Server administration"; String senderName = "Server administration";
given(settings.getProperty(EmailSettings.MAIL_SENDER_NAME)).willReturn(senderName); given(settings.getProperty(EmailSettings.MAIL_SENDER_NAME)).willReturn(senderName);
given(settings.getProperty(EmailSettings.RECOVERY_MAIL_SUBJECT)).willReturn("Recover password");
given(settings.getProperty(PluginSettings.LOG_LEVEL)).willReturn(LogLevel.DEBUG); given(settings.getProperty(PluginSettings.LOG_LEVEL)).willReturn(LogLevel.DEBUG);
// when // when
@ -85,12 +84,15 @@ class SendMailSslTest {
given(settings.getProperty(EmailSettings.SMTP_PORT)).willReturn(465); given(settings.getProperty(EmailSettings.SMTP_PORT)).willReturn(465);
String smtpHost = "mail.example.com"; String smtpHost = "mail.example.com";
given(settings.getProperty(EmailSettings.SMTP_HOST)).willReturn(smtpHost); given(settings.getProperty(EmailSettings.SMTP_HOST)).willReturn(smtpHost);
String senderAccount = "exampleAccount"; String senderAccount = "actualsender@example.com";
given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn(senderAccount); given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn(senderAccount);
String senderAddress = "mail@example.com"; String senderAddress = "mail@example.com";
given(settings.getProperty(EmailSettings.MAIL_ADDRESS)).willReturn(senderAddress); given(settings.getProperty(EmailSettings.MAIL_ADDRESS)).willReturn(senderAddress);
given(settings.getProperty(EmailSettings.MAIL_PASSWORD)).willReturn("pass1234");
String senderName = "Server administration"; String senderName = "Server administration";
given(settings.getProperty(EmailSettings.MAIL_SENDER_NAME)).willReturn(senderName); given(settings.getProperty(EmailSettings.MAIL_SENDER_NAME)).willReturn(senderName);
given(settings.getProperty(EmailSettings.RECOVERY_MAIL_SUBJECT)).willReturn("Recover password");
given(settings.getProperty(PluginSettings.LOG_LEVEL)).willReturn(LogLevel.INFO);
// when // when
HtmlEmail email = sendMailSsl.initializeMail("recipient@example.com"); HtmlEmail email = sendMailSsl.initializeMail("recipient@example.com");
@ -114,6 +116,11 @@ class SendMailSslTest {
given(settings.getProperty(EmailSettings.SMTP_HOST)).willReturn(smtpHost); given(settings.getProperty(EmailSettings.SMTP_HOST)).willReturn(smtpHost);
String senderMail = "sender@example.org"; String senderMail = "sender@example.org";
given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn(senderMail); given(settings.getProperty(EmailSettings.MAIL_ACCOUNT)).willReturn(senderMail);
given(settings.getProperty(EmailSettings.MAIL_ADDRESS)).willReturn("");
given(settings.getProperty(EmailSettings.MAIL_PASSWORD)).willReturn("pass1234");
given(settings.getProperty(EmailSettings.MAIL_SENDER_NAME)).willReturn("Admin");
given(settings.getProperty(EmailSettings.RECOVERY_MAIL_SUBJECT)).willReturn("Ricóber chur pasword ése");
given(settings.getProperty(PluginSettings.LOG_LEVEL)).willReturn(LogLevel.INFO);
// when // when
HtmlEmail email = sendMailSsl.initializeMail("recipient@example.com"); HtmlEmail email = sendMailSsl.initializeMail("recipient@example.com");

View File

@ -305,10 +305,7 @@ class MessagesIntegrationTest {
Settings settings = mock(Settings.class); Settings settings = mock(Settings.class);
given(settings.getProperty(PluginSettings.MESSAGES_LANGUAGE)).willReturn("test"); given(settings.getProperty(PluginSettings.MESSAGES_LANGUAGE)).willReturn("test");
MessagesFileHandler messagesFileHandler = new MessagesFileHandler(); MessagesFileHandler messagesFileHandler = new MessagesFileHandler(dataFolder, settings, mock(MessageUpdater.class));
ReflectionTestUtils.setField(AbstractMessageFileHandler.class, messagesFileHandler, "settings", settings);
ReflectionTestUtils.setField(AbstractMessageFileHandler.class, messagesFileHandler, "dataFolder", dataFolder);
ReflectionTestUtils.setField(MessagesFileHandler.class, messagesFileHandler, "messageUpdater", mock(MessageUpdater.class));
ReflectionTestUtils.invokePostConstructMethods(messagesFileHandler); ReflectionTestUtils.invokePostConstructMethods(messagesFileHandler);
return messagesFileHandler; return messagesFileHandler;
} }

View File

@ -3,9 +3,6 @@ package fr.xephi.authme.security;
import ch.jalu.injector.Injector; import ch.jalu.injector.Injector;
import ch.jalu.injector.InjectorBuilder; import ch.jalu.injector.InjectorBuilder;
import ch.jalu.injector.factory.Factory; import ch.jalu.injector.factory.Factory;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.ReflectionTestUtils; import fr.xephi.authme.ReflectionTestUtils;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
@ -20,10 +17,13 @@ import fr.xephi.authme.settings.properties.SecuritySettings;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock; import org.mockito.invocation.InvocationOnMock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import java.util.Collections; import java.util.Collections;
@ -48,10 +48,10 @@ import static org.mockito.hamcrest.MockitoHamcrest.argThat;
/** /**
* Test for {@link PasswordSecurity}. * Test for {@link PasswordSecurity}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class PasswordSecurityTest { class PasswordSecurityTest {
@InjectDelayed @InjectMocks
private PasswordSecurity passwordSecurity; private PasswordSecurity passwordSecurity;
@Mock @Mock
@ -76,7 +76,7 @@ class PasswordSecurityTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting @BeforeEach
void setUpMocks() { void setUpMocks() {
caughtClassInEvent = null; caughtClassInEvent = null;
@ -111,6 +111,8 @@ class PasswordSecurityTest {
} }
return o; return o;
}); });
ReflectionTestUtils.invokePostConstructMethods(passwordSecurity);
} }
@Test @Test

View File

@ -1,8 +1,5 @@
package fr.xephi.authme.service; package fr.xephi.authme.service;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.message.MessageKey;
import fr.xephi.authme.message.Messages; import fr.xephi.authme.message.Messages;
import fr.xephi.authme.permission.AdminPermission; import fr.xephi.authme.permission.AdminPermission;
@ -11,10 +8,12 @@ import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.ProtectionSettings; import fr.xephi.authme.settings.properties.ProtectionSettings;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -35,10 +34,9 @@ import static org.mockito.Mockito.verifyNoInteractions;
/** /**
* Test for {@link AntiBotService}. * Test for {@link AntiBotService}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class AntiBotServiceTest { class AntiBotServiceTest {
@InjectDelayed
private AntiBotService antiBotService; private AntiBotService antiBotService;
@Mock @Mock
@ -50,14 +48,15 @@ class AntiBotServiceTest {
@Mock @Mock
private BukkitService bukkitService; private BukkitService bukkitService;
@BeforeInjecting @BeforeEach
void initSettings() { void initSettingsAndService() {
given(settings.getProperty(ProtectionSettings.ANTIBOT_DURATION)).willReturn(10); given(settings.getProperty(ProtectionSettings.ANTIBOT_DURATION)).willReturn(10);
given(settings.getProperty(ProtectionSettings.ANTIBOT_INTERVAL)).willReturn(5); given(settings.getProperty(ProtectionSettings.ANTIBOT_INTERVAL)).willReturn(5);
given(settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY)).willReturn(5); given(settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY)).willReturn(5);
given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(true); given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(true);
given(settings.getProperty(ProtectionSettings.ANTIBOT_DELAY)).willReturn(8); given(settings.getProperty(ProtectionSettings.ANTIBOT_DELAY)).willReturn(8);
setBukkitServiceToScheduleSyncDelayedTaskWithDelay(bukkitService); setBukkitServiceToScheduleSyncDelayedTaskWithDelay(bukkitService);
antiBotService = new AntiBotService(settings, messages, permissionsManager, bukkitService);
} }
@Test @Test

View File

@ -1,15 +1,12 @@
package fr.xephi.authme.service; package fr.xephi.authme.service;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import com.google.common.io.Files; import com.google.common.io.Files;
import fr.xephi.authme.ReflectionTestUtils;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.command.CommandInitializer; import fr.xephi.authme.command.CommandInitializer;
import fr.xephi.authme.command.help.HelpMessage; import fr.xephi.authme.command.help.HelpMessage;
import fr.xephi.authme.command.help.HelpMessagesService; import fr.xephi.authme.command.help.HelpMessagesService;
import fr.xephi.authme.command.help.HelpSection; import fr.xephi.authme.command.help.HelpSection;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.message.HelpMessagesFileHandler; import fr.xephi.authme.message.HelpMessagesFileHandler;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.PluginSettings;
@ -17,10 +14,12 @@ import org.bukkit.configuration.MemorySection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.io.TempDir;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -35,19 +34,11 @@ import static org.mockito.BDDMockito.given;
/** /**
* Integration test for {@link HelpTranslationGenerator}. * Integration test for {@link HelpTranslationGenerator}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class HelpTranslationGeneratorIntegrationTest { class HelpTranslationGeneratorIntegrationTest {
@InjectDelayed
private HelpTranslationGenerator helpTranslationGenerator; private HelpTranslationGenerator helpTranslationGenerator;
@InjectDelayed
private HelpMessagesService helpMessagesService;
@InjectDelayed
private HelpMessagesFileHandler helpMessagesFileHandler;
@InjectDelayed
private CommandInitializer commandInitializer;
@DataFolder
@TempDir @TempDir
File dataFolder; File dataFolder;
private File helpMessagesFile; private File helpMessagesFile;
@ -60,13 +51,19 @@ class HelpTranslationGeneratorIntegrationTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting @BeforeEach
void setUpClasses() throws IOException { void setUpClasses() throws IOException {
File messagesFolder = new File(dataFolder, "messages"); File messagesFolder = new File(dataFolder, "messages");
messagesFolder.mkdir(); messagesFolder.mkdir();
helpMessagesFile = new File(messagesFolder, "help_test.yml"); helpMessagesFile = new File(messagesFolder, "help_test.yml");
Files.copy(TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "message/help_test.yml"), helpMessagesFile); Files.copy(TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "message/help_test.yml"), helpMessagesFile);
given(settings.getProperty(PluginSettings.MESSAGES_LANGUAGE)).willReturn("test"); given(settings.getProperty(PluginSettings.MESSAGES_LANGUAGE)).willReturn("test");
CommandInitializer commandInitializer = new CommandInitializer();
HelpMessagesFileHandler helpMessagesFileHandler = new HelpMessagesFileHandler(dataFolder, settings);
HelpMessagesService helpMessagesService = new HelpMessagesService(helpMessagesFileHandler);
helpTranslationGenerator = new HelpTranslationGenerator(commandInitializer, helpMessagesService, settings, dataFolder);
ReflectionTestUtils.invokePostConstructMethods(helpMessagesFileHandler);
} }
@Test @Test

View File

@ -1,8 +1,6 @@
package fr.xephi.authme.service; package fr.xephi.authme.service;
import ch.jalu.injector.testing.BeforeInjecting; import fr.xephi.authme.ReflectionTestUtils;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.mail.EmailService; import fr.xephi.authme.mail.EmailService;
@ -11,9 +9,12 @@ import fr.xephi.authme.message.Messages;
import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.PasswordSecurity;
import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.settings.properties.SecuritySettings;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalTo;
@ -24,10 +25,10 @@ import static org.mockito.Mockito.verify;
/** /**
* Tests for {@link PasswordRecoveryService}. * Tests for {@link PasswordRecoveryService}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class PasswordRecoveryServiceTest { class PasswordRecoveryServiceTest {
@InjectDelayed @InjectMocks
private PasswordRecoveryService recoveryService; private PasswordRecoveryService recoveryService;
@Mock @Mock
@ -48,10 +49,11 @@ class PasswordRecoveryServiceTest {
@Mock @Mock
private Messages messages; private Messages messages;
@BeforeInjecting @BeforeEach
void initSettings() { void runPostConstructMethod() {
given(commonService.getProperty(SecuritySettings.EMAIL_RECOVERY_COOLDOWN_SECONDS)).willReturn(40); given(commonService.getProperty(SecuritySettings.EMAIL_RECOVERY_COOLDOWN_SECONDS)).willReturn(40);
given(commonService.getProperty(SecuritySettings.PASSWORD_CHANGE_TIMEOUT)).willReturn(2); given(commonService.getProperty(SecuritySettings.PASSWORD_CHANGE_TIMEOUT)).willReturn(2);
ReflectionTestUtils.invokePostConstructMethods(recoveryService);
} }
@Test @Test

View File

@ -1,15 +1,14 @@
package fr.xephi.authme.service; package fr.xephi.authme.service;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.ReflectionTestUtils; import fr.xephi.authme.ReflectionTestUtils;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.util.expiring.ExpiringMap; import fr.xephi.authme.util.expiring.ExpiringMap;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static fr.xephi.authme.AuthMeMatchers.stringWithLength; import static fr.xephi.authme.AuthMeMatchers.stringWithLength;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
@ -20,20 +19,21 @@ import static org.mockito.BDDMockito.given;
/** /**
* Test for {@link RecoveryCodeService}. * Test for {@link RecoveryCodeService}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class RecoveryCodeServiceTest { class RecoveryCodeServiceTest {
@InjectDelayed
private RecoveryCodeService recoveryCodeService; private RecoveryCodeService recoveryCodeService;
@Mock @Mock
private Settings settings; private Settings settings;
@BeforeInjecting @BeforeEach
void initSettings() { void initService() {
given(settings.getProperty(SecuritySettings.RECOVERY_CODE_HOURS_VALID)).willReturn(4); given(settings.getProperty(SecuritySettings.RECOVERY_CODE_HOURS_VALID)).willReturn(4);
given(settings.getProperty(SecuritySettings.RECOVERY_CODE_LENGTH)).willReturn(5); given(settings.getProperty(SecuritySettings.RECOVERY_CODE_LENGTH)).willReturn(5);
given(settings.getProperty(SecuritySettings.RECOVERY_CODE_MAX_TRIES)).willReturn(3); given(settings.getProperty(SecuritySettings.RECOVERY_CODE_MAX_TRIES)).willReturn(3);
recoveryCodeService = new RecoveryCodeService(settings);
} }
@Test @Test

View File

@ -1,8 +1,5 @@
package fr.xephi.authme.service; package fr.xephi.authme.service;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.data.auth.PlayerAuth;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
@ -11,9 +8,11 @@ import fr.xephi.authme.message.MessageKey;
import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.PluginSettings;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.function.Function; import java.util.function.Function;
@ -22,6 +21,7 @@ import static org.hamcrest.Matchers.equalTo;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.only; import static org.mockito.Mockito.only;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@ -31,10 +31,9 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
/** /**
* Test for {@link SessionService}. * Test for {@link SessionService}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class SessionServiceTest { class SessionServiceTest {
@InjectDelayed
private SessionService sessionService; private SessionService sessionService;
@Mock @Mock
@ -49,9 +48,10 @@ class SessionServiceTest {
TestHelper.setupLogger(); TestHelper.setupLogger();
} }
@BeforeInjecting @BeforeEach
void setUpEnabledProperty() { void createSessionService() {
given(commonService.getProperty(PluginSettings.SESSIONS_ENABLED)).willReturn(true); given(commonService.getProperty(PluginSettings.SESSIONS_ENABLED)).willReturn(true);
sessionService = new SessionService(commonService, bukkitService, dataSource);
} }
@Test @Test
@ -83,21 +83,20 @@ class SessionServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(commonService, only()).getProperty(PluginSettings.SESSIONS_ENABLED); verify(commonService, only()).getProperty(PluginSettings.SESSIONS_ENABLED);
verify(dataSource, only()).hasSession(name);
} }
@Test @Test
void shouldCheckLastLoginDate() { void shouldCheckLastLoginDate() {
// given // given
String name = "Bobby"; String name = "Bobby";
String ip = "127.3.12.15"; Player player = mock(Player.class);
Player player = mockPlayerWithNameAndIp(name, ip); given(player.getName()).willReturn(name);
given(commonService.getProperty(PluginSettings.SESSIONS_TIMEOUT)).willReturn(8); given(commonService.getProperty(PluginSettings.SESSIONS_TIMEOUT)).willReturn(8);
given(dataSource.hasSession(name)).willReturn(true); given(dataSource.hasSession(name)).willReturn(true);
PlayerAuth auth = PlayerAuth.builder() PlayerAuth auth = PlayerAuth.builder()
.name(name) .name(name)
.lastLogin(System.currentTimeMillis() - 10 * 60 * 1000) .lastLogin(System.currentTimeMillis() - 10 * 60 * 1000)
.lastIp(ip).build(); .lastIp("127.3.12.15").build();
given(dataSource.getAuth(name)).willReturn(auth); given(dataSource.getAuth(name)).willReturn(auth);
// when // when
@ -105,24 +104,22 @@ class SessionServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(commonService).getProperty(PluginSettings.SESSIONS_ENABLED);
verify(dataSource).hasSession(name);
verify(dataSource).setUnlogged(name); verify(dataSource).setUnlogged(name);
verify(dataSource).revokeSession(name); verify(dataSource).revokeSession(name);
verify(player, only()).getName();
} }
@Test @Test
void shouldRefuseSessionForAuthWithNullLastLoginTimestamp() { void shouldRefuseSessionForAuthWithNullLastLoginTimestamp() {
// given // given
String name = "Bobby"; String name = "Bobby";
String ip = "127.3.12.15"; Player player = mock(Player.class);
Player player = mockPlayerWithNameAndIp(name, ip); given(player.getName()).willReturn(name);
given(commonService.getProperty(PluginSettings.SESSIONS_TIMEOUT)).willReturn(8);
given(dataSource.hasSession(name)).willReturn(true); given(dataSource.hasSession(name)).willReturn(true);
PlayerAuth auth = PlayerAuth.builder() PlayerAuth auth = PlayerAuth.builder()
.name(name) .name(name)
.lastLogin(null) .lastLogin(null)
.lastIp(ip).build(); .lastIp("127.3.12.15").build();
given(dataSource.getAuth(name)).willReturn(auth); given(dataSource.getAuth(name)).willReturn(auth);
// when // when
@ -130,10 +127,9 @@ class SessionServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(commonService).getProperty(PluginSettings.SESSIONS_ENABLED);
verify(dataSource).hasSession(name);
verify(dataSource).setUnlogged(name); verify(dataSource).setUnlogged(name);
verify(dataSource).revokeSession(name); verify(dataSource).revokeSession(name);
verify(player, only()).getName();
} }
@Test @Test
@ -155,9 +151,7 @@ class SessionServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(commonService).getProperty(PluginSettings.SESSIONS_ENABLED);
verify(commonService).send(player, MessageKey.SESSION_EXPIRED); verify(commonService).send(player, MessageKey.SESSION_EXPIRED);
verify(dataSource).hasSession(name);
verify(dataSource).setUnlogged(name); verify(dataSource).setUnlogged(name);
verify(dataSource).revokeSession(name); verify(dataSource).revokeSession(name);
} }
@ -186,7 +180,6 @@ class SessionServiceTest {
verify(commonService).getProperty(PluginSettings.SESSIONS_ENABLED); verify(commonService).getProperty(PluginSettings.SESSIONS_ENABLED);
verify(commonService).getProperty(PluginSettings.SESSIONS_TIMEOUT); verify(commonService).getProperty(PluginSettings.SESSIONS_TIMEOUT);
verifyNoMoreInteractions(commonService); verifyNoMoreInteractions(commonService);
verify(dataSource).hasSession(name);
verify(dataSource).setUnlogged(name); verify(dataSource).setUnlogged(name);
verify(dataSource).revokeSession(name); verify(dataSource).revokeSession(name);
verify(event).isCancelled(); verify(event).isCancelled();
@ -196,7 +189,8 @@ class SessionServiceTest {
void shouldHandleNullPlayerAuth() { void shouldHandleNullPlayerAuth() {
// given // given
String name = "Bobby"; String name = "Bobby";
Player player = mockPlayerWithNameAndIp(name, "127.3.12.15"); Player player = mock(Player.class);
given(player.getName()).willReturn(name);
given(dataSource.hasSession(name)).willReturn(true); given(dataSource.hasSession(name)).willReturn(true);
given(dataSource.getAuth(name)).willReturn(null); given(dataSource.getAuth(name)).willReturn(null);
@ -205,11 +199,9 @@ class SessionServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(commonService).getProperty(PluginSettings.SESSIONS_ENABLED);
verify(dataSource).hasSession(name);
verify(dataSource).setUnlogged(name); verify(dataSource).setUnlogged(name);
verify(dataSource).revokeSession(name); verify(dataSource).revokeSession(name);
verify(dataSource).getAuth(name); verify(player, never()).getAddress();
} }
@Test @Test
@ -222,7 +214,8 @@ class SessionServiceTest {
PlayerAuth auth = PlayerAuth.builder() PlayerAuth auth = PlayerAuth.builder()
.name(name) .name(name)
.lastIp(null) .lastIp(null)
.lastLogin(System.currentTimeMillis()).build(); .lastLogin(System.currentTimeMillis() - 2)
.build();
given(dataSource.getAuth(name)).willReturn(auth); given(dataSource.getAuth(name)).willReturn(auth);
// when // when
@ -230,11 +223,8 @@ class SessionServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(commonService).getProperty(PluginSettings.SESSIONS_ENABLED);
verify(dataSource).hasSession(name);
verify(dataSource).setUnlogged(name); verify(dataSource).setUnlogged(name);
verify(dataSource).revokeSession(name); verify(dataSource).revokeSession(name);
verify(dataSource).getAuth(name);
} }
private static Player mockPlayerWithNameAndIp(String name, String ip) { private static Player mockPlayerWithNameAndIp(String name, String ip) {

View File

@ -1,8 +1,5 @@
package fr.xephi.authme.service; package fr.xephi.authme.service;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
@ -17,11 +14,14 @@ import fr.xephi.authme.settings.properties.RestrictionSettings;
import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.settings.properties.SecuritySettings;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.util.Collections; import java.util.Collections;
@ -36,16 +36,17 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.willReturn; import static org.mockito.BDDMockito.willReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoInteractions;
/** /**
* Test for {@link ValidationService}. * Test for {@link ValidationService}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class ValidationServiceTest { class ValidationServiceTest {
@InjectDelayed @InjectMocks
private ValidationService validationService; private ValidationService validationService;
@Mock @Mock
private Settings settings; private Settings settings;
@ -56,20 +57,16 @@ class ValidationServiceTest {
@Mock @Mock
private GeoIpService geoIpService; private GeoIpService geoIpService;
@BeforeInjecting @BeforeEach
void createService() { void callReload() {
given(settings.getProperty(RestrictionSettings.ALLOWED_PASSWORD_REGEX)).willReturn("[a-zA-Z]+"); given(settings.getProperty(RestrictionSettings.ALLOWED_PASSWORD_REGEX)).willReturn("[a-zA-Z]+");
given(settings.getProperty(SecuritySettings.MIN_PASSWORD_LENGTH)).willReturn(3);
given(settings.getProperty(SecuritySettings.MAX_PASSWORD_LENGTH)).willReturn(20);
given(settings.getProperty(SecuritySettings.UNSAFE_PASSWORDS)).willReturn(newHashSet("unsafe", "other-unsafe"));
given(settings.getProperty(EmailSettings.MAX_REG_PER_EMAIL)).willReturn(3);
given(settings.getProperty(RestrictionSettings.UNRESTRICTED_NAMES)).willReturn(newHashSet("name01", "npc"));
given(settings.getProperty(RestrictionSettings.ENABLE_RESTRICTED_USERS)).willReturn(false); given(settings.getProperty(RestrictionSettings.ENABLE_RESTRICTED_USERS)).willReturn(false);
validationService.reload();
} }
@Test @Test
void shouldRejectPasswordSameAsUsername() { void shouldRejectPasswordSameAsUsername() {
// given/when // given / when
ValidationResult error = validationService.validatePassword("bobby", "Bobby"); ValidationResult error = validationService.validatePassword("bobby", "Bobby");
// then // then
@ -78,7 +75,7 @@ class ValidationServiceTest {
@Test @Test
void shouldRejectPasswordNotMatchingPattern() { void shouldRejectPasswordNotMatchingPattern() {
// given/when // given / when
// service mock returns pattern a-zA-Z -> numbers should not be accepted // service mock returns pattern a-zA-Z -> numbers should not be accepted
ValidationResult error = validationService.validatePassword("invalid1234", "myPlayer"); ValidationResult error = validationService.validatePassword("invalid1234", "myPlayer");
@ -88,7 +85,10 @@ class ValidationServiceTest {
@Test @Test
void shouldRejectTooShortPassword() { void shouldRejectTooShortPassword() {
// given/when // given
given(settings.getProperty(SecuritySettings.MIN_PASSWORD_LENGTH)).willReturn(3);
// when
ValidationResult error = validationService.validatePassword("ab", "tester"); ValidationResult error = validationService.validatePassword("ab", "tester");
// then // then
@ -97,8 +97,12 @@ class ValidationServiceTest {
@Test @Test
void shouldRejectTooLongPassword() { void shouldRejectTooLongPassword() {
// given/when // given
ValidationResult error = validationService.validatePassword(Strings.repeat("a", 30), "player"); given(settings.getProperty(SecuritySettings.MIN_PASSWORD_LENGTH)).willReturn(3);
given(settings.getProperty(SecuritySettings.MAX_PASSWORD_LENGTH)).willReturn(20);
// when
ValidationResult error = validationService.validatePassword(Strings.repeat("a", 21), "player");
// then // then
assertErrorEquals(error, MessageKey.INVALID_PASSWORD_LENGTH); assertErrorEquals(error, MessageKey.INVALID_PASSWORD_LENGTH);
@ -106,7 +110,12 @@ class ValidationServiceTest {
@Test @Test
void shouldRejectUnsafePassword() { void shouldRejectUnsafePassword() {
// given/when // given
given(settings.getProperty(SecuritySettings.MIN_PASSWORD_LENGTH)).willReturn(3);
given(settings.getProperty(SecuritySettings.MAX_PASSWORD_LENGTH)).willReturn(20);
given(settings.getProperty(SecuritySettings.UNSAFE_PASSWORDS)).willReturn(newHashSet("unsafe", "other-unsafe"));
// when
ValidationResult error = validationService.validatePassword("unsafe", "playertest"); ValidationResult error = validationService.validatePassword("unsafe", "playertest");
// then // then
@ -115,7 +124,12 @@ class ValidationServiceTest {
@Test @Test
void shouldAcceptValidPassword() { void shouldAcceptValidPassword() {
// given/when // given
given(settings.getProperty(SecuritySettings.MIN_PASSWORD_LENGTH)).willReturn(3);
given(settings.getProperty(SecuritySettings.MAX_PASSWORD_LENGTH)).willReturn(20);
given(settings.getProperty(SecuritySettings.UNSAFE_PASSWORDS)).willReturn(newHashSet("unsafe", "other-unsafe"));
// when
ValidationResult error = validationService.validatePassword("safePass", "some_user"); ValidationResult error = validationService.validatePassword("safePass", "some_user");
// then // then
@ -140,7 +154,6 @@ class ValidationServiceTest {
// given // given
given(settings.getProperty(EmailSettings.DOMAIN_WHITELIST)) given(settings.getProperty(EmailSettings.DOMAIN_WHITELIST))
.willReturn(asList("domain.tld", "example.com")); .willReturn(asList("domain.tld", "example.com"));
given(settings.getProperty(EmailSettings.DOMAIN_BLACKLIST)).willReturn(Collections.emptyList());
// when // when
boolean result = validationService.validateEmail("TesT@Example.com"); boolean result = validationService.validateEmail("TesT@Example.com");
@ -154,7 +167,6 @@ class ValidationServiceTest {
// given // given
given(settings.getProperty(EmailSettings.DOMAIN_WHITELIST)) given(settings.getProperty(EmailSettings.DOMAIN_WHITELIST))
.willReturn(asList("domain.tld", "example.com")); .willReturn(asList("domain.tld", "example.com"));
given(settings.getProperty(EmailSettings.DOMAIN_BLACKLIST)).willReturn(Collections.emptyList());
// when // when
boolean result = validationService.validateEmail("email@other-domain.abc"); boolean result = validationService.validateEmail("email@other-domain.abc");
@ -193,19 +205,19 @@ class ValidationServiceTest {
@Test @Test
void shouldRejectInvalidEmail() { void shouldRejectInvalidEmail() {
// given/when/then // given / when / then
assertThat(validationService.validateEmail("invalidinput"), equalTo(false)); assertThat(validationService.validateEmail("invalidinput"), equalTo(false));
} }
@Test @Test
void shouldRejectInvalidEmailWithoutDomain() { void shouldRejectInvalidEmailWithoutDomain() {
// given/when/then // given / when / then
assertThat(validationService.validateEmail("invalidinput@"), equalTo(false)); assertThat(validationService.validateEmail("invalidinput@"), equalTo(false));
} }
@Test @Test
void shouldRejectDefaultEmail() { void shouldRejectDefaultEmail() {
// given/when/then // given / when / then
assertThat(validationService.validateEmail("your@email.com"), equalTo(false)); assertThat(validationService.validateEmail("your@email.com"), equalTo(false));
} }
@ -217,6 +229,7 @@ class ValidationServiceTest {
given(permissionsManager.hasPermission(sender, PlayerStatePermission.ALLOW_MULTIPLE_ACCOUNTS)) given(permissionsManager.hasPermission(sender, PlayerStatePermission.ALLOW_MULTIPLE_ACCOUNTS))
.willReturn(false); .willReturn(false);
given(dataSource.countAuthsByEmail(email)).willReturn(2); given(dataSource.countAuthsByEmail(email)).willReturn(2);
given(settings.getProperty(EmailSettings.MAX_REG_PER_EMAIL)).willReturn(3);
// when // when
boolean result = validationService.isEmailFreeForRegistration(email, sender); boolean result = validationService.isEmailFreeForRegistration(email, sender);
@ -233,6 +246,7 @@ class ValidationServiceTest {
given(permissionsManager.hasPermission(sender, PlayerStatePermission.ALLOW_MULTIPLE_ACCOUNTS)) given(permissionsManager.hasPermission(sender, PlayerStatePermission.ALLOW_MULTIPLE_ACCOUNTS))
.willReturn(false); .willReturn(false);
given(dataSource.countAuthsByEmail(email)).willReturn(5); given(dataSource.countAuthsByEmail(email)).willReturn(5);
given(settings.getProperty(EmailSettings.MAX_REG_PER_EMAIL)).willReturn(3);
// when // when
boolean result = validationService.isEmailFreeForRegistration(email, sender); boolean result = validationService.isEmailFreeForRegistration(email, sender);
@ -248,17 +262,21 @@ class ValidationServiceTest {
String email = "mail-address@example.com"; String email = "mail-address@example.com";
given(permissionsManager.hasPermission(sender, PlayerStatePermission.ALLOW_MULTIPLE_ACCOUNTS)) given(permissionsManager.hasPermission(sender, PlayerStatePermission.ALLOW_MULTIPLE_ACCOUNTS))
.willReturn(true); .willReturn(true);
given(dataSource.countAuthsByEmail(email)).willReturn(7);
// when // when
boolean result = validationService.isEmailFreeForRegistration(email, sender); boolean result = validationService.isEmailFreeForRegistration(email, sender);
// then // then
verifyNoInteractions(dataSource);
assertThat(result, equalTo(true)); assertThat(result, equalTo(true));
} }
@Test @Test
void shouldRecognizeUnrestrictedNames() { void shouldRecognizeUnrestrictedNames() {
// given
given(settings.getProperty(RestrictionSettings.UNRESTRICTED_NAMES)).willReturn(newHashSet("name01", "npc"));
// when / then
assertThat(validationService.isUnrestricted("npc"), equalTo(true)); assertThat(validationService.isUnrestricted("npc"), equalTo(true));
assertThat(validationService.isUnrestricted("someplayer"), equalTo(false)); assertThat(validationService.isUnrestricted("someplayer"), equalTo(false));
assertThat(validationService.isUnrestricted("NAME01"), equalTo(true)); assertThat(validationService.isUnrestricted("NAME01"), equalTo(true));
@ -288,7 +306,6 @@ class ValidationServiceTest {
void shouldAcceptCountryInWhitelist() { void shouldAcceptCountryInWhitelist() {
// given // given
given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(asList("ch", "it")); given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(asList("ch", "it"));
given(settings.getProperty(ProtectionSettings.COUNTRIES_BLACKLIST)).willReturn(Collections.emptyList());
String ip = "127.0.0.1"; String ip = "127.0.0.1";
given(geoIpService.getCountryCode(ip)).willReturn("CH"); given(geoIpService.getCountryCode(ip)).willReturn("CH");
@ -297,14 +314,12 @@ class ValidationServiceTest {
// then // then
assertThat(result, equalTo(true)); assertThat(result, equalTo(true));
verify(geoIpService).getCountryCode(ip);
} }
@Test @Test
void shouldRejectCountryMissingFromWhitelist() { void shouldRejectCountryMissingFromWhitelist() {
// given // given
given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(asList("ch", "it")); given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(asList("ch", "it"));
given(settings.getProperty(ProtectionSettings.COUNTRIES_BLACKLIST)).willReturn(Collections.emptyList());
String ip = "123.45.67.89"; String ip = "123.45.67.89";
given(geoIpService.getCountryCode(ip)).willReturn("BR"); given(geoIpService.getCountryCode(ip)).willReturn("BR");
@ -313,7 +328,6 @@ class ValidationServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(geoIpService).getCountryCode(ip);
} }
@Test @Test
@ -345,7 +359,6 @@ class ValidationServiceTest {
// then // then
assertThat(result, equalTo(false)); assertThat(result, equalTo(false));
verify(geoIpService).getCountryCode(ip);
} }
@Test @Test
@ -363,7 +376,8 @@ class ValidationServiceTest {
Player emanuel = mockPlayer("emanuel", "94.65.24.10"); Player emanuel = mockPlayer("emanuel", "94.65.24.10");
Player emanuel2 = mockPlayer("emanuel", "94.65.60.10"); Player emanuel2 = mockPlayer("emanuel", "94.65.60.10");
Player imYourIsp = mockPlayer("imyourisp", "65.65.65.65"); Player imYourIsp = mockPlayer("imyourisp", "65.65.65.65");
Player notRestricted = mockPlayer("notRestricted", "0.0.0.0"); Player notRestricted = mock(Player.class);
given(notRestricted.getName()).willReturn("notRestricted");
ValidationService validationServiceSpy = Mockito.spy(validationService); ValidationService validationServiceSpy = Mockito.spy(validationService);
willReturn("bogus.tld").given(validationServiceSpy).getHostName(any(InetSocketAddress.class)); willReturn("bogus.tld").given(validationServiceSpy).getHostName(any(InetSocketAddress.class));
@ -389,6 +403,7 @@ class ValidationServiceTest {
assertThat(isEmanuel2Admitted, equalTo(false)); assertThat(isEmanuel2Admitted, equalTo(false));
assertThat(isImYourIspAdmitted, equalTo(true)); assertThat(isImYourIspAdmitted, equalTo(true));
assertThat(isNotRestrictedAdmitted, equalTo(true)); assertThat(isNotRestrictedAdmitted, equalTo(true));
verify(notRestricted, only()).getName();
} }
@Test @Test

View File

@ -1,20 +1,18 @@
package fr.xephi.authme.settings; package fr.xephi.authme.settings;
import ch.jalu.injector.testing.BeforeInjecting;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import com.google.common.io.Files; import com.google.common.io.Files;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.service.PluginHookService; import fr.xephi.authme.service.PluginHookService;
import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.RestrictionSettings;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.io.TempDir;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -27,10 +25,9 @@ import static org.mockito.Mockito.mock;
/** /**
* Test for {@link SpawnLoader}. * Test for {@link SpawnLoader}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class SpawnLoaderTest { class SpawnLoaderTest {
@InjectDelayed
private SpawnLoader spawnLoader; private SpawnLoader spawnLoader;
@Mock @Mock
@ -39,11 +36,10 @@ class SpawnLoaderTest {
@Mock @Mock
private PluginHookService pluginHookService; private PluginHookService pluginHookService;
@DataFolder
@TempDir @TempDir
File testFolder; File testFolder;
@BeforeInjecting @BeforeEach
void setup() throws IOException { void setup() throws IOException {
// Copy test config into a new temporary folder // Copy test config into a new temporary folder
File source = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "settings/spawn-firstspawn.yml"); File source = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "settings/spawn-firstspawn.yml");
@ -53,6 +49,7 @@ class SpawnLoaderTest {
// Create a settings mock with default values // Create a settings mock with default values
given(settings.getProperty(RestrictionSettings.SPAWN_PRIORITY)) given(settings.getProperty(RestrictionSettings.SPAWN_PRIORITY))
.willReturn("authme, essentials, multiverse, default"); .willReturn("authme, essentials, multiverse, default");
spawnLoader = new SpawnLoader(testFolder, settings, pluginHookService);
} }
@Test @Test
@ -73,5 +70,4 @@ class SpawnLoaderTest {
assertThat(configuration.getDouble("spawn.z"), equalTo(-67.89)); assertThat(configuration.getDouble("spawn.z"), equalTo(-67.89));
assertThat(configuration.getString("spawn.world"), equalTo("new_world")); assertThat(configuration.getString("spawn.world"), equalTo("new_world"));
} }
} }

View File

@ -1,11 +1,8 @@
package fr.xephi.authme.settings; package fr.xephi.authme.settings;
import ch.jalu.injector.testing.BeforeInjecting; import fr.xephi.authme.ReflectionTestUtils;
import ch.jalu.injector.testing.DelayedInjectionExtension;
import ch.jalu.injector.testing.InjectDelayed;
import fr.xephi.authme.TestHelper; import fr.xephi.authme.TestHelper;
import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.data.auth.PlayerCache;
import fr.xephi.authme.initialization.DataFolder;
import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.CommonService;
import fr.xephi.authme.service.GeoIpService; import fr.xephi.authme.service.GeoIpService;
@ -14,10 +11,13 @@ import fr.xephi.authme.settings.properties.RegistrationSettings;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.io.TempDir;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -36,10 +36,10 @@ import static org.mockito.Mockito.verifyNoInteractions;
/** /**
* Test for {@link WelcomeMessageConfiguration}. * Test for {@link WelcomeMessageConfiguration}.
*/ */
@ExtendWith(DelayedInjectionExtension.class) @ExtendWith(MockitoExtension.class)
class WelcomeMessageConfigurationTest { class WelcomeMessageConfigurationTest {
@InjectDelayed @InjectMocks
private WelcomeMessageConfiguration welcomeMessageConfiguration; private WelcomeMessageConfiguration welcomeMessageConfiguration;
@Mock @Mock
private Server server; private Server server;
@ -51,17 +51,17 @@ class WelcomeMessageConfigurationTest {
private PlayerCache playerCache; private PlayerCache playerCache;
@Mock @Mock
private CommonService service; private CommonService service;
@DataFolder
@TempDir @TempDir
File testPluginFolder; File testPluginFolder;
private File welcomeFile; private File welcomeFile;
@BeforeInjecting @BeforeEach
void createPluginFolder() throws IOException { void createWelcomeFileAndSetPluginFolder() throws IOException {
welcomeFile = new File(testPluginFolder, "welcome.txt"); welcomeFile = new File(testPluginFolder, "welcome.txt");
welcomeFile.createNewFile(); welcomeFile.createNewFile();
given(service.getProperty(RegistrationSettings.USE_WELCOME_MESSAGE)).willReturn(true); given(service.getProperty(RegistrationSettings.USE_WELCOME_MESSAGE)).willReturn(true);
ReflectionTestUtils.setField(welcomeMessageConfiguration, "pluginFolder", testPluginFolder);
} }
@Test @Test