package de.asideas.crowdsource.util.validation.email;
import de.asideas.crowdsource.domain.model.UserEntity;
import de.asideas.crowdsource.repository.UserRepository;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import javax.validation.ConstraintValidatorContext;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class NotActivatedValidatorTest {
private final static String EXISTING_EMAIL_NOT_ACTIVATED = "existing_email_not_activated";
private final static String EXISTING_EMAIL_ACTIVATED = "existing_email_activated";
private final static String NON_EXISTING_EMAIL = "non_existing_email";
@Mock
private UserRepository userRepository;
@InjectMocks
private NotActivatedValidator validator;
@Mock
private ConstraintValidatorContext validatorContext;
@Before
public void initMocks() {
// mock for existing + activated
final UserEntity existing_activated = mock(UserEntity.class);
when(existing_activated.isActivated()).thenReturn(true);
when(userRepository.findByEmail(EXISTING_EMAIL_ACTIVATED)).thenReturn(existing_activated);
// mock for existing + activated
final UserEntity existing_not_activated = mock(UserEntity.class);
when(existing_not_activated.isActivated()).thenReturn(false);
when(userRepository.findByEmail(EXISTING_EMAIL_NOT_ACTIVATED)).thenReturn(existing_not_activated);
// return null for NON_EXISTING_EMAIL
when(userRepository.findByEmail(NON_EXISTING_EMAIL)).thenReturn(null);
// avoid NPEs
when(validatorContext.buildConstraintViolationWithTemplate(anyString())).thenReturn(mock(ConstraintValidatorContext.ConstraintViolationBuilder.class));
}
@Test
public void testIsValidNonExistingEmail() throws Exception {
assertTrue(validator.isValid(NON_EXISTING_EMAIL, validatorContext));
}
@Test
public void testIsValidExistingEmailNotActivated() throws Exception {
assertTrue(validator.isValid(EXISTING_EMAIL_NOT_ACTIVATED, validatorContext));
}
@Test
public void testIsValidExistingEmailActivated() throws Exception {
assertFalse(validator.isValid(EXISTING_EMAIL_ACTIVATED, validatorContext));
}
}