- Introduce /email code
- Add max tries for /email code - Introduce a PasswordRecoveryService
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
package fr.xephi.authme.service;
|
||||
|
||||
import ch.jalu.injector.testing.BeforeInjecting;
|
||||
import ch.jalu.injector.testing.InjectDelayed;
|
||||
import fr.xephi.authme.datasource.DataSource;
|
||||
import fr.xephi.authme.mail.EmailService;
|
||||
import fr.xephi.authme.message.Messages;
|
||||
import fr.xephi.authme.security.PasswordSecurity;
|
||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import static org.mockito.BDDMockito.given;
|
||||
|
||||
/**
|
||||
* Tests for {@link PasswordRecoveryService}.
|
||||
*/
|
||||
@Ignore
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class PasswordRecoveryServiceTest {
|
||||
|
||||
@InjectDelayed
|
||||
private PasswordRecoveryService recoveryService;
|
||||
|
||||
@Mock
|
||||
private CommonService commonService;
|
||||
|
||||
@Mock
|
||||
private RecoveryCodeService codeService;
|
||||
|
||||
@Mock
|
||||
private DataSource dataSource;
|
||||
|
||||
@Mock
|
||||
private EmailService emailService;
|
||||
|
||||
@Mock
|
||||
private PasswordSecurity passwordSecurity;
|
||||
|
||||
@Mock
|
||||
private RecoveryCodeService recoveryCodeService;
|
||||
|
||||
@Mock
|
||||
private Messages messages;
|
||||
|
||||
@BeforeInjecting
|
||||
public void initSettings() {
|
||||
given(commonService.getProperty(SecuritySettings.EMAIL_RECOVERY_COOLDOWN_SECONDS)).willReturn(40);
|
||||
}
|
||||
|
||||
//TODO: Write tests
|
||||
}
|
||||
@@ -33,6 +33,7 @@ public class RecoveryCodeServiceTest {
|
||||
public void initSettings() {
|
||||
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_MAX_TRIES)).willReturn(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -62,6 +63,35 @@ public class RecoveryCodeServiceTest {
|
||||
assertThat(code, stringWithLength(5));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void playerHasTriesLeft() {
|
||||
// given
|
||||
String player = "Dusty";
|
||||
recoveryCodeService.generateCode(player);
|
||||
|
||||
// when
|
||||
boolean result = recoveryCodeService.hasTriesLeft(player);
|
||||
|
||||
// then
|
||||
assertThat(result, equalTo(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void playerHasNoTriesLeft() {
|
||||
// given
|
||||
String player = "Dusty";
|
||||
recoveryCodeService.generateCode(player);
|
||||
recoveryCodeService.isCodeValid(player, "1st try");
|
||||
recoveryCodeService.isCodeValid(player, "2nd try");
|
||||
recoveryCodeService.isCodeValid(player, "3rd try");
|
||||
|
||||
// when
|
||||
boolean result = recoveryCodeService.hasTriesLeft(player);
|
||||
|
||||
// then
|
||||
assertThat(result, equalTo(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldRecognizeCorrectCode() {
|
||||
// given
|
||||
@@ -87,10 +117,15 @@ public class RecoveryCodeServiceTest {
|
||||
// then
|
||||
assertThat(recoveryCodeService.isCodeValid(player, code), equalTo(false));
|
||||
assertThat(getCodeMap().get(player), nullValue());
|
||||
assertThat(getTriesCounter().get(player), equalTo(0));
|
||||
}
|
||||
|
||||
|
||||
private ExpiringMap<String, String> getCodeMap() {
|
||||
return ReflectionTestUtils.getFieldValue(RecoveryCodeService.class, recoveryCodeService, "recoveryCodes");
|
||||
}
|
||||
|
||||
private ExpiringMap<String, String> getTriesCounter() {
|
||||
return ReflectionTestUtils.getFieldValue(RecoveryCodeService.class, recoveryCodeService, "playerTries");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user