Merge branch 'master' of https://github.com/AuthMe/AuthMeReloaded into 1141-optional-additional-2fa-auth
This commit is contained in:
@@ -5,7 +5,10 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import fr.xephi.authme.data.captcha.CaptchaCodeStorage;
|
||||
import fr.xephi.authme.datasource.AbstractSqlDataSource;
|
||||
import fr.xephi.authme.datasource.Columns;
|
||||
import fr.xephi.authme.datasource.columnshandler.DataSourceColumn;
|
||||
import fr.xephi.authme.datasource.columnshandler.PlayerAuthColumn;
|
||||
import fr.xephi.authme.datasource.mysqlextensions.MySqlExtension;
|
||||
import fr.xephi.authme.initialization.HasCleanup;
|
||||
import fr.xephi.authme.process.register.executors.RegistrationMethod;
|
||||
@@ -52,7 +55,7 @@ public class ClassesConsistencyTest {
|
||||
int.class, long.class, float.class, String.class, File.class, Enum.class, collectionsUnmodifiableList(),
|
||||
Charset.class,
|
||||
/* AuthMe */
|
||||
Property.class, RegistrationMethod.class,
|
||||
Property.class, RegistrationMethod.class, DataSourceColumn.class, PlayerAuthColumn.class,
|
||||
/* Guava */
|
||||
ImmutableMap.class, ImmutableList.class);
|
||||
|
||||
@@ -60,6 +63,7 @@ public class ClassesConsistencyTest {
|
||||
private static final Set<Class<?>> CLASSES_EXCLUDED_FROM_VISIBILITY_TEST = ImmutableSet.of(
|
||||
Whirlpool.class, // not our implementation, so we don't touch it
|
||||
MySqlExtension.class, // has immutable protected fields used by all children
|
||||
AbstractSqlDataSource.class, // protected members for inheritance
|
||||
Columns.class // uses non-static String constants, which is safe
|
||||
);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package fr.xephi.authme.command.executable.authme;
|
||||
|
||||
import ch.jalu.datasourcecolumns.data.DataSourceValueImpl;
|
||||
import fr.xephi.authme.datasource.DataSource;
|
||||
import fr.xephi.authme.datasource.DataSourceResult;
|
||||
import fr.xephi.authme.message.MessageKey;
|
||||
import fr.xephi.authme.service.CommonService;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -38,7 +38,7 @@ public class GetEmailCommandTest {
|
||||
public void shouldReportUnknownUser() {
|
||||
// given
|
||||
String user = "myTestUser";
|
||||
given(dataSource.getEmail(user)).willReturn(DataSourceResult.unknownPlayer());
|
||||
given(dataSource.getEmail(user)).willReturn(DataSourceValueImpl.unknownRow());
|
||||
CommandSender sender = mock(CommandSender.class);
|
||||
|
||||
// when
|
||||
@@ -53,7 +53,7 @@ public class GetEmailCommandTest {
|
||||
// given
|
||||
String user = "userToView";
|
||||
String email = "user.email@example.org";
|
||||
given(dataSource.getEmail(user)).willReturn(DataSourceResult.of(email));
|
||||
given(dataSource.getEmail(user)).willReturn(DataSourceValueImpl.of(email));
|
||||
CommandSender sender = mock(CommandSender.class);
|
||||
|
||||
// when
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package fr.xephi.authme.command.executable.email;
|
||||
|
||||
import ch.jalu.datasourcecolumns.data.DataSourceValueImpl;
|
||||
import ch.jalu.injector.testing.BeforeInjecting;
|
||||
import ch.jalu.injector.testing.DelayedInjectionRunner;
|
||||
import ch.jalu.injector.testing.InjectDelayed;
|
||||
import fr.xephi.authme.TestHelper;
|
||||
import fr.xephi.authme.data.auth.PlayerCache;
|
||||
import fr.xephi.authme.datasource.DataSource;
|
||||
import fr.xephi.authme.datasource.DataSourceResult;
|
||||
import fr.xephi.authme.mail.EmailService;
|
||||
import fr.xephi.authme.message.MessageKey;
|
||||
import fr.xephi.authme.security.PasswordSecurity;
|
||||
@@ -118,7 +118,7 @@ public class RecoverEmailCommandTest {
|
||||
given(sender.getName()).willReturn(name);
|
||||
given(emailService.hasAllInformation()).willReturn(true);
|
||||
given(playerCache.isAuthenticated(name)).willReturn(false);
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceResult.unknownPlayer());
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.unknownRow());
|
||||
|
||||
// when
|
||||
command.executeCommand(sender, Collections.singletonList("someone@example.com"));
|
||||
@@ -138,7 +138,7 @@ public class RecoverEmailCommandTest {
|
||||
given(sender.getName()).willReturn(name);
|
||||
given(emailService.hasAllInformation()).willReturn(true);
|
||||
given(playerCache.isAuthenticated(name)).willReturn(false);
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceResult.of(DEFAULT_EMAIL));
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of(DEFAULT_EMAIL));
|
||||
|
||||
// when
|
||||
command.executeCommand(sender, Collections.singletonList(DEFAULT_EMAIL));
|
||||
@@ -158,7 +158,7 @@ public class RecoverEmailCommandTest {
|
||||
given(sender.getName()).willReturn(name);
|
||||
given(emailService.hasAllInformation()).willReturn(true);
|
||||
given(playerCache.isAuthenticated(name)).willReturn(false);
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceResult.of("raptor@example.org"));
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of("raptor@example.org"));
|
||||
|
||||
// when
|
||||
command.executeCommand(sender, Collections.singletonList("wrong-email@example.com"));
|
||||
@@ -180,7 +180,7 @@ public class RecoverEmailCommandTest {
|
||||
given(emailService.sendRecoveryCode(anyString(), anyString(), anyString())).willReturn(true);
|
||||
given(playerCache.isAuthenticated(name)).willReturn(false);
|
||||
String email = "v@example.com";
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceResult.of(email));
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of(email));
|
||||
String code = "a94f37";
|
||||
given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(true);
|
||||
given(recoveryCodeService.generateCode(name)).willReturn(code);
|
||||
@@ -205,7 +205,7 @@ public class RecoverEmailCommandTest {
|
||||
given(emailService.sendPasswordMail(anyString(), anyString(), anyString())).willReturn(true);
|
||||
given(playerCache.isAuthenticated(name)).willReturn(false);
|
||||
String email = "vulture@example.com";
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceResult.of(email));
|
||||
given(dataSource.getEmail(name)).willReturn(DataSourceValueImpl.of(email));
|
||||
given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(false);
|
||||
setBukkitServiceToRunTaskAsynchronously(bukkitService);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package fr.xephi.authme.data;
|
||||
|
||||
import ch.jalu.datasourcecolumns.data.DataSourceValueImpl;
|
||||
import fr.xephi.authme.datasource.DataSource;
|
||||
import fr.xephi.authme.datasource.DataSourceResult;
|
||||
import fr.xephi.authme.mail.EmailService;
|
||||
import fr.xephi.authme.permission.PermissionsManager;
|
||||
import fr.xephi.authme.permission.PlayerPermission;
|
||||
@@ -51,7 +51,7 @@ public class VerificationCodeManagerTest {
|
||||
// given
|
||||
String name1 = "ILoveTests";
|
||||
Player player1 = mockPlayerWithName(name1);
|
||||
given(dataSource.getEmail(name1)).willReturn(DataSourceResult.of("ilovetests@test.com"));
|
||||
given(dataSource.getEmail(name1)).willReturn(DataSourceValueImpl.of("ilovetests@test.com"));
|
||||
given(permissionsManager.hasPermission(player1, PlayerPermission.VERIFICATION_CODE)).willReturn(true);
|
||||
String name2 = "StillLovingTests";
|
||||
Player player2 = mockPlayerWithName(name2);
|
||||
@@ -106,7 +106,7 @@ public class VerificationCodeManagerTest {
|
||||
// given
|
||||
String player = "ILoveTests";
|
||||
String email = "ilovetests@test.com";
|
||||
given(dataSource.getEmail(player)).willReturn(DataSourceResult.of(email));
|
||||
given(dataSource.getEmail(player)).willReturn(DataSourceValueImpl.of(email));
|
||||
VerificationCodeManager codeManager1 = createCodeManager();
|
||||
VerificationCodeManager codeManager2 = createCodeManager();
|
||||
codeManager2.codeExistOrGenerateNew(player);
|
||||
@@ -125,7 +125,7 @@ public class VerificationCodeManagerTest {
|
||||
// given
|
||||
String player = "ILoveTests";
|
||||
String email = "ilovetests@test.com";
|
||||
given(dataSource.getEmail(player)).willReturn(DataSourceResult.of(email));
|
||||
given(dataSource.getEmail(player)).willReturn(DataSourceValueImpl.of(email));
|
||||
VerificationCodeManager codeManager1 = createCodeManager();
|
||||
VerificationCodeManager codeManager2 = createCodeManager();
|
||||
codeManager2.codeExistOrGenerateNew(player);
|
||||
@@ -145,7 +145,7 @@ public class VerificationCodeManagerTest {
|
||||
String player = "ILoveTests";
|
||||
String code = "193458";
|
||||
String email = "ilovetests@test.com";
|
||||
given(dataSource.getEmail(player)).willReturn(DataSourceResult.of(email));
|
||||
given(dataSource.getEmail(player)).willReturn(DataSourceValueImpl.of(email));
|
||||
VerificationCodeManager codeManager1 = createCodeManager();
|
||||
VerificationCodeManager codeManager2 = createCodeManager();
|
||||
codeManager1.codeExistOrGenerateNew(player);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package fr.xephi.authme.datasource;
|
||||
|
||||
import ch.jalu.datasourcecolumns.data.DataSourceValue;
|
||||
import ch.jalu.datasourcecolumns.data.DataSourceValueImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import fr.xephi.authme.data.auth.PlayerAuth;
|
||||
import fr.xephi.authme.security.crypts.HashedPassword;
|
||||
@@ -61,7 +63,7 @@ public abstract class AbstractDataSourceIntegrationTest {
|
||||
// when
|
||||
HashedPassword bobbyPassword = dataSource.getPassword("bobby");
|
||||
HashedPassword invalidPassword = dataSource.getPassword("doesNotExist");
|
||||
HashedPassword userPassword = dataSource.getPassword("user");
|
||||
HashedPassword userPassword = dataSource.getPassword("User");
|
||||
|
||||
// then
|
||||
assertThat(bobbyPassword, equalToHash("$SHA$11aa0706173d7272$dbba966"));
|
||||
@@ -162,7 +164,8 @@ public abstract class AbstractDataSourceIntegrationTest {
|
||||
boolean response2 = dataSource.updatePassword("non-existent-name", new HashedPassword("sd"));
|
||||
|
||||
// then
|
||||
assertThat(response1 && response2, equalTo(true));
|
||||
assertThat(response1, equalTo(true));
|
||||
assertThat(response2, equalTo(false)); // no record modified
|
||||
assertThat(dataSource.getPassword("user"), equalToHash(newHash));
|
||||
}
|
||||
|
||||
@@ -177,7 +180,8 @@ public abstract class AbstractDataSourceIntegrationTest {
|
||||
boolean response2 = dataSource.updatePassword("non-existent-name", new HashedPassword("asdfasdf", "a1f34ec"));
|
||||
|
||||
// then
|
||||
assertThat(response1 && response2, equalTo(true));
|
||||
assertThat(response1, equalTo(true));
|
||||
assertThat(response2, equalTo(false)); // no record modified
|
||||
assertThat(dataSource.getPassword("user"), equalToHash("new_hash"));
|
||||
}
|
||||
|
||||
@@ -193,7 +197,8 @@ public abstract class AbstractDataSourceIntegrationTest {
|
||||
boolean response2 = dataSource.updatePassword(invalidAuth);
|
||||
|
||||
// then
|
||||
assertThat(response1 && response2, equalTo(true));
|
||||
assertThat(response1, equalTo(true));
|
||||
assertThat(response2, equalTo(false)); // no record modified
|
||||
assertThat(dataSource.getPassword("bobby"), equalToHash("tt", "cc"));
|
||||
}
|
||||
|
||||
@@ -275,7 +280,8 @@ public abstract class AbstractDataSourceIntegrationTest {
|
||||
boolean response2 = dataSource.updateEmail(invalidAuth);
|
||||
|
||||
// then
|
||||
assertThat(response1 && response2, equalTo(true));
|
||||
assertThat(response1, equalTo(true));
|
||||
assertThat(response2, equalTo(false)); // no record modified
|
||||
assertThat(dataSource.getAllAuths(), hasItem(hasAuthBasicData("user", "user", email, "34.56.78.90")));
|
||||
}
|
||||
|
||||
@@ -330,7 +336,8 @@ public abstract class AbstractDataSourceIntegrationTest {
|
||||
boolean response2 = dataSource.updateRealName("notExists", "NOTEXISTS");
|
||||
|
||||
// then
|
||||
assertThat(response1 && response2, equalTo(true));
|
||||
assertThat(response1, equalTo(true));
|
||||
assertThat(response2, equalTo(false)); // no record modified
|
||||
assertThat(dataSource.getAuth("bobby"), hasAuthBasicData("bobby", "BOBBY", null, "123.45.67.89"));
|
||||
}
|
||||
|
||||
@@ -417,12 +424,12 @@ public abstract class AbstractDataSourceIntegrationTest {
|
||||
DataSource dataSource = getDataSource();
|
||||
|
||||
// when
|
||||
DataSourceResult<String> email1 = dataSource.getEmail(user1);
|
||||
DataSourceResult<String> email2 = dataSource.getEmail(user2);
|
||||
DataSourceValue<String> email1 = dataSource.getEmail(user1);
|
||||
DataSourceValue<String> email2 = dataSource.getEmail(user2);
|
||||
|
||||
// then
|
||||
assertThat(email1.getValue(), equalTo("user@example.org"));
|
||||
assertThat(email2, is(DataSourceResult.unknownPlayer()));
|
||||
assertThat(email2, is(DataSourceValueImpl.unknownRow()));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -55,7 +55,9 @@ public class MySqlIntegrationTest extends AbstractDataSourceIntegrationTest {
|
||||
HikariConfig config = new HikariConfig();
|
||||
config.setDataSourceClassName("org.h2.jdbcx.JdbcDataSource");
|
||||
config.setConnectionTestQuery("VALUES 1");
|
||||
config.addDataSourceProperty("URL", "jdbc:h2:mem:test");
|
||||
// Note "ignorecase=true": H2 does not support `COLLATE NOCASE` for case-insensitive equals queries.
|
||||
// MySQL is by default case-insensitive so this is OK to make as an assumption.
|
||||
config.addDataSourceProperty("URL", "jdbc:h2:mem:test;ignorecase=true");
|
||||
config.addDataSourceProperty("user", "sa");
|
||||
config.addDataSourceProperty("password", "sa");
|
||||
HikariDataSource ds = new HikariDataSource(config);
|
||||
|
||||
Reference in New Issue
Block a user